Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

I am the manager of a team of 11 software developers who look after my company's web sites / web applications, running up to 4 concurrent projects plus day-to-day support at any time. Within the 11 developers there is a mixture of technical skills, job titles and experience, although the team structure is flat with all 11 developers reporting directly to me.

The whole team having a single manager is starting to prove not to scale very well. I am starting to be spread too thinly so want to reduce my number of direct reports. All the ways I can think to do this have significant downsides:

  • Have junior developers report to senior ones. This reduces the time spent on development by the best technicians.
  • Split the team by software product, e.g. developers 1-6 work on intranet and 7-11 work on external sites, with each section having new team lead (possibly a new job description with more management / mentoring / coaching responsibility than the current senior developers). This adds artificial silos and might make it difficult to get an "intranet developer" to work on an external website if I want them to.
  • Keep the structure flat and add managerial support in the shape of Project Managers / Team Administrators just to take the pressure off. This doesn't solve the problem as the team can't go on growing like this forever.

Is there a standard way of solving this problem which I am missing?

If not, how have others of you solved this problem?

share|improve this question
2  
How do you interact with your reports now? Is it technical, administrative, or a mix? If a mix, what percentage of your time is spent on each? –  Telastyn Jul 30 '12 at 15:50
    
A 50/50 mix of administrative and technical. –  Nick Jul 31 '12 at 15:36
    
Is this specific to programming? I wonder if this question might get a better answer on Workplace.se –  Daenyth Aug 5 '12 at 19:09
add comment

4 Answers

up vote 5 down vote accepted

Some quick thoughts:

  • Sub-teams are a good idea: 11 direct reports without any structure is too large for a workable team (you won't have enough time for direct coaching, and team meetings with that many people will tend to be unproductive).
  • Consider separating operations out from development - it's a slightly different skillset and being interrupted by operational issues all day can seriously harm development productivity on projects.
  • As a result of the first two points, I think you should have perhaps 3 subteams - Intranet, External Sites and Operations. The operations guys will deal with all day-to-day issues / maintenance fixes etc. while the two development teams focus on delivering new projects / value to the business.
  • Cycle people between teams on a regular basis. This can be either occasional (e.g. having people do review of code in another subteam), for a project or on a permanent basis. But make sure it is understood that team roles will change whenever there is a business need - nobody "owns" a specific role forever.
  • Don't add more managers/administrators - this is a surefire way to reduce the overall effectiveness / productivity of your teams. Have the most experienced person in each subteam play a team lead / coach role. Make sure that they see their role here as coaching and making the whole team succeed, and make sure that they are equipped to behave in this way rather than act a "task manager".
  • Your role should be focused on external stakeholder management, prioritisation of resources / tasks within the group, and acting as "head coach". You'll need to handle the occasional escalated issue from the sub-teams, but in general you should encourage them to solve problems themselves without coming to you.
  • If you are highly technical yourself you may also choose to play an architect / design assurance role. If not, find someone who can, within the team or elsewhere.....

Also, it's always worth going and (re)reading the Agile Manifesto, and especially the twelve principles.

share|improve this answer
2  
Every time I have worked somewhere where they separated out production support from devlopment, it has been a huge disaster. If people don't support what they develop they never learn where they are going wrong, plus the support developers end up being in a ghetto from which there is no escape. –  HLGEM Jul 30 '12 at 17:11
1  
@HLGEM - absolutely, but that's why you need to cycle people around.... have people do live support on their own products by all means, but not at the same time as they are developing Version 3.0. Also you probably have one or two ops guys who are not developers and different tasks to do, so it can make sense to have a different team structure / working model for ops. YMMV of course. –  mikera Jul 30 '12 at 17:13
7  
In my experience, they always promise to cycle people around, but they don't, YMMV. In part that is because the ones orginally assigned to development, don't want to move to support. –  HLGEM Jul 30 '12 at 17:16
add comment

That structure will mainly depend on project specifications

Ideally, there should be 3 juniors per senior developer in a team. Consequently, there are 2-3 senior developers per a teach lead.

Thus, only tech leads will report to PM on progress status of the project. Described structure still assumes that for a non-technical issues (vacation, time-off, conflicts, etc.) everyone can have access to PM.

One of the relatively successful software development teams I was a part of went something like this, on a per-project basis:

A Software Development Manager/Senior Developer/Mentor, to whom everyone else reported directly.

  • A project manager, who kept schedules, facilitated requirements and acceptance negotiation, and did communications. Everyone dotted-line reported to this person, too. A documentation person (who occasionally was also the PM, but only when expertise permitted).
  • A mix of 1-3 developers or senior developers, depending on the project's needs.
  • A junior developer when available.
  • Someone assigned from a QA pool.
  • An infrastructure person (a role often fulfilled by the manager, since he had solid SA competency as well).

It worked perfectly fine, and I loved that organization. On the other hand, I was the Software Development Manager, and the team's organization structure was evolving.

share|improve this answer
add comment

Is there a standard way of solving this problem which I am missing?

Not really. It will depend on your team, you, what you need to get done, and what resources the company will make available to you.

Personally, the best sort of switch is by splitting the technical management from the administrative management. It's rare that people are good at both, and they rarely tend to interact.

One person handles the technical aspects. What needs to be done, who is going to do it, how things need to line up. The other handles administrative aspects. Reviews, budget meetings, product planning, etc. They then work together to communicate insights from one side to the other and to provide a united front.

How this is broken up can go a few different ways. The most common is to have the engineering manager be the administrative side and an achitect be the technical side. They are peers and report to a director/VP.

Another I've seen work is to have the engineering manager be the administrative person, and then the team lead(s) act as the technical person. This is trickier, and requires the right people to act as (mostly) peers even if the reporting is hierarchial.

For your specific scenario, I would recommend having 2-3 teams and have technical leads do the technical aspects and you focus on the administrative. Yes, it cuts time from the leads actually writing code, but they should (if they're doing a good job) recoup that time by making the more junior developers more efficient/productive. It provides them more motivation and a sense of accomplishment with the actual promotion too. And most practically, it's an easier sell to management than opening a new position.

share|improve this answer
add comment

It depends on the team and your experience. I stick to the point that team should be motivated by any means. On the other hand, you should have strict control over the team and monitor them in every possible way. For example, I use special software Comindware task manager and I feel ok - at least as far as the work is concerned. I advise you to start with great motivation. It is up to you what to choose as a type of motivation.

share|improve this answer
1  
I'm not the down-voter, but did you even read the question? –  Anonymous Aug 6 '12 at 14:10
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.