New Location

My website has moved to http://www.jasonwhaley.com. Please visit there for the latest and only remain here for legacy content.

Monday, March 16, 2009

Bootstrapping a Development Team

I have been trying to have brainstorming sessions lately. Basically, I give myself about five minutes everyday to brain dump tons of ideas on how to solve a particular problem or how to come up with a creative use of a particular tool or platform. One day, I started pondering all of the technologies I would need, outside of personal machines, languages, and developer tools that I would need if I were to bootstrap a development team.

Here's the list I came up with:
  • Essentials:
    • Issue Tracker - You need to have a bug base of some kind when developing software. This can double up as a task management/monitoring system also.
    • Version Control System - I'm of the opinion that no development on any project should be done without some form of version control.
    • Wiki - Use this to encourage documentation of everything.
    • Continuous Integration - Gives your team a one-stop shop and authoritative source for producing and unit testing your builds.
    • Backup solutions and Disaster Recovery plan - Make sure everything that is critical to your project development and release to the outside world can be recovered in less than a couple of hours maximum (and even less depending on what it is that you are doing).
  • Essentials for Web / Server-side projects (since there will be N number of servers to work with):
    • Server Management Tool - Use tools like Puppet or Capistrano to automate as much as you can regarding server setup.
    • Server Monitoring - Central system to handle the monitoring and alerts for when your systems reach an undesirable state (for example, Nagios)
  • Sorely needed, but not deal breakers:
    • Test coverage tool - in this day and age, anyone writing code ought to be aggressively writing unit tests. It is very useful to have metrics to see how effective your unit tests are.
    • Code review tool - code reviews are extremely useful, but also time consuming when done formally. Having them conducted asynchronously in some kind of server side tool would help streamline the process.
I tried on purpose to not mention any specific technologies in this post, with the exception of server management since most folks may not be familiar with what I was talking about. I may do a little "best of breed" or "most bang for your buck" case study later at some point to discuss the various implementations of the aforementioned technologies.

What are your thoughts? What would you include or exclude from this list?

1 comment:

waz said...

Internal IRC or IM chat room. The virtual water cooler since it's unlikely everyone will be working all the time in the same office.