As a project manager for a software development team, there are several tools that I can’t live without. Whether your development team contains 2 people or 200, these are tools that should be in every development toolbox.
Code Versioning
Is versioning even a word? In any case, any development team, whether working on a grand scale project for NASA, or a simple website for your mothe’s friends neices husbands business, keeping track of changes within the code is a MUST. There are several different methods for version tracking within your codebase. One is to always save your file with a different name. But most people nowdays make use of Subversion.
We use subversion for our code repository, and it has made things so much better in terms of day-to-day workflow. When we started our project, it was just one developer working, soon we added another developer, and things got sticky. Our code management system was FTP, and our developers both connected to the production server to make changes directly to files. Sometimes both developers would have the same file open, and one would overwrite the others changes.
Needless to say, we had problems, and it was frustrating, and a very bad way of managing a project. Even though I enjoy learning new technologies, and configuring servers, I needed a pain-free way to quickly and rapidly get a versioning system online and in use. That is where Jumpbox’s Trac system came to save the day. A quick download, simple configuration, and we were up and running with subversion and trac that afternoon.
Issue Management & Bugtracking
So now we have a code repository, but we don’t have a way to track issues, bugs and tasks. (Well, trac has a built in system, but it’s pretty clunky and didn’t meet our needs).
Everything in our project to-do list was up in my head, and our roadmap existed in various versions on the whiteboard in my office. Bugs were sometimes fixed as they were found (if found by a developer), or were lived with until they were fixed. Email and instant messenger were the means to communicate tasks and feature requests for the application.
Things were pretty disorganized and I became frustrated as I was repeating myself and doing things multiple times between my whiteboard, emails, IMs, and various conversations with my development team. We needed a management system desperately, and that is where Redmine came to save the day. Redmine is a simple project/task management system. We were able to input bugs into the system, create new tasks, assign issues to upcoming versions, and finally have a comprehensive roadmap for where we were heading.
Since Redmine is a Ruby on Rails app, and we are a PHP development shop, I didn’t want to have to mess around with a RoR platform. Thankfully, there was the Redmine Bitnami Stack. This allowed me to quick set up a Virtual Machine and install the bitnami redmine, and that same afternoon we had an issue management app up and running.
Now whenever my developers and I have a brainstorming session for features, each idea gets added as a feature request, and assigned to a “very far in the future” version. We then reveiew feature requests and re-assign them to upcoming releases. We also set up an email box that redmine monitors for new bug requests. So our users can simply shoot an email (or the system can send an email if it detects an error anywhere) and we now have an active growing to-do list.
And Finally…
With a good code versioning system, and an issue/task management system, the only other thing a good project manager can’t live without… is good developers!