Monday, August 3, 2009

Kanban vs.JIRA

Some time again I wrote a post, SCRUM vs. JIRA, where I tried to reflect on the difference between the SCRUM and the JIRA project model. Here I argued that SCRUM was based on a number of somewhat fragile preconditions, which made it very difficult to complete sprints successfully. The JIRA model on the other hand is a more 'fundamental', methology neutral breakdown of a projects dynamic aspects, and therefore much more robust basis for a project, where higher order project management frameworks like SCRUM, XP, Unified process, etc can be added.

Now let's take a look at Kanban, which has been recently appeared as a software development framework, to address some of the challenges Scrum is facing. Many of the Scrum related concerns mentioned in the motivation for introducing Kanban corresponds to the list of fragile preconditions I have listed in the SCRUM vs. JIRA posting. Just as I tried to argue in my case for using JIRA as the project model fundation, the Kanban approach to task handling is concerned with focusing on the fundamentals of the development proces, where more ambitious proces frameworks might be constructed (See f.ex Scrum-ban). Let's try to run through the list of Kanban focus areas, and compare these to the task aspects found in JIRA.
  • Task processing: In Kanban the central concern is the efficient processing of tasks, that is the pipeline Open -> In progress -> Resolved. JIRA users will recognize this process as the default JIRA workflow, and this is exactly what JIRA basically is, a application for registering and listing issues/tasks as they move though this lifecycle. A lot of higher order concerns may of course also be modelled in JIRA, but this is optional and can grow together with the project methology as the development process matures. In fact in many cases JIRA is introduced just for this purpose, someone in a project/organisation feels a need for a simple tool for registering and listing the things that needs to be handled in a more robust and shareable manor than by using post-its, simple todo tools, mails, etc.
  • Task exposure: Just as in Scrum, the main visible artifact is the whiteboard (which is the original meaning of Kanban by the way) containing the tasks which are currently being processed. This functions as the task model 'altar' we gather around, synchronize our views of the projects and maintain the models together. This corresponds to JIRA collaborative approach to task management, where the project issues are access through a user-friendly website where all project team members can view and contribute to the model. Note: this is in opposition to many of the more conventional task management tools like MS Project, Excel, etc. where the task management is owned and maintained by a Project Manager, with the occasional showing for the rest of the team.
  • Task pulling: One of the main differences between Scrum and Kanban, is that Kanban focuses on the team choosing which tasks should be processed next (pulled), compared to Scrums empathize on the product owner defining (push) which tasks should handled first (backlog prioritizing) and handled in the near future (sprint planning). Note, this isn't necessarily in contradiction with each other, the task pull and push mechanisms can coexist on two different levels in the project, task pulling is a daily activity, where task pushing is a done on a longer term basis. The Kanban push approach is again seen in JIRA's collaborative approach to updating the status of tasks, where project members 'pull' issues from the pool of open tasks. Any partitioning or prioritization of the open issue pool is a higher order concern, and isn't necessary for maintaining a working task model.
  • Minimizing 'In progress' tasks: This isn't really addressed in JIRA, even though JIRA is a very efficient tool for monitoring this, the 'In progress' list is directly accessible from the project portal page. The problem of building a efficient way of resolving tasks in a consistent and predictable manor, is one of the core software development challenges which Kanban centers around. The mechanisms for handling issue resolution must be found in other tools and human work process, but are crucial for achieving any kind of project success, and certainly for any hope of extending the development process with any kind of more advanced project management methologies (like Scrum).
Now let's take a look at the problematic preconditions I listed in the SCRUM vs. JIRA post and see how Kanban performs compared to Scrum.
  • Stable team: The impact on a Kanban project because of a unstable team is much smaller than on a Scrum project, because a Kanban team doesn't need to concern itself with the sprints failing. The number of tasks processing may become slower, but this is not necessary a problem in Kanban, the decreased velocity can be addressed on a continual basis by adjusting the amount of work in progress. The ability to process tasks may suffer from key competences disappearing from the project in a Kanban project, and might cause difficulty in finishing any tasks in a satisfactory manor, so the Kanban flow might break if this is the case.
  • Stable sprint backlog: The stability of the backlog isn't a Kanban concern, because no predictions is made on when chucks of functionality (sprints) are finished.
  • No external dependencies: Kanban task may of course also depend on external issues, but in Kanban it it much easier to mitigate any problems arising from this, because of the lack of sprints, eg. a task can be rotated out of the 'In progress' pipeline when a 'external block' appears without much interruption to the task processing itself.
  • Clear goal: Not relevant, a clear goal is not a Kanban concern as this is a sprint/iteration concept.
  • Small, well estimated tasks: Essential for Kanban, but this is ok as this is a fundamental precondition for building any kind af predictability into a project.
  • Visual results: Not a Kanban concern, even though it might be a good idea in using this development aspect to assess the task resolution.
