The Starter, the Architect, the Debugger and the Finisher
I believe that in order to get really good at any of these roles, you must do the other roles, deeply and often. For example:<p>The more time you spend Debugging shit, the less likely to you are to Architect something that produces shit.<p>The more time you spend fixing a million little things caused by poor early decisions, the better Starter you'll become.<p>The more fun you have conceiving and Starting projects, the more you'll realize how important Finishing is, so that you can get to new stuff.<p>And the more time you spend doing each of these roles, the  better you'll get at doing all of them at the same time, and understanding what conditions are needed to do that. (Hint: Lots of quicker smaller complementary projects that you can wrap your whole head around.)<p>[This whole discussion reminds me of the time I was a restaurant manager and got tired of the servers and cooks bitching at each other. I had them switch roles for one shift. Once they understood how what they did affected the other, everyone got a little better and the bitching stopped.]