How to pick projects to work on. What I wish I new starting out.
If you work a 9–5 job avoid the trap many folks fall into. We choose a project based on the wrong reasons and bad assumptions. Many engineers want to work on the most important systems in the company. They want the prestige that comes with being associated with it. But in many cases this path is not the best for your career. Systems that are mission critical are usually mature, because companies put time and effort into maturing their most important systems. Mature systems have several properties that result in a bad risk to reward ratio for your career. If the system goes down the company suffers and lots of folks will have opinions on what went wrong and how you should fix it. And if you cause multiple issues, the company will be less forgiving then a non cricial system. Hence the high Risk. It also is hard to introduce change to a system that everyone sees as very successful. Because if its not broken don’t fix it. So you won’t be as free to fail and experiment. In the case that you do a really good job optimizing the system and preventing down time you are seen to be meeting or in the best case slightly exceeding expectations. Hence lower reward.
Now there are other benefits of working on a mature system. You get some gratification by having pride or bragging about your super important role. If you have never worked on a high performing system, you can learn best practices and grow your skill set quicker than you otherwise would. So in the case you have never been exposed to a system that is crushing it, it could be a good learning opportunity. Also small optimizations can lead to large profits for the company, which you can claim your portion of the credit for. In some cases that can lead to visibility from senior leadership.
Lets compare the mature system with a system no one thinks will work. The risk reward ratio is way better. Everyone expects the team or system to fail, so if you do fail you are basically meeting expectations. No one is upset with you, the company most likely will not be negatively affected. Because the failure of the thing is already baked into the quarterly and annual plans (low risk). However if it succeeds it will shock and awe the company and you will be the one who gets the credit for doing the impossible (high reward).
The hard part about this, and why I believe most don’t do it, is because its delaying gratification and placing a bet on yourself until you get a win. Most likely you will have several failures and no one will be impressed with you. This can go on for quarters or longer. Even those bold enough to try risky projects can give up during this period. However once you do get a win you have 2–10x the gratification and career growth you would have had over working on a mature system.
This applies fairly equally to teams too. As the two are usually related, you can replace ‘system’ with ‘team’ to get that perspective in the above arguments. I will also caveat this with the fact that the above assumes a certain personality type. It assumes a person who gets stressed under lots of pressure and prefers creating something new versus optimizing something that exists. There are many folks who thrive under lots of pressure and love optimizing a critical system. So if you resonate with the former persona, join some failing projects, hop into a struggling team. Turn them around and watch your career soar.