As it can be seen, the project requirements needed to get Kanban working efficiently are much more basic than for Scrum, and much closer to the core set of issue management concerns handled in JIRA.

The two constraints which still appear in the Kanban list are that a minimum set of team competences are required and the ability to breakdown work into small, correctly estimated tasks are need. This is pretty much the most basic capabilities you can add to the JIRA issue model, and still get added value in terms of project management. This means that a well-functioning Kanban process is a much more achievable goal than aiming for a Scrum based work process, and will make a robust platform for introducing more advanced methologies, like Scrum. If you on the other hand haven't got the basic issue management aspects addressed in Kanban under control, it will be impossible to get the planning and functionality oriented aspects of Scrum to work, and it will be hard to focus on the real problems in this case, because the symptoms in a Scrum based setup will be much more diverse, hiding the real problems causing the process to break down.

As you might have noticed, I really like Kanban's more basic approach to what lies at the core of good task management (and therefore project management), which introduces a better cause-effect mechanism into software development. This hopefully results in a much improved ability to focus on the projects root causes, compare to more complicated process frameworks.

In a JIRA vs. Kanban context, I also see the issue model found in JIRA much more recognizable in Kanban. This means a good understanding of Kanban and its relation to Scrum, could function as a nice bridge to implementing a smooth 'JIRA -> Kanban -> Scrum -> CMMI focus process' transition as the development process matures (inspired by the process complexity scale found on page 8 of Kanban vs. Scrum).

11 comments:

Agustin (Cucho) Villena said...

Hi!

I implemented JIRA last year trying to implement an agile model over it. First Scrum, and then Kanban. The great limitation of JIRA was its "PUSH" oriented workflow. I didn't found any simp,le way to model the queues that the team can use to pull task from.

Any hint?

Mikis Seth Sorensen said...

Hi Agustin

After starting on a reply to your question, my response kind of exploded and developed into it's own post, see the following 'The feature -> task conversion' listing. Even this rather lengthy rattle on the problem of backlog maintenance, only scratches on the different challenges hiding in the apparent simple concept of a task queue.

I think the apparent difficulty of many peoples trying to use JIRA for task management, is that JIRA isn't 'just' a task management tool, but contains the full complexity of a projects issue model, which is a much larger thing, than just the task model. But as I've tried to argue in the 'feature-task conversion' post, this complexity must be addressed in a project. A simple one dimensional queue doesn't materialize from this JIRA model, but this reflects the inherent complexity of task management.

Venky and Vidya said...

How about Fogbugz. Dont you think for a Kanban project Fogbugz is more adaptable than Jira. I havent used Jira personally...

Mikis Seth Sorensen said...

Hi Venky

I haven't personally got experience with Fogbugz, but on the surface it looks like its approach to handling project information, like tasks, is similar to Atlassian, the producer of JIRA.

I'm sure there is a lot of great issuetrackers out there, which can heavily contribute to the efficiency of a teams task management in a Kanban or Scrum context. But the problem of how to maintain a good queue or backlog containing 'ready for work' tasks remains.

I think to get closer to an answer to what the problems are when using JIRA (or other issuetrackers) in a Kanban setup, we need to be more precise in exactly what challenges you face. What are these?

If the problem is modeling a simple 1 dimensional task queue (which has its own problems, see the 'Feature -> Task conversion' post), there exists plugins for JIRA, like GreenHopper, which provides this functionality.

Dan Wilson said...

Hi Mikis,

You should try Stefan Rusek's Kanban Plugin for FogBugz!

http://www.fogcreek.com/FogBugz/Plugins/plugin.aspx?ixPlugin=15

PM Hut said...

Mikis,

I have published an excellent article on Kanban: Kanban - The Next Step in Agile Revolution a month ago. I invite you to read it whenever you get the chance and maybe add your opinion as well!

Mikis Seth Sorensen said...

Hi Dan

JIRA also has the possibility of modeling a Kanban board by using the GreenHopper plugin. But this still doesn't solve the problem of maintaining an efficient task backlog.

Sonica said...

Hi there, awesome site. I thought the topics you posted on were very interesting. I tried to add your RSS to my feed reader and it a few. take a look at it, hopefully I can add you and follow.


Scrum Process

Unknown said...

Hi

I think that the best way is to replace "Kanban vs. JIRA" with a "Kanban & JIRA". I use an online kanban board KanbanTool along with JIRA. Check out Kanbanira - a Google Chrome extension that allows you to synchronize KanbanTool tasks with JIRA issues).

Unknown said...

Not very sure about Kanban but am very much aware of JIRA and would love to work with the same if ll get a chance specifically. The tool that I am currently using is also similar like JIRA and is the cloud based Replicon's task management software - http://www.replicon.com/olp/task-management-software.aspx. The features are almost similar like Kanban and is pretty cool tool to work with.

Anonymous said...

I already worked on many management software. Currently I am working on My Task Management System, which is Task Management System.