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.
What are your thoughts? What would you include or exclude from this list?
1 comment:
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.
Post a Comment