Do you have geographically diversified web development teams that operate on different time schedules? Take control over their contributions to your project by utilizing version control and task management software. Increase efficiency and redundancy while creating documentation and organization of changes to the project.
Whether your working on a single website, or a cluster of complex software applications, take the upfront time to standardize the method to control the source code, and task schedule. You will be grateful for this when your lead developer quits, or you hire some new team members.
A version control system (VCS) is basically a running log of all the source code changes within your website. It allows a developer or designer to quickly analyze source code changes and enables them to revert, modify, or delete changes with simplicity.
A VCS will play a critical role in the development of your project when you have various team members, or iterations to your source code. For example, let’s say you have two developers; a lead developer and a entry-level developer. The entry level developer can make changes to the source code, and the lead developer can quickly verify these changes to ensure they are coded properly. The software creates a full account of all changes to all files, and identifies where the changes were made, by who, and when. The lead developer can then accept the changes and push them to the live source code base, or reject the changes and push them back to the entry-level developer to fix.
The real benefit in using this system is it does not require a high level server administrator or developer to manage or use. Anyone on your team can access the source code changes, verify schedule and tasks, and gain some insight into the project from a basic web browser. This is a powerful tool for a project manager or webmaster.
Version Control Software
There are many parts to a version control system. It starts with the actual technology used for managing the source code. A few of the different software applications that are responsible for managing changes are; CVS, Subversion, Git, Mercurial, Bazaar, the list goes on…See a great break down of the different systems at http://www.smashingmagazine.com/2008/09/18/the-top-7-open-source-version-control-systems/
A VCS is the under-the-hood system installed on your server which is responsible for logging all changes to the source code. The next part of the equation is the interface you used to communicate with the VCS. For example, when you upload files to your server, you probably use some sort of FTP client to transfer the files. Much like an FTP client, the VCS interface tool allows you to easily commit, revert, and access the source code base. These tools make accessing the VCS extremely simple for your designers, project managers, developers, etc…
Project/Task Management Software
The project and task management software is the system that makes the changes easily accessible and available for tracking, documentation, and communication. For instance, a project manager can access the entire project from his web browser to verify tasks, bugs, and time logs of his team members. With this information, decisions can be made to prioritize and escalate tasks. This system is the engine behind the management of the project.
Key benefits of using these systems:
- One centralized location to manage all of your projects with ease
- Your projects will be fully documented with the changes and why those changes were made and by who
- Backups of all changes are stored within the VCS, and in the case of errant code, can quickly be restored
- Bug tracking and resolution made easy and efficient
- Task scheduling and resource allocation is tied in directly with work accomplished (source code changes)
- Time tracking per task, project, etc..
So hopefully you now understand the importance of these systems and are ready to take the next step. I am going to outline the systems I use, and why. There are dozens of different configurations, however, I have found that for small teams, with limited Linux experience benefit from the configuration below.
Choose Your VCS
First off, I used Subversion (about 5 years ago). At the time, our code changes were only rolled out to the development server every 12 hours. Eventually, we were able to roll out the changes every 5 minutes, and then were finally able to roll out changes with a post-commit hook (which means someone needed to trigger the system to activate the changes). This was not efficient for our designers who were working on browser compatibility and advanced CSS/HTML code. It killed their productivity because every little tweak they made required 30-60 seconds of extra time to implement. Added up throughout the day, and we lost a lot of time.
Subversion is much slower to roll out changes, as it stores all the projects in a centralize repository. So, whenever you query the system it needs to run through the entire source code base of all your projects to implement the change. If you have a lot of projects/source code, this could cause some major delays.
Anyway, we moved on to a few other systems that were better than Subversion but too hard to use from a Windows system. That is, the interface tools were quirky and difficult to work with.
We finally tested and implemented the Mercurial VCS, which is fast, powerful, and has some great interface tools. It is also very easy to use, and scales well for larger projects.
Benefits of Mercurial VCS:
- Ease of use
- Commits/changes are made instantly (good for designers!)
- The interface tools are well adapted for Windows and non-technical people
- Easy to setup and minimal amount of upkeep/maintenance
- Decentralized system, which stores each project within its own repository
- Advanced tools for branching, tagging and merging source code (for more technical teams)
Choose Your Interface Tool
So if you are using Mercurial, and your on Windows, I recommend using TortoiseHg which is stable and easy to use. It is a shell extension which shows up in your Explorer context menu:
The one downside to Mercurial is that there are no plug-ins for Dreamweaver, which means your designers (if they use Dreamweaver) will have to manually commit files to the repository-they cannot do so through Dreamweaver.
Choose Your Project/Task Management Software
I have used various project management systems; two of my favorites are Trac and Redmine. I first started with Trac, which has some powerful tools, but is limited when it comes to managing multiple projects and source code repositories. That is, they don’t have stable tools to quickly access all your projects, users, and project materials. My server administrator recommended Redmine, which has nearly all the tools of Trac, and then some.
Benefits of Redmine:
- Quick and easy management of multiple projects
- Comprehensive user management/restriction system
- Feature rich (per project wiki’s, defect tracking, time logs, news, document/file repository, threaded bulletin board for team communication)
- Per project and overall activity log
- Customizable fields for defect tracking (severity, priority, status, etc…)
- Excellent search feature
- Excellent usability
- Calendar and Gannt view features
Redmine is a very stable and versatile system that is easy to use and extremely flexible. Try out their demo at http://demo.redmine.org/
This system enables the project manager to see the under-the-hood changes to the project, as they happen. It creates a repository of all communications, and assignment of tasks, as well as establishing a library of notes on the project, which can be saved indefinitely.
Start assigning workload to your team through Redmine, and see how easy it use to use and manage your projects.