Gretchen blogged about this a while back and I thought I'd share my experiences, since I've done this a few times in a variety of ways:
My seven year anniversary at Microsoft is this year, and in those 7 years I've had 5 jobs. That sounds like a lot, but it doesn't involve many interviews and overall it was only two teams, just different roles between those teams. Here's how it breaks down:
#1: Tester in Outlook (2.5y) for Outlook 98, 2000 and 2002.#2: PM on Outlook Web Access and a few other areas for Exchange 2000 SP1, SP2 and Exchange 2003.#3: PM on our customer team where I owned communities, worked on our JDP program (the program where customers run pre-release versions of the product in production and give us feedback) and helped out with a variety of customer-related issues.#4: Release manager for Exchange 12#5: I'm currently a PM in Exchange again, and I work on a variety of projects that cross the team.
From #1 to #2 I went the route that Gretchen describes - the job was available and published on the career center, I applied for it, I got a series of interviews with a people on that team. They were tough. I was more nervous than I'd been for my interviews for job #1. It was nerve-wracking but I was still fairly happy with my performance in the interviews. Fortunately, I got the job.
From #2 to #3, I decided I was looking for something different, it was a good time between milestones (we'd just finished a major coding milestone for Exchange 2003 and so it was a 'down time' for PMs) and I went to talk to the manager of the customer team because I wanted a job with more direct customer contact. He knew me well already, and he had me chat with a couple of people on his team informally (who also already knew me well) and they gave him the thumbs up, so I was offerred the job. This was pretty low stress.
For #3 to #4, the manager of the RM job approached me and asked me if I'd be interested in it. I spent a couple of weeks researching what that would mean for me at work and outside of work (i.e. 'work/life balance' as they call it) and decided it was a great move for me and I took it. In those couple of weeks, I also investigated a few other opportunities such as a PM on another team in Exchange, a product planning position in marketing, and a manager of a support team for Office PSS - never any official interviews but a variety of informationals. I decided that the RM job was the best combination of good for me and good for the team.
For #4 to #5, I blogged about that already. I loved the job, but it wasn't possible to do it part time and I decided that part time is what I needed at this stage in my life. It's worked out really well too... Most of what I work on is very interesting and I'm passionate about it, and there's a lot of variety, and it fits into my part time schedule. It's been an adjustment for the team to not get many responses from me on the days I don't work, but I don't think it's caused any serious problems.
So each of these transitions happened in a different way. Most were initiated by me, but not all. Some involved interviews, others didn't. These experiences have certainly taught me the importance of not burning bridges, and networking and relationship-building in general, which happens to be something I'd like to think I'm pretty good at. And of course, doing your best even for parts of the job that you don't like, because some day someone who works with you on that part of the job may be in a position to help you out. Of course, in each of these jobs I've also learned some very important lessons about working at Microsoft, as well as just working in general (I came to #1 straight out of college - literally. I was a junior at the time) If I ever leave Exchange (I can't imagine doing this any time soon though as I think I've got a great deal - I swear I'm not writing this just because my manager might read it :-), I suspect it will be to move to a job where someone I worked with in previously recommends me.