Staying Technically Sharp
The Importance of Maintaining Tech Skills for Software Development Managers⌗
In the flourishing garden of technology, there are the nurturers - the software engineers, the architects, the coders - and then there are the stewards - the software development managers, the directors, and other czars of code. For anyone fortunate enough to ascend from the ranks of the nurturers to become a steward, the transition often comes with the lure of less hands-on coding and more high-level management. This sort of managerial seduction lulls one into a complacent torpor that constantly threatens the foundation of their technological prowess. And software development teams suffer because of it.
To clarify, I am in no way presenting a Luddite argument against promotion, nor am I championing the idea that a manager must continually write code as if their life depended on it. However, I firmly contend that keeping one’s technical skills sharp, even after climbing the corporate ladder, is not merely a choice - it’s imperative to do the job well.
Let us examine why retaining and continuing to hone your technical expertise is essential. Joel Spolsky’s Law of Leaky Abstractions implies that any non-trivial abstraction will leak - it will fail under certain circumstances. We can extend this idea to management: in this case, the separation of management from technical practice. The abstraction that managers no longer need to keep their tech skills sharp inevitably leaks when unexpected technical problems arise. The agile ability to address these is a true test of the stewardship of a software development manager.
Accepting the status quo - i.e., neglecting technical skills upon reaching a managerial position - seems both comfortable and convenient. However, comfort and convenience, though tempting, often lead to stagnation. I loathe any software development manager who shies away from challenging the norm and arguing for the necessity of maintaining tech skills; they tend to be poor managers due to their lack of understanding and are inherently incapable of helping to move a team or a product forward.
To repeat myself: Poor tech skills and understanding make it almost impossible to be a great software development manager. In this era of rapid digital evolution, where technology continues to evolve at an ever-accelerating pace, those who don’t maintain their edge risk becoming irrelevant, regardless of their position. It’s akin to a general who has forgotten the intricacies of battle strategy—no amount of delegation will mask their inefficiency when their battalion is under fire.
So how does a software development manager keep their tech skills sharp amidst the incessant deluge of organizational commitments and expectations? I have some thoughts on this which have served me well:
Firstly, embrace deliberate learning. Set aside regular time in your schedule for self-education. This could involve reading technical books, articles, and blogs; taking online courses; attending webinars or local meetups; or simply practicing coding. As a manager, the onus is on you to keep learning and updating your skills to maintain relevance.
Secondly, stay hands-on. This doesn’t mean micromanaging your team or doing their jobs for them. Instead, involve yourself in code reviews, participate in architectural discussions, and be part of problem-solving sessions. The aim is not to assert authority, but to stay connected with the technological pulse of your team, understanding their challenges and solutions.
Lastly, cultivate a learning culture within your team. This not only benefits the individual members of your team but also provides a valuable avenue for you to learn. By encouraging knowledge sharing, learning from failures, and fostering continuous improvement, you embed yourself within an environment that naturally facilitates your own technical growth.
The duality of a software development manager - both the nurturer and the steward - mustn’t be a burden but a badge of honor. It reflects a commitment to continuous learning and improvement, to maintaining the technical acumen that once propelled you into the realm of management in the first place. The key to being a successful software development manager lies not in trading one role for the other but rather in harmoniously balancing both. Like an Omega watch, where every gear and spring has its function, a great manager is one who synergizes their technical acuity with their leadership abilities to create a robust, resilient, and forward-thinking team.
To any managers or directors reading this, I challenge you to be contrarians in your roles - challenge the norm, go against the current, and keep your tech skills sharp. To echo Joel Spolsky again, remember that in the end, “it’s harder to read code than to write it.” So keep reading, keep learning, and keep leading.