The other side of patience
Patience might be one of the most essential skills for a joyful career in software engineering.
Paradoxically, "moving fast and breaking things", "agile", and many other successful philosophies in the tech industry have speed as an ingredient of success. It is true that when it comes to building most software, small increments, maximising efficiencies, spending less time on what doesn't matter right now, and learning fast are the way to go.
However, I've seen many people transpose some of these concepts to how they think about their careers. Conversely to how building software works, meaningful progress in the context of a career requires long cycles, which sometimes are, at first sight, wasteful repetition. For instance:
- While as a new software engineer you learn everyday, career progression may feel slow. It takes years to build mental models that enable you to solve most problems. A five-year ride to get to senior engineer is generally considered an outlier pace of career progression.
- Most folks who reach senior engineer or engineering manager don't have external pressure to get promoted. Progression, in that case, may mean breadth and depth – be it leading new projects, supporting other people's careers directly or indirectly, or learning new skills. You measure such cycles in years.
- For staff+ engineers or managers of managers, onboarding takes six months, and any attributable impact takes conservatively a year. Progress may mean seeing impact compound over time, supporting other people's growth, and moving to a new role to do more of roughly the same, in a different scope. Again, the time unit is years.
In short, true career progress depends on time which is a constant and time is indifferent to people's ambitions.
While time is a constant, how you feel about work isn't. Work will inevitably be stressful at times. Be it because you got a new manager who's not a good fit for you, or because a relationship became sour with a stakeholder, or because you have a project that you don't believe will lead anywhere and can't influence, or because you don't feel rewarded the way you expect and need to be... or even things outside of work that impact how you feel about work.
Hence why patience is an invaluable skill.
My understanding of patience in such circumstances was always more geared towards endurance: remaining calm and composed in the face of adversity. Being resilient and understanding that things are outside of my control. And this definition is not too far from the dictionary definition.
However, I recently learned that patience in practice can't be a passive waiting game. Neither should it be solely about compartimentalisation, as in "leaving it to the side" or "letting it soak in". Instead, patience should be the art of experiencing time fully. It should be about appreciating the lessons hidden within the stressful moments – yes, and, it should also be about savouring the nuances of every other moment. Finding joy in everything else, somehow. It should be about living in the present, with what you control, and finding contentment irrespective of the pace at which events unfold.
Patience, in practice, is less about the endurance of the challenge and more about experiencing everything else.