Software Development is a Team Sport


Albert writes about software development and how much teamwork is used [1]. He makes an interesting clash of analogies by suggesting that it’s not a “team sport” because “its not like commercial fishing where many hands are used to pull in the net at the same time“.

I think that software development for any non-trivial project is a team sport. You don’t have the same level of direct coordination as required for pulling in a net (or the rugby scrum [2] to use a sporting analogy), but that doesn’t stop it being a team effort.

Some parts of team development projects are like a relay event, in corporate environments the work is done in parallel simply because everyone is working the same hours but in free software development projects the work is often serialised. I think that it’s often more effective to serialise some work, if someone is actively working on one sections of code it may save time to avoid working in that area until they are finished. There is little benefit in writing code to old interfaces.

Some parts of team projects have specialised skill areas (EG debugging, skills in particular programming languages, and graphical design). Soccer is one sport where different rules apply to different players (the goal keeper can use their hands). In ice-hockey the protective clothing used by the goal keeper is considerably different from that used by other players. In most team sports where the aim is to put a ball through a goal at one end (EG basketball and all versions of football) there seems to be some degree of specialisation, some players are dedicated to scoring goals while others are dedicated to defense. The fielding team in cricket has every player assigned to a different part of the field – with slight differences in the skills required.

Then there is the issue of large projects such as Linux distributions. It seems to me that a Linux distribution will always comprise multiple teams as well as some individual projects. Maybe we could consider Linux distributions (and distributions of the other free OSs) to be similar to countries that compete in the Olympics. The culture of the Free Software (or Open Source if that’s your idea) community can be compared to the Olympic Spirit. Of course the Olympic idea that people should come together in peace for the Olympic Games and that it’s about honor not money is pretty much dead.

Maybe the Free Software development processes should be compared to an ideal of what sporting contests would be if there weren’t unreasonable amounts of money (and therefore corruption) involved.

Of course no analogy is perfect and there are many ways in which this one breaks down. One of which is the cooperation between distributions. There is a lot of private discussion between developers of various distributions and upstream developers about how to plan new features. It’s not uncommon for developers to announce certain development decisions as soon as they are made to help other distributions make decisions – for a developer in a distribution project if there is an issue which doesn’t matter much to you or your users then it’s often good to strive for compatibility with other distributions.

When users advocate new features or changes they sometimes try multiple distributions. It’s not uncommon for a feature request to be rejected by one distribution and then accepted by another. Once a feature is included in a major distribution the upstream developer is more likely to accept it due to it’s wide testing. Then when the feature is in upstream it’s almost certain to be included in all other distributions. I often recommend that when someone disagrees with one of their bugs being closed as “not a bug” that they try reproducing it in another distribution and reporting it there. As a side note, the criteria for reporting a bug in any free software distribution is that you can describe it in a way that allows other people to reproduce it – whether it’s a bug that afflicts you every day or whether you installed the distribution for the sole purpose of reporting the bug in a new forum is not relevant. As a general rule I recommend that you not have the same bug report open in more than one distribution at any time (if you notice a bug reported in multiple distributions then please add a note to each bug report so that work can be coordinated). As a general rule the only situation where I will open the same bug in multiple forums is if I have been told that the responsible person or people in one forum are unwilling or unable to fix it.

Finally, the people who consider that they don’t need to be a team player because they do their coding alone might want to consider Qmail. Dan Bernstein is a great coder and Qmail is by most metrics a fine piece of software, in terms of security Qmail is as good as it gets! If Dan was more of a team player then I believe that his mail server would have been much more successful (in terms of the number of sites using it). However I do understand his desire to have a great deal of control over his software.

Tags: , ,

10 thoughts on “Software Development is a Team Sport”

  1. Albert Lash says:

    Hi Russell – thanks for linking Docunext! I wish I was better team player – but since a kid I’ve been staunchly independent – not by choice, by nature. Even my kindergarten report card ranked me excellent in everything but “needs improvement” in playing with others, sharing with others, and getting along with others. Whoops!

    The “loosely coupled” nature of open source software is perfect for me, I can collaborate with others, without having to collaborate with them! :-)

  2. etbe says:

    Albert: It’s well known that gifted children often prefer to associate with adults and older children rather than children their own age. The school system in it’s attempts to force conformity may be decreasing the ability of more talented people to work with others.

  3. I tend to agree with this except towards the end when making the comparison to Dan Bernstein not being a team player in regards to qmail. In all honesty, it’s quite possible qmail would not be what it is today if he hadn’t kept it closed off in the manner that he did. It allowed him to be independent, keep features low and provide secure code.

    Obviously, this could probably have been done in a team environment but the ultimate decision would probably still lie with him. Anyway, i’m not sure making a comparison like that is fair in regard to overall team player idea.

  4. etbe says:

    Christopher: As I noted in my post I do understand his desire for keeping tight control over his software. He believes that it was necessary to keep the software secure and I have some sympathy for that.

    We can however compare to Postfix, Wietse is more of a team player both in terms of licensing his software and in terms of working with established Unix conventions (such as /etc/aliases for example). Postfix came later to the market but now has a significantly greater market share both in terms of systems using it and distributions packaging it.

  5. Albert Lash says:

    Hello again Russell. I appreciate your writing about this and playing devil’s advocate to a certain degree. I’ve been trying to be more of a team player, but I get discouraged easily.

    If you have a moment, maybe you could share some more strategies for effective cooperation, like above where you mention the ways Wietse licensed Postfix and conformed to established Unix conventions.


  6. pa says:

    (,”)hello…i believe that your article is right about software is a team sport…When i studied software engineering, I’ve learn that in building a software, you need a team because you are creating a whole system. Each member has a rule in building on it…So i guest it would be better to have a team, without it i think it lost the essence of the software! because one person can’t do all the work except when he/she is”Genius”? thanks for the article…good job

Comments are closed.