The other side of patience
Patience might be one of the most essential skills for a joyful career in software engineering.
Paradoxically, "Move fast and break things", "Agile", and many other successful philosophies in the tech industry make it easy to correlate speed to success. Undoubtedly, that's the way to go for building most software – small increments, maximising efficiencies, spending less time on what doesn't matter right now, and learning fast are pretty powerful concepts. However, I've seen many folks transpose some of these concepts to how they handle their career. 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:
- A software engineer earlier in their career might ship software daily, but career progression may feel incredibly slow. It takes years to build a repertoire that to solve most problems. A five-year ride to get to senior engineer is generally considered an outlier pace of progress.
- 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 as long as 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, regardless of ambition, career progress depends on time which is a constant. Time is indifferent to what "career progression" means to different folks, and meaningful progress only comes through time. And 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.