45

Managing other programmers while you are yourself a part of the programming work force.

It's a very common scheme, at least in the companies I worked for.

Can you be a good programmer or a good manager if you do both at the same time?

I'm questioning the effectiveness of an individual that has to be in two very different roles, requiring very different skills, environment, concentration, organization, etc.

UPDATE: my question includes management of the company (which is my case), not specifically team management. But I'm interested in both of course.

5
  • 1
    Ask Bill Gates.
    – Andrew
    Commented Feb 4, 2011 at 14:14
  • 7
    I will. Can I use you as a reference?
    – user2567
    Commented Feb 4, 2011 at 14:21
  • I am wondering if you'd considering Code Reviews as part of the "programmer" job here. It seems to me that it would be a great way for a team manager to remain in contact with the code functionalities, also it may not matter if he is interrupted while reviewing (though it may slow him down). Commented Feb 4, 2011 at 14:41
  • Matthieu: I did not mention it but I was more talking about managing the company, not the team. In fact, I believe the team should be self managed. But all the answers below are still valid and valuable to me.
    – user2567
    Commented Feb 5, 2011 at 9:13
  • 1
    short answer is : no would would not be effective at either role, and if you are at one the other will suffer proportionally.
    – user7519
    Commented May 17, 2011 at 21:19

15 Answers 15

37

It depends on the amount and type of programming you are required to do and the amount and type of managerial duties you have to perform.

Being a manager means lots of interruptions, changes of tack and things like meetings etc.

If your programming is "limited" to small pieces of non urgent work then you can fit these in around your managerial duties. If you need to spend significant amounts of "quality" time on a programming task then you aren't going to get that time due to your managerial responsibilities.

If your team is large and/or complex then you are going to need to spend more time managing than you would if it were a small team dedicated to one one or two products/projects. You'll find that you just don't have the time to do any meaningful programming - even on small tasks.

In a previous job I had this role and it worked for me because I kept my programming tasks small. It actually worked to our advantage.

Firstly, I could assess all the requests that came in and if they were small add them to my queue (which was always short) or get back to the client (in this case another manager) with a more accurate timescale for when the work would be done.

Secondly it meant that the developers on the team weren't getting constantly pulled off their current work to fix minor bugs or do small enhancements.

Thirdly, the clients were happy as their urgent problems were fixed fairly rapidly.

It kept me in touch with the code base so I could have meaningful conversations with my team about problems and with my managers and clients about timescales without having to get the team involved all the time.

3
  • 2
    +1 I am a manager and programmer. I work very much like Chris describes here. I am a good programmer, but a great organizer. I think it is a great advantage as a manager to remain technical and involved in projects. My style comes from my first boss, who was also a manager and programmer -- and very good at both.
    – bogeymin
    Commented Feb 4, 2011 at 12:27
  • 4
    You can be a manager and programmer at the same time if you've hired the right people to work in the team. Commented Feb 4, 2011 at 15:18
  • 1
    I think this only works, if the manager/programmer is great. In most cases this fails, just like in Martin Wickman's answer. Commented Feb 8, 2011 at 10:09
12

I was part of a team of developers where one programmer was also our manager. This led to a total collapse of anything resembling productivity. In short, all decisions were made by that guy + he was a complete micro manager. Any ideas and suggestion which he did not agree with was shot down or ignored. This eventually killed all creativity and motivation.

So, I think it is a bad idea having anyone on the dev team in a "higher" position. In my case, the guy was a command-and-control manager, but I even a great manager will (unintentionally) influence the other developers which eventually leads to lower performance. At least of the team is reporting to him.

1
9

Yes
I have seen a few managers who were Programmers and Managers at the same time, Believe me working under these guys was wonderful.
Being a manager and a programmer not only allows managers to lead from front but also motivates the subordinates to give their best.
Most of Employee complain about their managers that the managers are of no worth but the manager who not only Manages but also writes code always delivers best results.
The two managers i have mentioned, programming was their passion which not only helped others but also produced one almost bug free applications.

8

I've been a programming project manager for years, with different companies, projects and teams.

Project management and programming are so different kind of jobs/roles, that I would argue that you can't do both at same time at "excellent" level. It's a compromise -- master of none, jack of all trades, kind of thing.

For me the biggest pain is the context switch between manager and programmer mode. They seem to engage different parts of the brain (or something). One day programming, one day managing I can do fine, but switching between those roles constantly is hard.

8

I've seen both scenarios. Dev managers doing {some percentage of their time} of coding, and a dev manager, doing no coding at all.

The problem is, the more senior you get, the more likely you are to want to be paid more, and the only way to get that in many places is moving into management. (not all of course, but many places). So this can lead to people who are really not prepared to be managers to be stuck in that situation.

(Of course, there are companies where you can move up through Dev, Dev lead - different from Dev manager of course - to positions like Architect etc)

Chances are, being a techy, you may be useless at people-management, plus that takes you further from the code. So you become a bad manager, and are doing less of the stuff you enjoy, and presumably got into development for!

For me, to be a manager you should really be hands off the coding, but absolutely keep yourself uptodate with the technology so you can at least still talk about issues coherently.

As it happens I started freelancing for this exact reason. I have no interest in people management, and I think I wouldn't be particularly good at it, plus I wouldn't get to code as much.

6

It can be done, but it is full of pitfalls. Group size and interruption level play a big part, but the most significant risk is having the manager also be the technical lead. Too much heavy handed opinion when there isn't enough time/effort put in to justify the opinion can lead to some bad decisions. And, the debate on direction isn't a very level playing field between a manager and the rest of the team.

