As an engineering leader, you bridge the gap between the technical domain and the world of business strategy, setting the direction for your team, and making critical decisions that shape the future of your company.
The assumption among some of these leaders is that climbing higher on the ladder means leaving coding behind. I used to believe just this when I first became an Engineering Manager. As I focused on developers growth and productivity, I believed I no longer needed to code to support my team. However, continuing to code, even as your team grows has many benefits and will increase your impact as an engineering leader, allowing you to connect more deeply with your product, inspire your team, and keep pace with the rapidly evolving tech industry. It also enables you to be an expert mentor and coach to your team.
As someone who has struggled with the decision on whether to continuing coding, I would like to share the benefits that led me to decide to continue. And in the process, hopefully debunk the myth that taking on management roles means you must hang up your programming hat. We will explore why maintaining your coding prowess can augment your strategic vision, amplify your creative thinking, improve your team’s productivity, and ultimately help you be a more accomplished, effective, and insightful leader.
Role of an Engineering Leader
Engineering leaders drive strategic planning, oversee talent management, coordinate project timelines, and act as the key decision-makers. They wear many hats, and a non-exhaustive list of responsibilities looks something like this:
- Strategy and Decision Making: Engineering leaders drive the strategic direction of technology projects. This involves making high-level decisions about project scope, timelines, and resources. It also means predicting and mitigating risks associated with technological advancements, shifts in market trends, or team dynamics.
- Talent Management: One critical responsibility is to manage the talent within your team. This includes hiring, onboarding, nurturing their career growth, and ensuring a healthy and productive work environment. Leadership means being able to recognise individual strengths and allocating roles accordingly, while also coaching and mentoring to strengthen the skills and capabilities of your team members.
- Project Management: As an engineering leader, you’re in charge of overseeing project timelines, scopes, and budgets to ensure timely deliveries without compromising the quality of work. This involves meticulously coordinating tasks, aligning them with broader company goals, and maintaining strong stakeholder communication to ensure everyone is apprised of progress.
- Stakeholder Communication: Engineering leaders are also entrusted with the task of translating complex technical terminologies and mechanisms for stakeholders who might not have a deep technical background. Simplifying technical jargon helps stakeholders understand the processes, appreciate challenges, and make informed decisions.
- Catalyst for Innovation: Engineering leaders are expected to constantly drive innovation within their teams. This could be in the form of adopting new technologies, streamlining processes, or encouraging new methods of problem-solving.
Because of these many responsibilities (and there are many missing from this list!), I have seen leaders stop coding as they feel they no longer have the time. However, as I’ll explain, coding proficiency is vital in an engineering leader’s role, lending them credibility and helping in thorough decision-making and estimation.
Benefits of coding for engineering leaders
Programming languages are the language of technology, and a leader who can speak it fluently has a distinct advantage. When you converse with your team in the language they are most comfortable with—code, you are inevitably increasing efficiency, promoting innovation, and developing a more profound connection with your team.
Coding as an engineering leader is about far more than simply keeping your technical skills fresh. It’s about fostering a deeper connection with your product, your team, and the broader tech industry.
Here’s what I’ve found as I’ve continued my coding journey:
Product Insight: When you involve yourself in coding even as a leader, you gain a clear understanding of the product at a granular level. This intricate knowledge is instrumental in leading strategic discussions, identifying potential issues and solving them proactively. Being directly involved in the coding process also allows you to appreciate any trade-offs or dependencies your team may be dealing with, helping you make more informed strategic decisions.
Team Connection: Your technical involvement deepens your connection with your technical team. When you’re familiar with the complexities and nuances of coding, you’re better equipped to understand and address the challenges your team faces. Joining them on the frontlines not just earns you respect and credibility, but can also enhance team morale and productivity. Leadership isn’t just about pointing others in the right direction; sometimes, it’s about paving the way yourself. By committing to handle parts of the codebase, leaders show their team that they aren’t afraid to roll up their sleeves and get to work. This boosts trust, credibility and makes the leader an integral part of the technological aspect of the product, which, in turn, promotes a more vibrant and innovative team environment.
Team Communication: Coding expertise allows you to lead more than just meetings. It feels good to speak using technical vernacular with your team, pinpointing exact issues, strategising possible solutions, and instilling a sense of camaraderie. This often-overlooked angle of leadership fosters open communication, better understanding, and effective collaboration within the team. Your ability to converse fluently in the language of your engineers offers unique benefits.
Defining Solutions: Leaders with robust coding skills can effectively convey in-depth technical concepts and strategies to the team.
Evaluating solutions and current processes: When leaders can pinpoint and discuss precise technical issues, it ensures that potential solutions are efficiently and correctly evaluated. This capacity to quickly identify problems and brainstorm solutions can dramatically shorten the problem-solving cycle. Being “in the trenches” alongside your team allows you to evaluate firsthand the effectiveness of current dev processes, identify opportunities for improvement, reinforce beneficial practices, spot issues, and provide feasible solutions. Leveraging coding skills means advocating and driving change based on your understanding of the technical scenario—facilitating continuous improvement and innovation.
Keeping Up with Industry Trends: Continued involvement in coding empowers you to stay in sync with the ever changing technology landscape. Understanding new technologies, libraries, or tools allow you to guide your team to use these resources effectively. It ensures that your team, and consequently your business, remains competitive and able to quickly adapt to changes and capitalise on opportunities.
Innovation: Coding skills can provide the background required to drive innovation. With a robust knowledge of what’s possible within the realm of coding, you can bring fresh ideas to the table — pushing boundaries of what’s achievable and inspiring your team to do the same.
Sound good? Convinced but not sure how to meaningfully maintain your technical prowess? Excellent as I have a few suggestions in that area based on my own experience.
Strategies to maintain technical competency
What worked for me:
- Doing code reviews.
- Build small features or fixing bugs in each domain you manage. The important part of that you follow the same processes your developers do and deliver code from ticket to production. Make sure you do this even in area you’re not strong in. For example, if you have a background as a backend developer, make sure you write frontend code as well!
- Read/watch videos/listen to podcasts etc. Find a format you enjoy consuming technical knowledge. For me, it’s books and videos. This works well when you’re actively working on a coding problem.
- Pair debugging. Developer stuck on an issue? Fire up the IDE and walk through it together. One of you drives. The other asks questions.
- Participate in architecetural decision meetings. Whether you lead of lend your view, share your wisdom with the team and learn from them.
What doesn’t work:
- Being on the critical path. If developers are waiting on your code, you need to pick something else to work on. Developers have the super power of having long stretches of time uninterrupted (it’s your job to protect this time), you don’t have that luxury. Something will come up, which means the feature that “will only take a few hoes to develop”, ends up taking you a week.
Maintaining technical competency is a journey, not a destination. It requires ongoing commitment and an openness to adapt and learn, both from your team and from the rapidly progressing tech world outside. The options provided above are just an example of what has worked for me, your mileage may vary!
Challenges and how to overcome them
Juggling programming with other leadership responsibilities can be a tightrope walk. It’s about finding a balance and maintaining it. Effective time management skills, knowing when and what to delegate, and adhering to a strict regimen of coding can help in overcoming these challenges. When challenges do occur, it’s important to remember the substantial benefits that come from staying technically hands-on.
Time Management: Effective time management is crucial in ensuring there is sufficient time allotted to both coding and leadership roles. Establishing a strict schedule allowing regular coding activities and learning without eating into the time for managerial obligations is fundamental. Utilise productivity tools and apps that help manage time effectively and stick to a strict regimen, even if it means setting a specific deadline for administrative tasks to concentrate on coding.
Delegation: Knowing when and what to delegate can free up significant time. Assign tasks based on team members’ strengths and performances, which will not only ensure tasks are performed efficiently but also allow you to focus on strategic planning and maintaining technical competencies.
Continual Learning: Carve out time, whether it’s an hour every day or a few hours a week, for continued learning. This could mean diving into technical literature, attending webinars, or in-house training sessions. This not only helps you to brush up on existing skills but also gets you acquainted with new and emerging trends in the industry.
Prioritisation: The sheer amount of tasks can be overwhelming. Therefore, understanding to prioritise them is crucial. Essential tasks that align with the organisation’s objectives and are time-sensitive should take precedence.
Building a Supportive Network: Joining or building a community of engineering leaders can be tremendously helpful. Exchanging ideas, challenges, and solutions with those in similar roles can provide valuable insights and practical tips.
In all this, it is important to remember that the objective isn’t just about getting involved in coding work but being an effective leader too. By adopting an appropriate approach and the resolve to keep learning, overcoming these challenges can lead to a uniquely fulfilling leadership experience that blends the best of both the technical and administrative worlds.
A well-rounded leader is one who can inspire others and contribute operationally. Striking this balance leads to robust decision-making, increased team productivity, harmonious work environments, and high job satisfaction levels. The key is crafting a schedule where leadership and coding tasks coexist, accentuating your technical knowledge without sidestepping managerial responsibilities.
Being one foot on the ground, in the thick of the coding trenches, facilitates the making of informed micro and macro level decisions, anticipating industry trends, and driving innovative strategies. Such a skillset doesn’t minimise your leadership capacities but expansively augments them, forming a well-rounded and deeply effective leadership style. Your ability to don multiple hats—of a manager, a strategist, a mentor, and also a seasoned coder—is what will set you apart in this dynamic, technology-driven environment. Never underestimate the power of rolling up your sleeves. Happy coding!