How does a startup out-recruit Google?
garry.posterous.com
garry.posterous.com
"Maintaining old code" at a tech giant is not about keeping some ancient system working by periodically fixing a bug or adding a feature. It is about building scalable systems that are constantly adapting to new demands. It's about dealing with large-scale constraints and constantly finding and removing bottlenecks. I find it tremendously challenging intellectually.
Which isn't to say that the startup route is bad or not intellectually stimulating either. Writing new code is FUN. Trying out new stuff is FUN. Solving the problems that come with doing things differently is also fun and intellectually challenging.
I think there are advantages and disadvantages to both. I learned a lot in both kinds of environments and I think I would be a worse engineer for only having done one or the other. Some people might just be wired up to prefer one or the other, but my recommendation to people earlier in their career (particularly interns) would be to get experience in as many kinds of environments as possible.
I've never thought about it this way. I've never worked at a startup (or even given it much consideration) but this makes me want to change that.
I wouldn't say that's true in general. It's going to be a mix a both. But improving/fixing old code will often teach you a lot more than writing new code. You can both see clever things that other people have done and bad design decisions that are now causing you problems.