Comment by achenatx
5 years ago
One way we try to combat this is the way you get salary increases is mainly through promotions. Promotions are based on reasonably solid criteria and you can go up for promotion anytime you want (max every 3 months). Engineers senior to you determine whether or not you meet the criteria in a forum that is loosely based on a thesis defense. you answer questions and show your work and how it demonstrates the skills. People are either learning, executing, or teaching a skill.
People that dont get promoted get very few raises so are incentivized to leave.
The levels are essentially:
1) learning core skills under heavy supervision
2) ability to develop a feature with moderate supervision
3) ability to develop a product as it was envisioned, independently
4) ability to conceptualize a product, kick off a new product, and change direction in the middle if need be
5) ability conceptualize a portfolio of products and how they interface
6) ability to run a business unit of products
7) ability to start your own company (at this point we fund people to start their own company)
There are more detailed criteria around leadership, growing other people, contributing to recruiting, understanding, finance/accounting (P&L), following a solid methodology, contributing to the intellectual property of the company, improving the operations of the company, ability to deal with various level executives outside the company, exhibiting the values, being an expert in something etc
So who maintains the 'legacy code' aka the products your company actually makes money selling?
The ones who don't reach the next level
(This could explain why google has a hard time maintaining their old projects: Google on the resume is so so valuable that whoever doesn't rise within google leaves and gets a rise at another company.)
So the 'less good' developers provide the business value whilst the 'better' devs get promotions and more money?
I'd stay there for one year (less looks bad on a CV) get the 'promotions' and then move.
3 replies →
you can replace product with project and it would still apply.
There is some distinction between being able to kick off projects with existing products and kicking off a totally new product.
most people are working on kicking off updates to existing products.