I’m getting a little tired of seeing posts saying that the best managers must be an ex-engineer or a current one. I think coding skill is a very narrow minded way to judge both a human and a professional, and a terrible way to run a business.
Here’s the simple truth, a manager is a craftsperson just like a designer or engineer. The only difference is that their craft is organizing people, not designs or code. In their trade the best tools are flexibility, communication, empathy, and comprehension. My personal opinion is that a good manager is at least as hard to find as a good engineer, if not harder.
To say that a manager of engineers needs to know how code and needs to code daily is like saying that you have to be a doctor to manage a doctor’s office, and that you need to be practicing right now. While a bit of knowledge aids in communication, there are a wide range of tasks that need to be performed that are not coding. And to ignore these tasks would be just as disastrous as not writing the software that the company sells.
We’ve all heard the horror stories of non-engineer managers not knowing or caring what engineers do, or the ex-engineer manager thinking that they’re still on the team when their knowledge is 20 years out of date. Clearly both of these people are being ineffective managers, but not because of whether or not they can code. These people are being bad managers because they are not listening to their staff. Anyone, coder or not, will be a terrible manager without the requisite people skills.
So hire and keep managers that listen and communicate well. Managers that manage expectations of those uphill and divert shit rolling downhill. The best manager is the one that helps their team be the best, whether or not there are any commits with their name on it.