There are numerous systems that can be used to work with a team on software development. Each concept has its benefits, and is designed to steer each worker’s motivations towards the best end-goals. Each organisational method can have a direct impact on how the team interacts and what expectations are placed on daily, short-term and long term tasks and goals. Watch this video to learn about scheduling that helps you stay on target with an entire team, monitoring progress for every member while staying out of the way of progress.
Kanban scheduling system is my favourite tool in the world.
At its heart, Kanban is one of these. It’s a bunch of columns that represent ‘to do’, ‘doing’ and ‘done’. ‘To do’ are the tasks I’ve not yet started, ‘doing’ are the things I’m currently doing and ‘done’ means that I have delivered it in whatever shape that may take. This is a really simple idea of Kanban but as you start to get into it, you can see it has a lot of flexibility to it.
What is Kanban?
Kanban is a scheduling system designed for ‘Just in Time Manufacturing’ by Toyota. The concept of it was a pull-based system where they were trying to rid themselves of as much waste as possible. The way they tooled their system was every time a car was sold and rolled out of a dealership, that sent the signal back through the process to say that we are now ready for the next thing to move through. So that was the concept of ‘Just in Time’, the process of building a new car is started because the old car has gone out the door.
In its simplest form, it is a board, either physical or electronic. You can draw one on a whiteboard. There are plenty of online services that offer Kanban scheduling systems. It has a structured set of columns. Every one of those columns is going to have a set of rules that apply to it. Later phases pick up the work from earlier phases.
Things should never travel backwards in a Kanban board. This is one of the more controversial things. Jira, the workflow management tool, allows tasks to travel back. You might find some issue in testing and you will send that feature back to development again and start the process off again. One of the concepts in Kanban is a piece of work will never travel backward. If a piece of work can travel backward, you can end up in a constant cycle where nothing actually ever gets done.
By making sure things never move backward, you’re focusing your attention on what is the closest thing to completion in your whole process. There is no concept of going backwards. If there is a thing that is stranded upstream, you need to swarm that, fix the problems that are there and get it released. As I mentioned, the most simplistic representation is ‘to do’, ‘doing’ and ‘done’.
How we use Kanban
The heart of the Kanban scheduling system as used by Alliance is to improve visibility. Every one of our projects runs off a Kanban board. That means you can go to a page and on that page is represented a set of columns that will generally have something like:
- specs and estimate
- internal testing
- external testing
- send live
So it tells you at a glance what the process is that a feature is going to go through to get to live.
Not only that, but on the board you’re going to see a series of cards. You saw the option earlier of post it notes, each one of these representing a feature. That tells you where in the process each individual feature is and how close something is to being completed. Generally speaking there will also be either a person’s name written on it or, in the electronic version, there might be a little avatar on there that tells you who the person is that is working on it.
Finally there are three statuses that a card can be in.
- It can be worked on right now. And our favourite tool puts green and red outlines around it.
- It can be blocked. Blocked says there is a problem with this card that I cannot address. I need help. It calls out to everyone in the team and says, there is something wrong with this card so it cannot advance. Please help me.
- Finally there is ready. It has a nice big green border and that says I have satisfied all the requirements of the phase I’m currently in.
It improves visibility. What it does, is it tells you at a glance – and I can look across all my projects in about fifteen minutes of a morning – it tells you where everything is and where you need to spend your attention with most value.
It helps us define the rules of the development cycle. Every one of our phases on a Kanban board will have a little checklist that tells you, by the time a card is marked ready here, what has been done.
So when it comes to development, for a developer to mark a card ready in development:
- they have to have done the coding
- they have to have demonstrated to another person in the office that the code works on their local machine
- they must have packaged the code up into what’s called the merge request that essentially says, here is my bit of code, please look at it
- they must have put a link to that in the card on the board.
By something being marked as ready on the board, all of a sudden I know that those things have occurred. If it hasn’t, we have someone not following the process and it tells you something else. You need to go and approach that person and make sure, hey, get into line.
It keeps us asking the question ‘why’. Why is something taking so long? Why is it taking us so long to get something out? Electronic Kanban boards have fantastic stats tracking, or a lot of them do. They tell you how long things are spending in different phases. You can say with some accuracy that we’re spending 30% of our time in the testing phase and think why is that the case? Is that a reasonable amount of time? You might find out that it is, but it keeps you asking why are we spending as much time as we are on different phases? Why are our cards spending longer here than they should? My favourite one is: why is this person telling me they’re working on two different cards at once? A person cannot do two tasks at the same time. Why have they decided to pick up task B when they haven’t finished task A? By visualising things, it makes that question of ‘why’ a lot clearer.
It denotes and promotes ownership. It tells you when someone is working on something and it also tells you who you should speak to about a thing. If there is a card on the board that has someone’s name assigned, you can make the assumption that you can go and tap that person on the shoulder and ask for a status update about that card. It’s actually a really powerful thing. People understand that by having their name on that card, they are the custodian of it. They need to know and understand that they are responsible for taking it to the next part of the process.
It encourages conversation and communication. Every card is a contract for a conversation. It is not trying to say that that card should contain every bit of information and you never have to chat with someone. It’s just telling you who you should chat with and what it is you should chat about. It is giving you that shared context.
Why would you use them?
It gives you a concrete process that you can then start to improve. If you work without a documented process, then generally you will get to a point where everyone is roughly on the same page.
By concretely documenting your process you:
- flush out a whole lot of things you hadn’t thought of as missing in your process
- it also gives you a draft that you can start to iterate on
You improve the visibility of all ongoing work. Effectively we’ve got to the point where work doesn’t occur without it being represented on the board in some way. If someone is not assigned to any cards, they’re not working on the system at the time.
It improves accountability. Obviously if you’ve got your face on something, you’ve said, I’m owning this. You don’t want to have to answer the hard question of where you dropped the ball, so it encourages people to take ownership.
Using this system, you are able to keep up with every process in a system. If your software project would benefit from organised and controlled monitoring of each worker’s progress, Kanban may be the right way to go. It is a visual system, showing where each phase of work exists in a timeline of progress, categorising every step for maximum transparency. It leaves little to chance regarding the process while reducing interference in the very processes that need to get done.
Are you looking for a team to bring your software project to life? We’d like to hear from you. Contact us for more information today.