Defending Against the 2nd Worst Developer
Tags: 
Date: 30 April, 2009 - 04:39

A few months ago, I heard an interesting idea about the 2nd Worst Developer.  It's wrapped up in a simple statement:

... the quality of a software system is proportional to the skills of the second worst programmer

While at first pass, that may seem to be a silly statement, but here's why:

... everyone on the team knows who the worst programmer is, so senior developers are closely monitoring everything that he does and cleaning up problems. The work of the second worst programmer is not monitored with that attention so he has the chance to do some real damage.

On small teams with short projects and even shorter deadlines, this problem is multiplied.  Not only are you dealing with overlooked problems, but you're dealing with less-than-perfect decisions consciously made to "get it launched".  Now you have two problems that compound on each other... Brandon Savage covers this one well in "Paying Down Technical Debt".

But what if you had a way of preventing technical debt in the first place?

Well, obviously you've hired the top 1% of developers so how can we improve things without firing everyone and hiring new people?

Food for thought:

- Oddly enough, everyone claims to have hired the top 1% of developers...

- If you hired the people you just fired, what makes you think you can hire better people next time?

While many teams have solved this problem backwards and fowards, it's worth considering and working our way through again...

I do (and recommend) three things as a starting point:

First of all, as my friend and colleage Cal Evans (aka Mr April) says, every developer should read every commit message.  When I was with WhyGoSolo, at its peak, we had a team of 7 developers each working on different parts of the system which often interacted with one another.  Once we went into Feature Freeze for a release, we had a simple rule: every single commit had to be "blessed" by another developer.  It made sure that someone was looking over someone else's shoulder.  As a result, I believe only a handful of bugs made it into production.

Second, there are a handful of nifty things you can do with Subversion Commit Hooks as Matthew Turland shares.  While it doesn't seem like much at first pass, it's very handy to know there are zero syntax errors in the PHP within our repository.  That doesn't mean there are no bugs... but it ensures that any bugs are logical errors as opposed to typos.

Finally, I make sure to commit frequently to Subversion.  Every time I've fixed a specific bug, cleaned up some code, or implemented a new feature, I commit.  It means that at any given time, no matter how I've screwed things up, I can roll back to an old known-good version.  Even more importantly, by keeping every commit atomic, I limit the set of changed files to the scope of what I'm currently working on.

There is plenty of room for improvement in this scenario: Unit Test, Continuous Integration, etc...

Any other suggestions or creative things you've seen?


Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.

About hiring developers...

I'd say the main problem is that developers often don't get hired, or at least interviewed and approved, by the (technical!) people / devs that'll end up working with em.

Maybe you got a different experience, but I, unfortunately, never worked with any of the top 1% developers... ;-)

Top 1% of Developers

I meant it partially as a joke... there are numerous companies that all claim to only hire the "top 1%" of developers. Since collectively I believe they have more than the top 1% employed, I suspect they're wrong...

@Olly to work with the best

@Olly to work with the best you need to be the best ;)

standard

all of this is pretty standard, but merits to be reminded :)

Not all that standard

Unfortunately, you'd be amazed at how many groups don't run with any Quality Control processes whatsoever... no testing and no code review.

There are still quite a few that don't even use Version Control...  :(

Git has support for this:

Git has support for this: There's a feature called 'signed off by', which means that your commits can show two users: one who wrote it, and the other who approved it.

Works especially well for public projects which accept outside patches. You can tell that one of the people who 'knows' the code vetted the patch.

Post new comment

The content of this field is kept private and will not be shown publicly.
  • Allowed HTML tags: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd> <br> <img> <p> <blockquote> <strike>
  • Lines and paragraphs break automatically.

More information about formatting options