Design Before Coding: Kanban

The first post in this three-part series focused on gathering requirements before spending time coding. While it is not necessary, I recommend that everyone read part 1 (Gathering Requirements). Understanding and having clear “User Stories” outlining the intended purpose of a tool is crucial, especially as we move towards building our new tool.

Once our “User Stories” have been defined and agreed upon by all stakeholders, we then need to begin breaking them down into tasks. There are many different methodologies that allow us to track these different tasks. Part 2 of this three-part series will focus on one of them; Kanban.

I use Kanban daily, both personally and professionally. If you want to understand the principles of Kanban, then I recommend that you start with this Wikipedia page. No matter what methodology or process you use, having a consistent and repeatable utility is a must.

This post will go over using Kanban both digitally and manually, but first you must understand the general purpose of Kanban. Tracking our work can be difficult, especially with the use of E-mail, Slack, Skype, Teams, Yammer, HipChat, etc. etc. The constant communication that is available to us is overwhelming, but having a central location that you can organize your “To-Do’s” or tasks is necessary. Not for our management or organizations tracking purposes, it is so that we can track exactly what we need to do next.

The theory of Kanban is to visually identify items that need to be worked on. Kanban allows you to understand what tasks need to be worked on, which ones are in-progress, and which ones are complete. Using this information, we begin to identify any blockers or obstacles that may need to be fixed so that an item/task can move from “To Do” to “Done”. This principle helps us identify our WIP (Work in Progress) so that the flow between “gates” or “hand-off points” is as smooth and controlled as possible. Think of this like an assembly line:

Let’s say we have two workers in an assembly line. The first person’s job is to paint a car door handle, the second person’s job is to install that door handle on a new car. If the first person can paint 5 handles in 10 minutes, but the second person takes 10 minutes to install the handle; we have a problem. This means that we either need to increase staff that install car door handles or maybe the same person should do both.

Understanding these blockers will help us identify gaps in our processes, or the lack of labor to accomplish our goals. Visually displaying this information on a Kanban board is much easier to understand than a bunch of tasks lists or “tickets”.

There are many tools available for a digital Kanban board. I have listed a few below that are both free and paid. In my professional life, I use Jira’s Kanban feature. In my personal life, I use both a whiteboard with post-it notes and built-in features of GitHub Projects (example):

If you just do a quick google search for “free Kanban tools” or go to GitHub.com and search for “Kanban” you will find many open source projects that you can host yourself. If you don’t want to host it yourself, then check out DigitalOcean.com. If you think a digital tool would work for you, you can even use Outlook (here or here) or Gmail to manage your tasks in the Kanban style.

I’m not sure about you, but I personally carry a leather-bound notebook (with DoanePaper) with me wherever I go. Whether at work, out with friends, going to bed, etc., I always have my notebook. In my opinion a digital tool is great, but I’m faster at writing things down on paper than I am opening an app. Plus, I always have it with me.

Another option or addition is by using a whiteboard in your home or work office. The first thing you do is draw some columns. Typically, you have three different columns: To-Do, In-Progress, and Done. Starting out you will have everything in your To-Do column. As you begin a new task you move that sticky-note to the In-Progress column. If that item gets blocked or cannot be completed, you should move it back to the To-Do column. You should only have a few items In-Progress (ideally, you would only have one). Once you have completed that task, you move it to the Done column.

That’s it! Kanban allows you to visually see tasks and progress you are making on your projects. The manual process is great for a single person or a team that is in close quarters. If you’re spread out or in a cubicle this may not work as well. This is where having a platform like Jira or Trello really shines. Especially for teams that are global or in different locations.

Kanban is powerful, yet extremely simple. Using a tool to manage your tasks so that you understand exactly what you, your team, and others are working on reduces potential re-work while also making sure that all tasks for a project are complete (and on-time). The third post in this series I will take the concepts of both post one and two, and we will begin to breakdown our User Stories onto our Kanban board. Remember, we have not started coding yet. Next, we will design how our stakeholders may use our new tool. Understanding this, will speed up our development time and reduce re-work.

Advertisements

Share this:

Like this:

Related

Published by MSAdministrator

Josh's primary focus is in Windows security and PowerShell automation. He is a GIAC Certified Windows Security Administrator (GCWN) and GIAC Certified Forensic Analyst (GCFA). You can reach Josh at MSAdministrator.com or on Twitter at @MS_dministrator.
View all posts by MSAdministrator