views:

409

answers:

6

Hi All

I need to find some good statistics from reputable sources on the benefits of software developers working in a team.

We use Scrum - so anything linked to this in particular would be really beneficial but not essential.

I have 5 developers of differing skill levels and I feel that they need to work as a team. However, if my boss had his way they would all have a large single project each (or worse, multiple projects on the go at the same time) each. It's a constant battle.

I am looking to put facts in front of him that are difficult or impossible to argue with. Things like 'working as a team increases productivity by xx% would be perfect. Increases morale by xx%, reduces bugs by xx% - you get the idea.

There are some posts already here that may help and I will go through them but I don't think they're exactly what I'm looking for.

Some may feel they want to side with my boss. In the interests of good discussion this is OK. However, I know the dynamics within my team and Organization and am convinced that team working is the best route for us. I'm unlikely to change my mind :)

Any help would really be appreciated - before my guys walk out on me :)

+1  A: 

What do you mean by working "as a team"? Aren't you battling over semantics?

Even if everybody had their own project, you would want to avoid duplicating each other's functionality. You should build your own library of repeatedly used base functions etc.

If everybody worked as a team, you'd still have to assign invididual tasks to each programmer.

Sebastian
Working together on a project with complex business logic and many tiers. My less experienced developers are not at the level that they would know all the relevant technologies.We have libraries, standards, code checking. We do not duplicate functionality. The team 'self organises' and divide tasks up amongst themselves. Are you familiar with the Scrum methodology?I don't care who does what as long as it's when I want it for and it's bug free.
Davy
A: 

I have 5 developers of differing skill levels and I feel that they need to work as a team.

On what ground do you have that feeling?

There is no point in enforcing team work for the sake of team work. If there are really different projects or components, they could be developed by individual developers as well.

Things like 'working as a team increases productivity by xx% would be perfect. Increases morale by xx%, reduces bugs by xx% - you get the idea.

There are no absolute benefits of team work over individual work. Sometimes team work only interferes with effective work. You lose time arguing about stupid things (like argument names) instead of being productive.

Team work may be or may not be of benefit. You need to tell us more about the project you have at hand, its organization and what kinds of tasks/subprojects your colleagues are being assigned.

I wrote my considerations on the team work in my blog article. Though not exactly to help strengthen your team work position, the story can give you some thoughts.

Working in teams can destroy your learning abilities

Developer Art
I have monitored the results of both approaches and I'm getting projects turned around quicker, with less bugs, have a gorup of people who understand the applciaiton and the buisiness problem instead of one, they tell me they're happier etc etc.In my post I said I didn't want a discussion on whether I'm right or wrong. There are a lot of people eho believe in team approaches - otherwise it would take years to deliver anything remotley complex.If you disagree - that's fine, but to be honest, I only want to hear from people who do beliee in team approaches.
Davy
So what you're saying is, you have made up your mind and want a bunch of 1-sided arguments to trick your boss into agreeing with you, rather than let him make an informed decision.
John
*"There are no absolute benefits of team work over individual work."* Surprising point of view... I strongly doubt that 2 brains won't produce a better result than 1 brain.
Pascal Thivent
+1 for having the guts to say what many think but don't dare day aloud. :-) Seriously, I quite agree with you: teamwork is overrated.
CesarGon
Surely you can see that there are benefits to collaborative learning, knowledge sharing, brain storming, bouncing ideas etc.How do you bring on junior members of a team without team work? Do you bring them in, sit them down and let them get on with it?How can you expect to release a software system of any reasonable size and complexity without any collaborative work?
Fermin
Of course there are benefits to teamwork! But we often forget about the *drawbacks* of teamwork. I'm only saying that both benefits and drawbacks must be considered together every time when we need to assess things and make a decision. :-)
CesarGon
Developer Art
Actually, I was misunderstood in my point. I said there is no general preference of team work over individual work, just as there is no general preference of individual work over team work. It all depends. I've seen bad and good examples of both team activity and individual development. Each case is individual. But I do not praise team work as a panacea to any project problems. It's people who matter, not the organization (agile, team work, whatever).
Developer Art
+1  A: 

I seem to remember "The Mythical Man Month" mentioning that the size of an optimally efficient team is one - because inter-member communication is essentially zero. However, once software reaches a certain size, you're going to make a tradeoff of efficiency for time - for example, it may take one person 5 years to develop a system, but a team of 5 can do it in 2 years (hypothetically). However, communication issues, design issues, etc. means that adding team members doesn't scale directly - you can't take a team of 1780 developers and develop the system in one day.

So - I'm not sure that productivity is the metric that you're looking for - adding team members lowers individual productivity as a tradeoff for less calendar time.

Morale is a tricky area too, and depends on the individual developers - some people work better solo, some work better in teams - and sometimes the mix of team members negatively affects morale.

"Reduces bugs" might hold some traction, though - depending on the development practices. I know that I've seen studies showing that certain classes of bugs are less likely in pair programming - but if each person is working in their own section of code on the same project this isn't likely to have the same benefit. You could have code reviews too, but this could be done in your current "one developer per project" style too.

