Should your software build role be a separate person?

Are you asking your software developers, or maybe your testing team, to take on the build role as well?

Lots of companies use their software developers to do all the support work for their software team. This approach works for a small team, especially when you are in a pre-release stage for your software. However, as the team gets bigger, you should consider getting a dedicated build person. How big? I think you should start asking questions if you have than more than 5 software developers.

Here are some questions to consider asking:

  • Are developers responsible for version control tasks (Software Configuration Management – SCM)?
  • Are developers producing customer builds at their desktop?
  • Are developers packaging the software?
  • Are developers distributing software via web or FTP sites?
  • Are developers responsible for one or more servers?
  • Do they have use extra computers at their desks as servers?
  • Who backs up the source code and the project files required to build the software?
  • Do you know how much of their time is spent on these activities?

In a team of 7 developers with two servers, these activities can easily total 40 hours per week spread over several developers, and more during release periods when the team needs the developers working on final fixes.

Some more questions, this time just about builds:

  • Do you have a web interface where any member of your team can kick off a build on the build server or run a specific set of automated tests?
  • Do you have automatic compiles on checkin on development and release branches?
  • Do you use dedicated Continous Integration (CI) software, maybe even on dedicated servers with a cluster of test machines running tests in Docker?

You want your developers to know as soon as possible when their checkin breaks a build or fails a regression test. A dedicated build person can make time to install free or commercial software dedicated to this task. Free software in this area includes Cruise Control, Hudson, BuildBot, and CABIE.

Repeatability:

  • Can you rebuild the software as it existed when your last two releases were made?
  • Do any of your customers use older versions, and can you rebuild those versions?
  • Can you apply fixes to those releases and re-release with the patches?

You probably can’t do this if your builds are made on a developer’s desktop, and it is not reasonable to expect to be able to. Release branches, bug fix branches, a central build server, and configuration management of the build environment are all required.

Packaging:

  • Are you delivering with the optimal packaging you want?
  • Are you building for more than one platform?

Software configuration Management (SCM):

  • Do you have separate development and release branches?
  • Have you migrated from CVS (or SourceSafe) to SVN or Git yet?

A dedicated build person will learn your SCM software well enough to be able to help your developers when needed, and deal with merges, tagging, and branching. If you are still using CVS or Microsoft SourceSafe, you may want to migrate to SVN or Git. The advantages are significant.

Summary:
A dedicated build person, or more than one, makes sense as your build system and your development staff get larger.

 

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s