Sunday, December 9, 2012

Control Change and Projects with JIRA

Why do we need to control change?

Ever been in a software development project where the scope continually creeps, the budget is ever increasing and the time plan is slipping? If this seems familiar you are probably already familiar with the importance of Change Control in software development projects. In projects with weak change control we can see that changes are often accepted into the product by a number of stakeholders, there is often difficulty in tracing decisions taken to include changes and as a result the project can lose direction. Ultimately this is very costly for the project and in extreme cases can lead to the failure of the project, where we end up delivering something which does not meet the requirements. Tracking changes during a software development project is both essential to the success of the project and the long term life of a software product. This is not an easy task, but change control/project management tools can reduce risk and help keep your project on time and budget as well as keeping your product in shape.

Change Control Tools

I have worked with a number of tools for Project and Change Management since 1995. These have ranged from "in-house" developed systems to well established open source and commercial products. Most recently I have worked with Bug Genie and Microsoft's TFS. Around 8 months ago we switched over to JIRA to help us with product planning, project planning, project tracking and change control.
I immediately liked this product. It is easy to use, configurable, and provides advanced features without imposing these complexities on the user if they are not required. In virtually no time we had our project setup, the team members added, we were logging change requests and organising them into product releases. An added benefit is Green Hopper (Agile Tools), which comes as an add-in module. If you are running an Agile or Iterative and Incrementive development model this is a must.

Installing and Getting Started

Installing JIRA is pretty simple. If you are looking to evaluate you can download the installer from the download page and install. The installer gives an option to install with an embedded database so you don't need to bother with setting up a database instance. If you are installing a production instance of JIRA you will want to use a proper database instance. The major database vendors are supported, for simplicity we used MySQL. After installation it was just a case of opening up the web browser and logging in.

Once you are in you can start configure JIRA by setting up users and creating a project. This is done in the  administration console. There are a large amount of configuration options, but these are well organised so it is pretty easy to find what you are looking for.

For example, we can see the User Management console above. Here we can add users and modify their properties. Users can be assigned to different project and have different roles. This provides a good deal of flexibility, you can create a role for end-users and they can report issues directly into JIRA. So once the users and project are setup you are ready to go to work.

Doing the Basics

After logging in with a user account we can start creating tasks, improvements and bugs. Creating and editing issues is intuitive and allows for assigning a good number of useful fields on each issue. These fields help with management  and make issues easy to find.
Another core part of JIRA is the issue search function. This comes in two flavors, the simple search allows you select the most common search fields and give conditions for the search. The advanced search allows you to specify searches using a query language similar to SQL. This is a really nice feature and what is impressive is that there is an intelli-sense feature which suggests the field names you are looking for as you type. The intelli-sense can even suggest the possible values of the field you are searching for. Altogether this gives you a very powerful feature for searches and your searches can be saved and re-used.

Product Management

A JIRA project can be thought of as a collection of issues for a specific Product. A smart feature here is that you can define the planned releases for your Product and even break down your product into components. Issues can later be assigned to releases and components. This is a nice way to manage your product releases since you can assign issues to a specific release, this is very useful in retrospect when you want to know which changes you have made to which release. Releases can be released to production or planned.
On the project dashboard you can also see the Road Map for your releases so you get an idea where you are in the long term development life-cycle. To save time when you are in the process of a release JIRA also offers automatic generation of release notes.

Working with Green Hopper

Green Hopper is a plug-in to JIRA for supporting Agile projects. This is perhaps the absolute best feature of JIRA. Of all the time I spend working with JIRA 80% of it is spent in the Green Hopper. Don't be misled by the term Agile, you can use the Agile tools even if you are working in an "Iterative and Incrementive" Waterfall model. It is pretty easy to use, issues are added to a Backlog,  plan your Sprints (or Iterations) and then you can use a Scrum Board to work with your Sprint. Both Scrum and Kanban are supported.

The Scrum board is very easy on the eye, and clearly represents which issues are not started, which are in progress and which are finished. The interface supports drag and drop so you can simply drag activities between the different columns. Another advantageous feature here is that "swim lanes" are supported. This allows you to clearly separate issues based or a status or a field. I use "swim lanes" to clearly separate "blocked" items. This way I can clearly see problem areas in the project. Each issue is easily editable from this page. You can add comments and manage Spent and Remaining Time. Another area which is important is the tracking project time to make sure you meet your deadline. A "burndown" graph is commonly used in Agile methods to show whether a Sprint is on track for delivery or not. This does rely on the team members regularly reporting "Remaining Time" on their issues but this is a very worthwhile as it clearly shows the team the status of the project. There are other graphs available, for example the issue flow in the Sprint. This helps visualise how the team is working and shows if we are trying to work with too many issues at a time.
Each JIRA project allows you to create a number of "Boards" where you can filter the back log and create Sprints. We can even create parallel Sprints, so if you have a large project and have a number of teams in the same JIRA project, each team can work in their own Sprint.

Other Nice Features

JIRA has a wide range of reports which can be automatically generate on any project. If you are a project manager looking for a quick status on your project these will help reduce your administration and help steer the project. JIRA allows us to create a number of dashboards from a library of "Gadgets". These are generally a collection of graphs, statistics or status summaries regarding the project. This is a great way to remind the team how the project is doing, or even create an overview of a number of projects.

Licences

JIRA has two licencing models, "On Demand" and "Download". The "On Demand" solution is a subscription based model which is hosted on the cloud. So no installation or maintenance is required, just login and use. This model is based on a monthly subscription starting at 10$ per month for 10 users. The "Download" model is a host your own model. Download JIRA, set it up on a server and maintain it in your own organisation. This is a one time licence cost starting at 10$ for 10 users.
It's pretty cheap to get started but the licence cost rises more steeply after 10 users, however I find the pricing reasonable. More information regarding JIRA pricing can be found at http://www.atlassian.com/software/jira/pricing.
*( Prices given above were taken from the JIRA web site 2012-12-09.)

Conclusion

Over the years I have used a number of Change Control and Project Management tools in IT projects. Since starting with JIRA I can honestly say that this is absolutely the best application I have used for Change Control and Project Management in an IT environment. It makes a significant contribution in making information available to the team and makes project planning simpler. It allows the product owner to effectively manage change requests and issues but more importantly allows everyone to gain a real-time status on the project. Problems, showstoppers and blockers are all clear to the team and this means that action can be taken much faster and with the correct priority. The support for Agile methods is really good, it is easy to use and doesn't force you to use all aspects of the Agile model, it can also be used even if you are using an Iterative Waterfall method.
JIRA is reasonably priced and I think if you have a significant requirement for change control and project management it would justify the investment cost. If you consider the amount of time to be saved on reports, administration and team communication the ROI (Return on Investment) can come pretty quick.
In short JIRA gets a big thumbs up from me, and is a product I would recommended for organisations working with software development.