Paul Graham on why You Weren't Meant to Have a Boss
The restrictiveness of big company jobs is particularly hard on programmers, because the essence of programming is to build new things. Sales people make much the same pitches every day; support people answer much the same questions; but once you've written a piece of code you don't need to write it again. So a programmer working as programmers are meant to is always making new things. And when you're part of an organization whose structure gives each person freedom in inverse proportion to the size of the tree, you're going to face resistance when you do something new.
This seems an inevitable consequence of bigness. It's true even in the smartest companies. I was talking recently to a founder who considered starting a startup right out of college, but went to work for Google instead because he thought he'd learn more there. He didn't learn as much as he expected. Programmers learn by doing, and most of the things he wanted to do, he couldn't—sometimes because the company wouldn't let him, but often because the company's code wouldn't let him. Between the drag of legacy code, the overhead of doing development in such a large organization, and the restrictions imposed by interfaces owned by other groups, he could only try a fraction of the things he would have liked to. He said he has learned much more in his own startup, despite the fact that he has to do all the company's errands as well as programming, because at least when he's programming he can do whatever he wants.
(Graham's argument is bolstered by an appeal to the habits of our prehistoric ancestors, as well as the social behaviour of various other species in the wild; this is a move that always strikes me as unlikely to strengthen an argument in need of support, but the piece strikes a chord.)
Jefferson argued that each generation should create its own laws. A Forefather malgré soi, he thought that no generation should be bound by laws drawn up by persons ignorant of the conditions to be faced. The drag of legacy code is downright unAmerican.