A Tech Lead writing code is a disservice to the company.
You have been coding your whole life or at least most of your professional life. Recently, you have been promoted/designated or as a Lead Engineer or a Tech Lead. Does anything change for you?
Should you stop coding?
People generally say, hell no!
And why should you now?
- You like it;
- You enjoy it and probably
- really good at it too.
But then you start leading a team, which means that everything should change or at the minimum, something should change Or shouldn’t?
It’s an eternal question for every engineering manager. I have tried to answer it all along my career and
The hardest thing is to understand that you are not “just a” developer anymore.
I know, the above statement is controversial with multiple of my readers.
Most of you are now in a role with,
- different responsibilities,
- different daily schedules, and
- tasks that involve different mental processes.
And you are most likely trying to combine two things at this time.
- You’re trying to be a good developer (that you used to be).
- You’re also trying to act as a “Coordinator” “Communicator” and also “Manage” things
I know, your designation/title says Tech “Lead” or “Lead” Engineer and not Engineering Manager. But, in most organisations, a TL is looked upon as an EM in waiting (For more insight on career tracks for a TL – Check out my previous article on Engineering Leadership on Startups )
And working two jobs may often lead to early burning out and, frankly, not being any good in either of them.
I will take two very probable examples here.
Case 1: You are a Lead and you want to own a particular piece of code rewrite, which is giving a lot of concurrency nightmares to both the product support and your on-call teams. Most design/debug and development tasks require high concentration and focus, which contradicts the very nature of the team leader’s work. Multiple planned meetings, calls, messages — a lead needs to be on alert. It’s tough to consider all the edge cases when your slack/hangout/teams is buzzing all the time.
Another essential element is most of these buzzing & pinging can be controlled if your team is good at Asynchronous Communication. (I will write more about it in a future article)
Case 2: You are a Lead, driving a new subscription module for your latest product. There are simply so many stakeholders, your PM, Payments team, external partner/vendor, Infra team etc. It will be hard to be prepared to answer your teammates’ or vendors or customers’ questions if all you can think about is the efficiency of that function you just wrote.
Time Share:
Another thing is that spending a lot of time on development gives you little time to do your actual job as a lead/manager. And your job is managing other people. Though you will probably make time for your primary duties — assigning tasks, making estimations, validating designs, communicating with the stakeholder — you will miss out on all the other “noncrucial” parts of your job.
You can get so invested in a feature that you will miss some critical signs of your employees becoming demotivated to do their work, tired, or less happy. And, as you are busy, you become less innovative. Who will come up with a new architecture for the 3-year-old service? Most certainly not you, since you are too deep in the code.
Anti-Growth
Minefields you’d inadvertently trigger are either the Martyr Effect or the Hero Syndrome (Think Bruce Wayne or Tony Stark). On the first & second one, You’d always take the toughest part of the code or the most interesting part of the code, respectively. Either way, you’d be creating a team who’d be ill-prepared to take up challenges on their own or ill-equipped.
But what if I do not want to give up coding?
It may so happen that plain management isn’t your path. So, from here on, you may not enjoy what the role has to offer. Being a Team Lead/EM is all about people; being a Principal Engineer (or staff engineer or architect) is about code. If programming is critical for you and brings you more joy, you may be more suited for a Technical Leader role. So choose wisely.
But as a Team Lead, you are still most welcome to join code reviews and help your teammates with challenging coding problems if you want to.
Consult. Guide. Assist. Communicate
This is going to be your Motto.
And of course, You should definitely continue to code in other “Non-paying” parts of your job. Start automating your units, create boiler plates, write smaller, niche, critical elements of your system.