Blog

“The Myth of the Genius Programmers”

Posted by A_Jelly_Doughnut in Development on April 17th, 2010

A real-life friend passed this link to me yesterday, and I thought it was appropriate to share with the phpBB community, since it deals, in part, with the development cycle of open source projects.

The link is a talk sharing a title with this blog post, given by two Google engineers at their I/O 2009 conference.

When they began to talk about the “bus factor” of a project (around the seven minute mark), my ears perked up a little bit, because, for the lifespan of phpBB, we’ve had a pretty darn low bus factor.  If we go back to the code swarm released last summer, we see that most of the time, developers simply huddle around one lead contributor.

That lead contributor has been our “bus factor” of one.

Moving forward, we really want to get the bus factor much higher.  We are working to achieve this in two main ways:

  • Writing more unit tests to help define what individual functions should do
  • Writing further specifications to identify what aspects broad features should have

Also, with our switch to JIRA and Git, all developers patches are available (at least briefly) for external review even before they make it into the main “develop-olympus” version control branch.

We’ve expanded the development team as well.  We recently added nickvergessen and rxu to the development team, to bring our ranks to nine, the largest phpBB development team in my memory.

If you would like to help, initial documentation on writing Unit Tests is available on our Wiki and we would really appreciate your help in increasing our coverage. If you have a patch with new tests or a bugfix just create a ticket on our tracker. If you would like to participate in the development process of phpBB 3.1 or phpBB 4, go to area51 and post your ideas, RFCs or present patches for new features for discussion.

12 Responses to ““The Myth of the Genius Programmers””

Posted by SamG on April 17th, 2010 at 3:42 pm:

Very interesting. Thanks for the video, and for connecting the dots. Right off the bat, this documents project weaknesses. Well done. 🙂

Posted by T.Ransome on April 19th, 2010 at 2:20 am:

Great video. I’ve been learning php,SQL,Java, etc.. for quite a while now on the side from my RL job, and Getting help from other experienced coders can be really hit or miss. Mostly it’s miss due to either embarrassment or Ego. Ego is probably 90% over embarrassment.

The biggest problem with Ego is usually “I did it First!” guy. Most likely you didn’t do it first..most likely you just created something from another batch of code and just claimed it as “The First!”

Posted by sajaki on April 27th, 2010 at 11:44 am:

this is so true. alot of opensource has such a narrow developer base actually working on it that any worldshaking outside event puts a damper on progress. but the real question is, how do you increase the bus factor and attract new or keep existing developers interested in your progress?

Posted by Highway of Life on April 28th, 2010 at 8:38 pm:

Interesting video. Although I do not agree that phpBB has a bus factor of one. The idea of the bus factor is that if the bus hit that developer, basically the project could not go on. But this is not the case with phpBB. There is no one developer that is holds the ‘key’ (so to speak) of the code. If he left, or ‘hit by the bus’, then someone else would take over, and the project moves on as normal. The main thing that you may lose is leadership and the contributions that the person provides.

So no, phpBB has a bus factor somewhere around 10.

Posted by A_Jelly_Doughnut on April 28th, 2010 at 10:15 pm:

To me, the video doesn’t imply that it would leave the project in a “world of hell”, it implies that the component written by that developer becomes “abandoned.” Maybe the new developer taking over that section of the code thinks that the code written by the old developer is no good, or, worse, doesn’t understand it.

phpBB does have that problem because one developer has generally written large sections of the code (Acyd Burn wrote much of the private messaging system in Olympus, Graham wrote much of the installation and conversion system, etc.)

Any one developer leaving is not a disaster for phpBB (it happens all the time), but finding someone who wants to be the “primary caretaker” for a certain component can be challenging.

Posted by Highway of Life on April 29th, 2010 at 12:51 am:

“The bus factor is an irreverent measurement of concentration of information in a single person, or very few people. The bus factor is the total number of key developers who would need to be incapacitated, as by getting hit by a bus, to send the project into such disarray that it would not be able to proceed.” – Linus Torvalds

In the video, that is exactly what they said: “The bus factor is the number of people on your software project that have to get hit by a bus that are going to leave you in a world of hell.

If there is only one person that knows that really obscure file system code and they get hit by a bus.” What kind of impact would that have on the project. If that person knows some specific key piece of information to the code or the project, that would make losing that person difficult for the project to move on. Then that person is part of the Bus Factor. phpBB has no such person.

phpBB’s bus factor is huge. Even if the entire phpBB Development team got “hit by the bus” (which can take several forms). It would be easy to get a new team to replace them. (Although time consuming to go through the “process” of replacing the team). The time it would take for the new developers to get “up to speed” would be quite short. You could easily pick 6 people out of the phpBB community that are not part of the phpBB Teams that could do it immediately.

Posted by A_Jelly_Doughnut on April 29th, 2010 at 2:33 am:

In the sense that anyone is replaceable (and easily), I agree. phpBB does not have a bus factor in the same way that “Four Guys in Omaha Web Products” would.

The point behind bringing up the bus factor (and the history of it being very low at phpBB) was to point out that we want to increase it, no matter what its numerical value is now. If its infinite now, then let’s make it infinity plus 1!

Posted by Sajaki on April 29th, 2010 at 10:21 am:

i think the article doesn’t really apply to phpbb, but it does to mods. for example my project has a bus factor of about 1.5. (http://www.bbdkp.com/viewtopic.php?f=26&t=1560)

Posted by Highway of Life on April 29th, 2010 at 6:50 pm:

+1 A_Jelly_Doughnut. That is a good point.

There are a lot of MODs that have a bus factor of 1, for many of our projects, we have a bus factor of 2. But… many may be too small to worry about anyway. So even if the bus hits those people, while the project won’t go on at all, it won’t affect too many people’s lives.

Posted by zoe on May 17th, 2010 at 2:25 am:

Great video. I’ve been learning php,SQL,Java, etc.either. Ego is probably 90% over embarrassment….good feeling.

Posted by Cheyne on May 27th, 2010 at 8:27 am:

Great video…rings true for what i am doing at uni atm. Im not a coder but our group assignments bus factor is horrible. Everyone tends to be given a part and they only focus on it.

The main issue i think with having everyone in projects aware of every aspect of that project is the time constraints. I believe a healthy mix of team and individual productivity is the key to a solid project.

Thanks again for the video, I will pass it on to my other team members in the hope it stikes a chorde haha 🙂

Posted by Old_ex_Coder on May 28th, 2010 at 2:06 am:

FEAR OF FAILURE exists in most of us at various times in our lives. I will not bungie jump – I fear the cord will break or stretch. It’s silly, but true. This is a manager’s test – can she create teams that will allow risk taking without fear? Why are we asking software tools to fix this? It’s a people problem, and can best fixed by other people.

I heard a lot about writing code without hearing about the design and functional specs. These specs are what drive the code, or else it’s worthless. Code can generally be divided into 2 main groups – that which can be used again and again, or code which is very specific to a project. I can’t imagine code writing without a very detailed design model which incorporates the needs of the user stakeholder!

This topic has been kicked around since the 70’s, and will be until robots do the coding. It’s a team management issue, and a good manager is a people person, not just the “best” techie.

Commenting is disabled for this blog post