Career
- Getting experience smoothens the path. Software engineering is one job which does not require a degree (although having one does make things easier). Do whatever you need to to get experience at the start.
- Don’t switch jobs rapidly to move up the engineering ladder. The worst case scenario is when someone optimizes for success during interviews and then gets fired for incompetence. Instead, get promoted within the same organization. This works much better because no one gets promoted for no reason. Showing progression in the same organization is very good on a resume.
- Software engineers are partners with the rest of the business. That means they should have an equal say in features. Get a seat at the table, earn trust.
- Learning by the pain of error is great for growth. Waking up in the middle of the night to fix a production bug ensures you learn from that mistake and will never do it again.
- Places where you don’t own the product and your mistakes are not good places for growth. Likewise if engineers are treated as “code monkeys”
Value
Software engineers must add value.
Code that does not add value (e.g, never deployed) does not matter, no matter how good it is. Such code arguably creates negative value because someone else needs to expend effort to understand what that code does.
Code Cycle
- Make it work:
- This also means ensuring it adds value to someone (consumers, some other system, etc)
- Also means making it secure
- Make it fast and Beautiful. This can depend on the business type.
- Speed is a feature for B2C (e.g, having pages load faster increases conversion), but is less so for B2B
- Making it beautiful is about making it maintainable
Growth
Although growth has its downsides, it does fix many problems.
Growing the pie provides more time and resources for doing what you want. E.g, paying off tech debt
Adopt a growth mindset even as an individual contributor. Engineers can grow the pie even in large organizations. E.g, proposing a feature with knowledge of how the code works.
Some ideas on becoming a force multiplier:
- Time developing others is an investment
- Identify untapped potential in others
- Sharing what you know progressively so it sticks
- Create visibility for others
- Delegate challenging work that stretches people’s capabilities, provide clear context and constraints, but give them space to figure it out. Be available as a resource, but resist the urge to jump in at the first sign of difficulty.
- Create Psychological Safety Despite Critical Feedback
Soft Skills
Engineers work with people foremost, not code. Hence, soft skills are extremely important.
- Writing is a high leverage activity. It means only explaining how something works once, instead of having to repeat yourself. It spreads the word about what you or your organization is working on. That helps recruit people and build reputation. The document will exist even after you leave the organization. Writing is thinking.
- Present your ideas and talk about what you’re working on to other people.
- Set up team-wide initiatives that eventually scale up to being company-wide initiatives
- Empathy is a superpower.
10x Engineers
- Knowledge work allows experience to compound. Solving many problems in the past provides a library of experience to draw from.
- Their knowledge compounds, which makes the team more effective
- 10x engineers make good tradeoffs. They can take on tech debt that can be paid back later.
Promotions
Getting promoted has 2 steps:
- Add value
- Make noise
Adding value without talking about what you did means no one else will know about what you did.
Promotions are about future scope. What you’ve done in the past is an indicator of future performance, but it is about what you can do in the future, not what you did. Is there enough scope for growth of ownership for the promotion to take place?
Promotions are also about demonstrating you can perform at the next level before you’re promoted to it. That is an indicator about what you can du in the future.
Have conversations with your manager and tell them that you want to get promoted. That helps align the world in your favour, as promotions aren’t instant. They can help advocate or look out for opportunities on your behalf.
If your primary goals are about professional growth, even if you are not promoted, you will have gained valuable skills. These skills might be things like conveying engineering best practices, mentoring others, leading projects, sharing knowledge, and others. Focus on these skills over just the promotion. Promotions will a hit or miss, based on the process your company follows. But no one can take away your growth from you.
Also see Software Developer Promotions: Advice to Get to That Next Level
Startups vs Big Companies
Startups are about speed, wearing multiple hats / context switching, rapid iteration and MVPs to demonstrate value, taking on debt and fixing it later.
Bigger companies are about working well with others, doing things right and writing maintainable code.
Culture And Values
Find a company with values that align to yours. Ask about what the team values.
The culture and values of a team will matter more than that of the overall company. But the culture of the wider company also affects that of the team.
References: