skip to main content

TAMU Webmaster's Blog

Information and insight from the A&M Webmasters

Project Management, Version Control, Documentation, and Code Review

April 9th, 2008 by tamuwebmaster

As any developer who has worked with a team knows, coordinating project management, version control, and code review without an effective system in place is most likely a nightmare. As our office expands and brings on new people and projects, we started looking for a solution to control these aspects of application and website development.

We ended up deploying the Atlassian suite of products along with a subversion server to handle issue management, documentation, version control, and code review. The pieces deployed were JIRA for issue management, Confluence as a project documentation wiki, Fisheye to track code change sets over time, and Crucible to do code reviews before applications are deployed. Subversion is a widely used open source version control system that makes tracking changes to non-binary files over time fairly easy.

JIRA is probably the most important piece of software we deployed. It allows us to define all of our projects, add issues to the projects, and assign the issues to people on the team. This helps mitigate confusion when multiple people are working on one project. It also helps us track how long tasks take us, what state they are in (open, in progress, resolved, or closed), and who worked on them over time. For example, this blog post is issue BLOG-5, and I probably would not have remembered to write it had it not been on my active tasks list. JIRA also has the ability to check an email address and automatically create issues from items in the inbox. This allows us to give our customers an email address to send bugs, new feature requests, and updates to so that they automatically generate issues for us to work on. JIRA is easy to use and in my opinion is one of the most vital tools in any development team’s toolbox.

Documentation is another big issue on most applications. There is typically developer documentation and end user documentation. To handle this, we have set up Confluence as a documentation wiki. This allows us to modify documentation collaboratively, with change tracking, so we know what happened to a project over time. It also gives us a central place to edit this documentation so we don’t have 20 different copies of the same word doc floating around on a shared drive somewhere. Finally, we have public URLs for our customers to access so they can always find up to date documentation on our websites and web applications. Besides saving a lot of paper, it allows our customers to collaborate on their end by using a commenting system. Finally, Confluence has been configured to link back to JIRA issues so that the two systems work together and a comment on the wiki may lead to the creation of an issue in JIRA.

Finally, we have code review! Code review, for developers, is a vital part of the development process. Writing code all day long is error proned and developers do make mistakes sometimes. Having a system in place that makes it easy to allow other developers to review – and comment – on your work is critical to help mitigate errors and security problems. For this piece we installed Crucible and Fisheye (they come as one package). Crucible allows you to take a revision in subversion and create a review for it. The review is then assigned to another developer where they can make suggestions and comments within the code and send it back to the original developer. This does not change the actual source code so the original developer still has discretion about what suggestions to take and which to discard. Finally, when the review is complete it can be closed. And did I mention that Crucible also links up with JIRA so that checked in revisions and reviews related to a JIRA issue can be tracked directly within JIRA? Again, invaluable to a development team of more than one person.

Fisheye is a small piece that makes looking at revisions within a code base over time easy. It puts a nice web interface on a subversion server and allows the user to look at differences of files across revisions. This is a nice finishing touch that works with JIRA and Crucible.

All in all, the Atlassian products have helped us coordinate our efforts, use our time more efficiently, and distribute the work load of projects evenly. It makes our projects more robust through code reviews and allows us to document our changes over time by using a wiki.

If your shop isn’t using something like this, it may be about time to take a look at this. We are also hoping that once we get our systems fully set up in the Atlassian products, we can open a public side to it with campus wide code. For those of you accustomed to the mailing lists and long winded threads about campus wide code (CAS, Shibboleth, LDAP, etc), this should provide a much needed solution all around.

Wednesday, April 9th, 2008 Future Projects, Miscellaneous
Share this article

1 Comment to Project Management, Version Control, Documentation, and Code Review

  1. Thanks, the review was helpful. More in the concepts of management of projects.

  2. dial up internet guy on March 5th, 2009

Leave a comment