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, whereby learning is very slow. For instance:
- A software engineer earlier in their career might ship tangible change daily, but career progression may still feel incredibly slow. It takes years to build a repertoire that gives them enough of a framework 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 typically won't have pressure to get promoted. Progression, in that case, may mean polish and optimisation – be it leading new projects, supporting other people's careers directly or indirectly, or learning new skills – and the unit of effort is years.
- For staff+ engineers or managers of managers, onboarding takes as long as six months, and any impact attribution 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, and while the perception is that some years fly by, progress depends on time, and time is a constant. That's indifferent to what "career progression" means to different folks: meaningful progress only comes through time.
Through time, work will inevitably be stressful. 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.
That's where the wildcard advice of "being patient" comes up.
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, most importantly, it should 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, should be less about the endurance of the challenge and more about experiencing everything else.