For those considering this path, some advice:

  • Work your way out of the architecture role and identify leads in your group.

  • Don't work on the critical path items. Fix bugs, work on prototypes or other items that can be quickly discarded when your boss finds much more 'important stuff' to distract you.

  • Raise your level of attention and focus to overall efficiency, defending and promoting the team, process, morale and other aspects necessary to have successful team. Your goal is likely to be much more than just a successful project (regardless of what your boss, PM or other may say).

  • Help your team grow: become more independent, self organizing, technical adept, higher level of awareness.

  • In many ways, you are the or a bridge between team and the outside world. A significant portion of your focus should be outside of the team.

To answer the question, yes, it can be done. No, it isn't easy and far too many new managers from the technical side of the house, who may have been great leads, can't transition into the job of a successful manager.

3

A good manager can be, yes. As long as you remain assertive and consistent, there is usually no problem.

If employees are told to bring up issues with team mates with their manager .. and the manager is also a team mate, it can get sticky. It's essential to view all feedback objectively and realize that you might be wrong from time to time. You should also provide some sort of anonymous means for feedback.

It is extremely common (as you said) to see this in start up companies.

3

I think no.

Both jobs require a lot of focus, energy and dedication. It is very difficult to perform both at the same time. When I had to take some team lead responsibilities, the amount of time I spent in programming (and consequently amount of programming related work done by me) reduced.

I know of another colleague who took up managerial role from a team lead role and completely stopped coding within a month (though he tried to do both).

I also know an architect who was asked to become a manager. He also stopped coding within a month after taking up managerial responsibilities. The same architect after 8 months had to come back to coding because of critical field issues. He contributed significantly in bug fixing, but within a month, they had to find a replacement manager to take up his managerial responsibilities.

In my limited experience, I have not found anybody who manages other programmers and codes like a full programmer.

3

In my opinion although it is possible in most scenarios it's not a good arrangement. There are numerous articles on how people who are proficient as developers are noticed and brought up to a team management role even though this is not their specific skillset or even a desired position. They struggle with staying focused on "management" because they see "work" as getting programming done, not creating reports and going to meetings.

Spolsky wrote in his article on the Developer Abstraction Layer the following:

"With a software company, the first priority of management needs to be creating that abstraction for the programmers."

In the article, (opinionated but well reasoned I think), the role of the manager is not about getting into the code or the software development but creating an environment where those producing it can focus entirely on it.

2

My former boss tried. There were too many interuptions from his management role.

He is still one of the best developers i know.

2

Absolutely you can, but that doesn't mean it's easy. It takes a certain kind of person to be a good developer, it takes a certain kind of person to be a good manager and a certain kind of person to be both. If you can find that person (or are that person), there are definite advantages. First or second level managers of programmers need to truly understand what their people do and encounter every day. Hard to do if you weren't a developer and hard to stay in touch/up to date without continuing to develop.

The best manager I ever had (I've been in the biz ~25 years), was an active developer, my manager and half-owner of the company(around 40 emps). He was special but he clearly succeeded at this question.

2

FOR SURE NO!!

You can try, but you will end up managing more than anything. The problem is you can't code when people call you every 5 minutes or trying to make "status" meetings every hour. It ridiculous... I'm doing it now which is why I stumbled onto this thread.

Although a manager at a tech company SHOULD.. no... MUST know how to code. You just won't be able to estimate or understand the client's problems. Coding and managing are two types of people. One side are geeks and awkward with people (face it, geeks you know what I'm talking about), and the other are good with people. You must choose a side. You will get nowhere with coding if you do both. If you love coding and can do it 24/7 if your wife didn't get in your way, STAY AWAY FROM MANAGING. Even take a pay cut if you have to. I'm about to do this, but I don't think the bosses will like this because I make their lives easier doing the management part. I'll have to go back to freelancing if they don't agree because happiness and doing what you love is way more important than money and the illusions it buys. Otherwise you will end up a slave like everyone else.

Best wishes with your endeavor and please keep these posts coming. You guys are awesome.

Read the "Lack of a Programming-Centric Career Path" section at this site. Pretty good stuff and very relevant: http://c2.com/cgi/wiki?ProgrammingIsNotFun

1

It is possible that a person has both good manager and good programming skills, although the saying "a jack of all is a master of none" comes to mind...

Yet, combining both functions at the same time seems to me prone to do both jobs only half. It depends on the amount of managing that has to be done, but inevitably you're juggling around two tasks of a completely different nature, and the focus shift this demands is quite big. I notice for myself that I perform quite less in the coding section when I have some managing tasks to do as well (in my case, managing the courses and writing reports).

Another pitfall is that you're managing a group, but you're a directly involved party as well. Sometimes that pays off, sometimes that can cause big troubles. If other programmers don't agree with your work, the fact that you're the manager can keep them from being completely open.

Then again, when you're coding on the same project you're managing, you do keep a bit more feeling with the code itself, so in that case the programming bit actually can help the managing bit. Everything depends on what you have to manage, how much time it demands, and how much it keeps related to the code you're working on.

So I guess there's no clear answer, but I tend to avoid mingling both too much. My 2 cents

1

well, I've read that managers of software projects should definitely be coders themselves.

I think a manager is a manager for one reason -- to manage. I would take this as a rule of thumb... some can be a double edged sword.

1

I know one case where it works. The man is kind of a workoholic, so he works fulltime as a manager, and nearly fulltime as a programmer.

Considering normal working hours, I don't think that such a double role is a good idea. A managing programmer (or programming manager) is always tempted to do much of the programming stuff by himself, instead of making his programmers do it. There is always this excuse "it takes longer to explain than to do" but in the long run, the 50% programmer work he does is missing in the managment part, so other programmers are less efficient.