Ducks in a row

Now, I’m a huge fan of 37signals’ soft­ware devel­op­ment process as laid out in Get­ting Real, but what I’m sure of is that behind all the loose, fast and easy are some pretty rig­or­ous processes to keep every­thing under con­trol. You just don’t get a mil­lion user prod­uct with­out some seri­ous devel­op­ment life­cy­cle management.

The num­ber of organ­i­sa­tions I’m come across that still don’t use some sort of tools for devel­op­ment life­cy­cle man­age­ment astounds me. Imple­ment­ing a few pieces of the entire devel­op­ment life­cy­cle stream is a cheap and sim­ple way of ensur­ing you’re not sit­ting on a tick­ing bomb. I’m not talk­ing about imple­ment­ing some­thing as com­plete as, say, Polar­ion for Sub­ver­sion (any­one out there used Polar­ion, BTW?) or sim­i­lar sys­tems. How­ever, there are a few sim­ple steps any devel­oper or com­pany can take to ensure that they are in less of a posi­tion to bring them­selves undone should some­thing go wrong:

  • build a Linux box — buy some cheap com­mod­ity hard­ware and install Linux (any dis­tro, it doesn’t mat­ter) on it. Make sure Apache, MySQL and PHP are on the box. This will be the core of your toolset. You can get a good enough box for less than US$500. Stick in a decent amount of mem­ory and a big­gish hard drive and you’re done.
  • do backup daily — this needn’t be grandfather-​​father-​​son stuff, but just ensur­ing that crit­i­cal bits and pieces like email, doc­u­ments and code are backed up some­where like on a local server/​tape drive or off­site at Omnidrive or Ama­zon S3. This can be run from your Linux box.
  • use source code man­age­ment — this one’s a gimme, and it’s easy. CVS or Sub­ver­sion are com­pletely free and sim­ple to get run­ning and they take a huge load off the pos­si­bil­ity of los­ing every­thing. They also greatly facil­i­tate code shar­ing and multi-​​developer projects. Install the soft­ware on the Linux box if it’s not already there.
  • have issue man­age­ment — kind of project man­age­ment lite. Installing Bugzilla, or Man­tis or Trac (if you have Sub­ver­sion as your SCM solu­tion) and log­ging tasks, issues and bugs goes a long way to keep­ing on top of where you are at in your project. Install this on your Linux box, too.
  • imple­ment col­lab­o­ra­tion and client man­age­ment tools — I’m yet to find a bet­ter solu­tion than 37signals’ Base­camp for gen­eral (and light­weight) project man­age­ment, keep­ing up to date on where you are at on your mile­stones and stay­ing in touch with clients and team mem­bers. And it starts off free, so you can try it out with­out any cost.

All of these tools are frankly, just as use­ful for one and two per­son com­pa­nies as they are for larger organ­i­sa­tions. The prob­lems are there just as much for small groups and it’s not just an issue for the big guys.

Are you using some/​all/​none of these tools for your projects? What are you using? If not, why not?

Image © Malin­ger­ing. Used under a Cre­ative Com­mons Attri­bu­tion 2.0 license.