Engineers at Google are not hired for specific projects. You're appraised as a good engineer, therefore we want you at Google. If you're not happy doing what you're doing, we'd like to find something you will be happy doing. But that doesn't mean you can just chop and change projects at will. It's considered pretty uncool to just quit a project abruptly without making the appropriate arrangements first. You've got to leave your work in a good state so that your teammates and successors can pick up where you left off.
I don't know anything about Steve's situation, but I would assume he did these things.
Maybe I'm an outlier, but I actually really enjoy cleaning up huge legacy codebases. Maybe there's also someone out there who likes building internal apps for performance reviews.
It seems like, at the very least, Google wouldn't keep you on such a project indefinitely if you didn't enjoy it.
On the other hand, there are plenty of companies out there that would randomly assign you to an unglamorous project -- and make it your permanent job, to boot. I've been at some of those companies. They roll the proverbial dice when you first join, and whatever the outcome, that's your fixed-in-stone role. Such companies care more about needs to be filled than about the people they're hiring.
Every company says that. When I was a consultant at IBM middle managers loved to tell the tale of the software dev who became a gardener at some IBM facility because supposedly that was what he yearned for. In practice though, you took the projects that were available or you might find yourself in a friendly performance monitoring program.
It seems like Google is a bigger offender than most tech companies. At least at IBM or Cisco they will tell you exactly where you are going to work before you accept the job offer. You will probably be stuck there or get moved around in the future and won't have much choice on what project you want to work on next. But at least you are told what you will be working on, unlike Google.
Most companies like to think that they don't have any "bad" projects; if they did, they would cancel them. And, they're afraid that employees will confuse "hard" projects with "bad" projects, and try to flee the hard projects, which are often business-critical.
Google is smart enough to realize that employees can often identify bad (and good) projects before the management does, and lets them vote with their feet.
My friend used to work for a large multi-national. In his company, each of the departments were like companies in itself. The formalities for quitting the job and changing departments were the same. So most of the time the only way to get off a bad project was to quit the company.
That's how I've usually heard of it being done at large companies. When a friend changed departments internally at a large petrochemicals company, he had to go through a whole application process: look on the internal HR system for a job opening, send in an application and resume, interview with the new group, etc.
At least at Amazon you are free to change projects after a year.
Any large tech company is probably so in need of coders that the idea of having to let one go because they were unhappy with what they were currently doing is repugnant.
Is this some sort of joke? This is usually a company wide policy at any large software company. Amazon is full of in-competent middle managers. Amazon as a company has no respect for software engineers and their quality of life. They are not in the same league as Google! No comparison. No self-respecting engineer lasts at Amazon for more than a few years. It is not a company where engineers go and build careers like Google, and heck even Microsoft. They have great top level leadership, and know how to suck blood and life out of their developers. That's about it.
I worked there my friend, and know a ton of people who did and still do. Ask any one of them. One of the missions of a VP/SVP back in the day was to make Amazon a place where engineers go and build careers, and not quit in 2/3 years. Go check out reviews of Amazon on Glassdoor. They celebrate frugality. Engineers don't even get free pop. It is not an engineer's paradise like Google. Can you even a run a show like this in the valley, and expect top engineers to work for you? Free food is almost the norm now here in the valley.
There is a massive shortage of programmers in the market. Hiring a programmer costs a big company somewhere between $30,000 and $50,000. If you leave, that's half your salary down the toile, and they don't have anyone to do your work while they look for another programmer. This is a huge loss for them and something to be avoided. So if they can just swap two people's projects... done! It's cheaper!
That seems fairly normal in the consulting world. Granted we are expected to create a transition plan and only given a few months to find a new assignment but it's not that uncommon.
How many companies let the employee choose to stop working on a project they are assigned to?