Letter to past self
'We do not learn from experience... we learn from reflecting on experience' ― John Dewey
It is very hard to give any suggestions regarding career development, especially for those who only start the journey. However, looking back I hope I have some things I would love to share with you. This post is mostly for folks who just starting their career in software development but I hope you can find it useful regardless of your age, skills, and industry. Also, be aware - because something worked for me doesn’t mean it should apply to you. We should always take into account that outcome bias is a huge part of our identity.
Stay hungry for failures
Failure is a good metric of progress and taking higher risks. If you don't fail often can be a bad symptom of bias for action or not thinking big enough.
Don't let anyone put you down
It doesn’t matter what level of expertise you have. You should not let people dismiss you or do any harm to you or your teammates. Become a guard for better culture in your environment and fight any toxic behavior whatever consequences it will have. Fear should not be a blocker. If you see that more experienced teammates make fun of less knowledgeable folk - put an end to it and escalate if needed. If that means you have to talk with C-level management go for it without any doubt. If that means you lose this job, even better for you. Toxicity is like any illness which will spread if you don't kill it at the start. In our life, we all have our monsters to fight to become a better self.
Balance quality with pragmatism
Software quality boils down to a matter of tradeoffs, and there's no universal rule of how to do things. As a software engineer, it's easy to become enamored with a particular technology or approach. Our curiosity actually can bring more harm than good sometimes. Learning new things can move us toward bias to use it whenever it is possible. Also, a resume-driven development approach is pretty popular today, when people overengineer things just to have fun or learn something new. This only shows your prejudice toward short-term goals even if you believe it can help you in the future. Simple is not easy. In the end, you will become more valuable based on how you can simplify your solutions.
In his magnum opus Eric Evans describes a case when a film editor was so focused on the precise execution of his craft that he omitted the whole picture and true goal - create a great TV show interview. If you haven't read the book yet here is a short following. The film editor decided not to use a shot because he saw someone walk in front of the camera. When actor and comedian John Cleese watched the scene again, and then again he could see nothing wrong. Finally, the editor stopped the film and pointed out a coat sleeve that was visible for a moment at the edge of the picture. The film editor was so much obsessed with his work that other film editors who were in the movie would judge his work based on its technical perfection that he missed the whole point of what they all wanted to achieve - film a fun scene.
We must always soberly assess the good, bad, and ugly of every choice, and virtually nothing in the real world offers convenient binary choices - everything is a trade-off.
'Thinking in terms of right and wrong…isn’t a very accurate or useful framework for viewing the world… Instead of right and wrong, I prefer to look at things in terms of what works and doesn’t work. It brings more clarity and is more effective for making decisions' - McKinsey
Pragmatism - thinking in terms of what does and doesn’t work for achieving our goals is a more effective lens through which to reason about quality.
Focus long term
Prioritize high leverage
Work long, hard or smart.
You need at least two of the above to achieve big goals.
Working smart means prioritizing activities that have the biggest impact. Overall leverage is the amount of value that you produce per unit of time. And it can only be increased in three ways:
- By reducing the time it takes to complete a certain activity.
- By increasing the output of the activity.
- By shifting to higher-leverage activities.
Therefore ask yourself these questions:
- How can I complete this activity in a shorter amount of time?
- How can I increase the value produced by this activity?
- Is there something else I can spend my time on that can produce more value?
Be aware of Pareto principle, focus on high-leverage activities and don't confuse them with easy wins.
Optimize for learning
First of all, learning is high leverage activity and because of that, you should seek work environments conducive to learning.
Learning follows an exponential growth curve. Knowledge gives you a foundation, enabling you to gain more knowledge faster.
Focus on basics but don't neglect other areas where you can improve: soft skills, time management, leadership, negotiation skills, or estimations (one of the Achilles heels of software development). It will open many doors and allow you to see the bigger picture. While studying a new skill remember that why is usually more important than how. Invest in your rate of learning and adopt grow mindset.
Invest in your mates' growth
We are all competitive creatures and especially working in a software development environment cultivates the feeling that your peers are your competitors, not your teammates. While looking from a such perspective in short term can motivate you to increase your performance (usually just the opposite) and force you to compare yourself with others (also not the best thing to do). In long term, it will decrease your teamwork quality, and ability to support each other and potentially can even destroy you from the inside. Making other people successful, your hard work and success would show in the long-term. If you helped other folks be successful (and let them bask in the glory of the success), then it would make you successful too.
'Because in life, like in a startup, it's really about moving your business forward - it doesn't matter who is doing the work to make it happen' - Kate Matsudaira
Never take credit, always take the blame and bring a positive mindset to your workspace.
If you take only one piece of advice from this article it should be this
Remember that your job is not to write code but cultivate a healthy, positive, and growth environment around you by focusing on the right things and letting go of what doesn’t matter. In the end, what makes you worthy (and what other people will pay you for) is not how much time you spend at work but what outcome you create.
Subscribe to my newsletter
Read articles from Omelian directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by
Omelian
Omelian
Passionate about cloud computing, distributed systems, and system design.