Nate
It's the 5 in 2 statistic I'd look at - I'm pretty sure if I had 1780 developers time for my projets would never be an issue :)Morale is not a tricky issue - my team have told me they prefer working like this.Again, team working is not always 'Pair' or 'Extreme' programming.
Davy
Above 10 people, the number of communication channels between team members which is n(n-1)/2 makes it hard to use face to face communication only. This is one of the reasons Agile advocates small teams (<10 for XP, 7+/-2 for Scrum).
Pascal Thivent
+1  A: 

As The Mythical Man Month discusses, time lost on internal team communication grows with the team. If the team lead assigns discrete pieces of work to each developer, then this relationship is (ideally) linear - each developer might spend 10% of his time and use up 10% of the lead's time.

If you 'work as a close-knit team', then each developer is communicating with all the others. That means the communication time rises geometrically, which is scary.

Also, consider Joel's articles on 'task switching' where he claims that developers need to be freed from distractions in order to concentrate intensely and get 'in the zone' of high productivity. If your devs have to keep talking to each other they are not going to be able to focus on their own work as well.

It's good each dev knows in general what direction the project is going, who is working on what, etc. It's also good to maybe have people do code reviews. But that can all be done in a more linear fashion in my opinion, without all this 'teamwork' stuff. Reviewing code and testing functionality can just be another task assigned by you.

John
I agree with getting 'in the zone'. As, I've said the guys have a very quick meeting with me in the morning and get to work. They are all free to listen to their own music etc and generally sit quielty all day and code.However, they are working towards a common goal, they feel part of something.Good design for example is a thing you are more likely to get from discussion. A developer could see a problem, interpretate it differently from someone else and be 'in the zone' for a week or worse implementing a less than optimal solution.
Davy
I generally see the common view (and agree with it) that design/architecture should not be done by a team. Design-by-committee leads to a lot of wasted time. If someone is unsure, then asking a co-worker "what do you think of this architecture" is beneficial... but even there it should probably work up the tree. If a piece of design is hard enough the developer can't figure it out confidently, the senior guy on the team should probably be involved.
John
A: 

I am pessimistic that you will meet your goal of confronting your "team" with facts that cannot be contradicted. Empirical studies have been carried out, but people are complex and whimsical. Even if my experiment shows that teamwork has worked wonders, that doesn't mean that the results will translate into your people. The specific character and peculiarities of each individual has a huge influence on the results; so big, that it dominates the outcome.

Hence the old saying of the agile disbeliever: "given a team composed of brilliant developers, who wants an agile method? who wants a method at all?" :p

CesarGon
Thanks - it's not my team - they are huge fans. It's my boss who is not a developer.
Davy
Sorry if I misundersttod, but it doesn't matter. My point is: I don't think you will find objective evidence that proves the benefits of teamwork. Empirical studies are not useful to infer anything from them in this field, and reality is too complex as to approach it from an analytical viewpoint.
CesarGon
+1  A: 

Maybe check the references that Scrum itself uses:

  • (IBM Surgical Team) F. P. Brooks, The Mythical Man Month: Essays on Software Engineering: Addison-Wesley, 1995.
  • Takeuchi and Nonaka. The New New Product Development Game. Harvard Business Review, 1986
  • J. O. Coplien, "Borland Software Craftsmanship: A New Look at Process, Quality and Productivity," in 5th Annual Borland International Conference, Orlando, FL, 1994.

Quoting The Scrum Papers about the Quattro Pro project:

We were prodded into setting up the first Scrum meeting after reading James Coplien's paper on Borland's development of Quattro Pro for Windows [2]. The Quattro team delivered one million lines of C++ code in 31 months, with a four person staff growing to eight people later in the project. This was about a thousand lines of deliverable code per person per week, probably the most productive project ever documented. The team attained this level of productivity by intensive interaction in daily meetings with project management, product management, developers, documenters, and quality assurance staff.

From the same document:

One of the motivating factors in creating Scrum was the Borland Quattro Pro project documented in detail by James Coplien when he was at ATT Bell Labs [2]. Each developer on this project generated 1000 lines of production C++ code every week for three years. In comparison, productivity on the recent Microsoft Vista project was 1000 lines of code per developer per year. The Borland Quattro Project was 52 times as productive as the Microsoft Vista project measured by lines of code.

And another source (added for the links and the defect rate):

One of the most widely regarded case studies of a successful roll out and productivity assessment for a software project, was Borland Quattro Pro that was using Scrum before scrum become a household name. Apparently, the Borland team was able to produce 1000 lines of C++ code per week with a less than 3% defect rate.

...

More links:


More on productivity and team size (I know you asked about studies on team work but, well, Scrum implies close collaboration, as stated in its name):

  • Jones, Capers. Applied Software Measurement, Second Edition. McGraw Hill, 1996.
  • Industrial Strength Software: Effective Management Using Measurement by Lawrence H. Putnam and Ware Myers (1997)
  • Rubin, Howard (Ed.) A Metrics View of Software Engineering Performance Across Industries. IT Metrics Strategies V:9:3, September 1999.

Sources:

Pascal Thivent
Thanks Pascal - I'll have a good look through all of these.
Davy