I just stumbled upon this Tweet from Elon Musk on my timeline and I feel the need to share it. I usually avoid dealing with polarizing topics like this because there are just too many different opinions, but this is just a very important issue to me.
This topic resonates with me so much, and I think it's important coming from one of the most influential people on the planet.
In my opinion, companies, software and non-software alike, should move towards valuing and promoting technical excellence at all levels of the hierarchy. This is not necessarily about programming, but about having deep technical knowledge in the area you manage.
What you do you think?
Top comments (21)
I’ve got almost 20 years of experience working in the tech industry and this is the role and expectation of an Engineering Manager. Good engineering managers are people managers and leaders for software engineers, are often responsible for technical delivery teams, and they have a strong understanding of technical details combined with competency in adjacent domains such as analytics, product management and design. They are also responsible for the performance management and career development of their direct reports.
So to answer the question of should they know how to code, yes sure. However, when it comes to the question of whether they should still be coding, it really depends.
Here is my experience working at tech companies as an engineering manager.
When I was an engineering manager of a small team of 4-5, my coding time was about 40% - 50%.
When I was an engineering manager of a 12 people team, I’d only have about 10%-20% time for coding.
When I was looking after multiple engineering teams, I’d only get to code at work once every 3 months during hackathons.
Now, as a senior engineering manager at a tech company, I do not have time for coding at all.
Thank you for taking the time to share your experience.
I think it’s not so much about coding on a day to day basis, but rather understanding the basic principles of software engineering. And these are fundamentals cannot be acquired purely theoretically, require hands on experience.
Nevertheless, I understand that certain hierarchy levels require shift of focus from coding to other tasks such as leading people.
I would like to know if you still use your technical knowledge on a daily basis?
In my 30 yrs in IT, the best managers were skilled in dealing with people. In particular those who raised up total trust. The technical roles were reserved for Architects, Leads, Seniors, and Freshers.
The worst manager I ever had was a Team Lead promoted into 1st line management.
The 2nd worst were managers who couldn't be bothered but still demanded due dates.
Then there was the drill Sargeant scrum master.
And finally the snitching wonder boy, loved by the 3rd line untrusted by everyone else.
How were they skilled in dealing with people? I could think of a manager I had that excelled at understanding the technical requirements on one side and was able to translate this into plain language when talking to non technical people.
The good ones are able to create an atmosphere of purpose, support, trust and understanding. Everyone enjoys the team, likes the scrum master, team leads and inter-team collaboration is magic. Negatives are always handled professionally. The attitude is can-do continually. Agile is a must.
Ofc. The manager does not need to know every single line of codes, but he must be able to take a look at the codes sometime and know what the heck is going on there when team members have some technical questions. At that level you may not have enough time for coding, but it does not mean that you don’t know anything about technical stuff and only good at managing people
I fully agree with that!
I've had one manager that could code really well and would contribute to our backlog regularly. Then I've had another who never submitted a PR when we were working together, although they knew how to code. The latter helped me grow a lot, where the former not as much.
I don't have experience from many companies, but is not the role of an EM to help their engineers grow? And be responsible for delivery. So as an EM, if you trust your engineers and can get technical answers from them, I don't see why you need deep technical skills.
So I'm curious why some think deep technical knowledge is so important for an EM?
I think it really depends on how you define the role of an EM and what you personally expect from a manager.
In my experience, a lot of information gets lost along the way between engineers and managers unless they have at least a similar level of technical knowledge. This translation effort occurs between engineers and managers and is repeated at all levels of the hierarchy (managers to directors, directors to VPs, ...). The information becomes less technical each time it is passed on to the next level. However, there is a big difference at which level this translation effort and information loss first occurs. Does each individual engineer on a team (10, 20, ... people) have to translate information and possibly pay a price (overhead) when the information is passed to their EM? Or does the EM understand the information at such a high technical level that hardly any information is lost and the EM can translate it into less technical information if necessary to pass it on.
This is my, presumably biased, opinion as to why technical knowledge is important for managers in a technical field. To preserve as much information as possible in every conversation.
Nope, the crucial piece is domain knowledge. Of course Musk would say what he said, it maps to his personal style/interests. Does anyone truly think he has a clue about battery technology? Or is he smart enough to let those who've been in the field for decades provide him with guidance?
Been doing this for 30+ years and while I can't say I am the best coder around, some on my Team are better but that is why I hired them, I can read and be technically proficient enough to help scope work with accuracy. Understanding the technical aspects of a Team you manage I believe helps in demoing the work, as you can speak about it without the jargon but also provide the technical and business value.
I still like to take care of things from time to time, as it keeps me feeling up to date, but I don't think its going to be a full time job and at times skill suffers from that. I have recently interviewed for/looked at jobs both as Manager and Director level and a lot of the ones I have seen, or come to me, do have an aspect of coding around them.
In a fast changing environment like software engineering, it takes up a lot of time to stay up to date on the latest technologies, frameworks, tools, or whatever.
I think managers do not need to know the technical details behind every single piece of technologies, but they must understand the underlying principles. And, in order to understand that I think they must have worked in that field as en engineer before, otherwise they won't fully grasp it in my opinion.
There's nothing worse than a technical manager who cannot code. So much time is wasted on 'translation' between devs and management. Frustration and misunderstanding guaranteed
I’ve had a few managers that weren’t technical adept and I must agree with your points.
In software engineering it seems so much more common to have non-technical people leading technical teams. Maybe this is the case because software is non-tangible and therefore, it’s easier to hide missing knowledge.
He's not wrong there they should actually know what they are talking about and have credible experience in the area that they work in.
That’s also the way I see it.
The individual company culture has a big impact on how people work together.
I think he wants to have technical adept managers because these are the people he’s actually talking to inside the company and he wants to get quick and profound answers on his questions instead of having the manager to channel every single question to the devs.
Short and concise! 👍🏻