I agree with working for a medium company can be a very good trade off (I am presently at one and enjoy my job a great deal). However, there are always trade offs: in a small company you get a much bigger say in the product features and its architecture; medium companies might also have the same broken processes/tools/standards as an early an early stage standards but they would be much harder to dislodge.
It really comes down to the specific company/specific team/specific position. Main thing is not to have unrealistic expectations (changing the world, earning money/fame power) as well as have a clear picture of what you're looking for (technical challenge, experience for starting your own company, career advancement, etc...).
The other key thing I've learned is if joining an early stage start-up as an engineer, is to be sure that the sort of programming they do is what you want to do. Otherwise, you'd feel underutilized despite working start-up hours. For example, joining a start-up building web applications on the LAMP stack is a bad idea if you want to do systems programming; some start-ups begin with a simple technological stack but then invest a great deal in in-house systems ("build" being a better option for a start-up then "buy") as they encounter scalability/performance challenges (Facebook, Twitter, etc...) -- but the average early stage start-up would never encounter these challenges in the first place.
Comments
I agree with working for a medium company can be a very good trade off (I am presently at one and enjoy my job a great deal). However, there are always trade offs: in a small company you get a much bigger say in the product features and its architecture; medium companies might also have the same broken processes/tools/standards as an early an early stage standards but they would be much harder to dislodge.
It really comes down to the specific company/specific team/specific position. Main thing is not to have unrealistic expectations (changing the world, earning money/fame power) as well as have a clear picture of what you're looking for (technical challenge, experience for starting your own company, career advancement, etc...).
The other key thing I've learned is if joining an early stage start-up as an engineer, is to be sure that the sort of programming they do is what you want to do. Otherwise, you'd feel underutilized despite working start-up hours. For example, joining a start-up building web applications on the LAMP stack is a bad idea if you want to do systems programming; some start-ups begin with a simple technological stack but then invest a great deal in in-house systems ("build" being a better option for a start-up then "buy") as they encounter scalability/performance challenges (Facebook, Twitter, etc...) -- but the average early stage start-up would never encounter these challenges in the first place.