Monday, November 10, 2014

Kanban and McDonalds

Keep reading. The title is correct.
You wake up one day and decide to eat a burger in McDonalds (not so good to your health but who cares).


You enter the closest McDonalds branch and you stand in line. You wait for your turn to order.











You wait patiently until it is your turn.  Then you tell the nice kid with a cap the details of your order.












After that your order is displayed on the monitor above the desk where all the previous orders are displayed. You can immediately see what your order status is – is it the first order in the list and the kids in the kitchen have already started working on it or are there some orders before yours, and you need to patiently wait.
Meanwhile the kids in the kitchen receive the orders one after another. They work only on the first order in the line (not the shouting dude's order). If there are lots of orders then more kids come and join the kitchen (or the front desk) to help handle all the clients. When they finish working on an order they "send it" to the guy responsible on calling the hungry person who asked for it.  You check that the order is indeed what you asked for ("I asked for no onions!") and then sit down and enjoy your meal.

So what does McDonalds have to do with Kanban!?

Let's take a look at the roles here:
·         The client as the hungry dude (yes that's you)
·         The product owner as the kid at the desk who receives your order
·         The developers as the kitchen kids
The clients comes to the product owner (who can be the team leader) and describes him what they want. The PO adds the client's user story to the backlog according to its priority (someone is really hungry and is in a rush and a VIP might be before someone else) and here's the important part – the backlog is shown to everyone who wish to see it! The board above the desk shows all the orders and their statuses so if a client wishes to check his order all he has to do us look up.

The main purpose of this is transparency in order to calm down the clients, so that they won't bother the desk kid every second with annoying questions – "Hey remember me? What's up with my order? Why I'm I still waiting? How long does to take to make a burger?" If all the kitchen's work is displayed for everyone then the clients are calm and are patiently waiting. They understand that there's someone before them and that McDonalds actually work and not just stall time.

Meanwhile, inside the kitchen the kids work on the orders. They don't randomly choose what to work on – they have a prioritized list of orders (Backlog with user stories) and they work on the first order that the desk transferred to them (The one with the highest priority). They divide the work among them (divide user stories to tasks) and every kid can make any part of the order. So if "Moshe" is sick the team still is able to make the whole burger and even the French fries.

The manager, an older kid, can easily know what the team is currently working on without endless status meetings with the team (or the team leader), he just looks on the board, the same as the clients since all the work is displayed to everyone.

When the order is done the client is being called to the desk to take his order. He performs a quick review and happily goes to eat his burger.

Ladies and gentlemen this is pure Kanban (I didn't cover the limits part or indicators of work – that's for another post).

McDonalds is working like this for years, they called it "Great Customer Service", we - the software developers who instead of burgers make software (or develop\support hardware infrastructures) called it "A card" – in Japanese.

Saturday, November 1, 2014

What is not on the Calender does not Exist!

You know those people who remember EVERYTHING??? Well, I'm not one of them and probably (don’t kill me) neither are you.

When you have a job, a hobby (ies), university academic studies, some commitments and a life(!) then every day you have a lot of duties and tasks in all the areas described above. Some are more important than others, some are scheduled for the next day and some are scheduled for the next month. Either way you have to remember them all and eventually do them, however all of us sometimes forget. Most of the time we remember the most important tasks and duties but often we forget the other ones like going to the supermarket, call someone and remind them to do something, some ideas you want to share or maybe a meetup you wanted to attend.

I have a quote: "מה שלא ביומן לא קיים" – "What is not in the calendar does not exist" (the translation is not as neat as in Hebrew – improvements are more than welcome).

I believe in this quote since your calendar shows what you are actually doing. A doctor's appointment, work meeting and so on. However all those "blank spots" you leave there are not actually blank – you are doing something it's just not "as important" as the scheduled ones, but is it really? Is going to the gym or the supermarket less important than a work meeting? Perhaps, but the reason that the work meeting is scheduled in the calendar is because you want to be there (not necessarily want to be there but you sure don't want to miss it).  Don’t you want to go to the gym? Or don’t forget to go to the supermarket?

If you really want things to happen, like going to the gym or calling someone, you have to treat those tasks and duties the same as your "important tasks". Think about this for a second – "All the things you want to do are important"! If it wasn’t important you wouldn’t want them. Yes, some tasks are more important than the others – So they should be scheduled before the other ones. It's ok to postpone something since you have more important things to do right now or you don’t have enough time for it. But it is a decision that you make. You decide not to do something you don’t forget about it.


There are plenty of tools and apps to help you manage your day and your life. I use Google Calendar for the scheduled tasks and meetings (yes I have scheduled time to go the gym), I use Any.Do for reminders like calling someone or not to forget to take back my HVR card from my mom. Last but not least I use Trello to keep track of tasks which take time to complete and don’t have a start date – like my apartment duties or the books I'm currently reading and want to read in the future.

How do you keep track and manage your day? Your life?

Trello:

Any.DO:
 Google Calender: