Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to release often with Lean/Kanban? [closed]

I am quite new to Lean/Kanban, but have poured over online resources over the last few weeks and have come up with a question that I haven't found a good answer for. Lean/Kanban seems otherwise such a good fit for our company, who is already using Scrum, but have reached some limitations inside that methodology. I hope someone here can give me a good idea.

As I see it, one of the biggest advantages of Scrum over Waterfall is the use of sprints. By having everything ready every 14 days you get short feedback cycles and can release often. However, as I have understood from reading about Lean, there are some costs associated with this (for example, time spent in sprint planning meetings, team commitment meetings & some problems with finding something useful for everyone at the end of the sprints).

Lean/Kanban will remove these wastes, but only at the cost of not being able to release every 14 days. Or have I missed an important point? For, in Kanban, how can you work on new development tasks and release at the same time? How do you make sure you don't ship something that is only halfway done? And how can you test it properly?

My best "solutions/ideas" so far are:

  • Don't release often and allow the waste associated with running out of new development tasks. Not really a solution to the question asked though.
  • Develop in branches and then merge into the main trunk. Makes you have to support at least two branches continuously internally.
  • Use some smart automatic labelling system to automatically build only certain finished tasks and not others.

As a summary, my question is: When you use Lean/Kanban, can you release often without introducing waste? Or is release often not part of Lean/Kanban?

Additional info specific to my company: We use Team Foundation System & Source Control and have previously had some bad experiences in regards to branching and merging. Could this be solved simply by bringing in some expertise in this area?

like image 360
Halvard Avatar asked Aug 07 '09 15:08

Halvard


3 Answers

The problem you describe seems more a source control program -- how to separate done features from features in-progress, than about Kanban. You seem to put a heavy penalty on running many branches -- which is the case for source control systems not based around the idea of multiple branches. On Distributed Source Control systems, such as GIT and Mercury, everything is a branch, and having them and working with them is lightweight.

I assume you read this blog about Kanban vs SCRUM, and the associated practical guide?

And, in answer to your question, yes, you can release often with Kanban.

like image 165
Daniel C. Sobral Avatar answered Sep 18 '22 17:09

Daniel C. Sobral


You need to understand pull systems, which is what Kanban is designed to manage.

A customer (or product owner or similar) request for a feature in the running system is what triggers the process.

The request is a signal that goes to deployment. Deployment look for a tested item with properties that match the request. If none is there, you write the tests and look at development if there is a development slot that can be used to implement something that fulfils the test. When development has done its development (maybe looking for a suitable analysis first and so on), the test does its test, and deployment deploys.

The requests going backwards through the system are permissions to start working. As soon as the request has arrived, this triggers a lot of activity, where each activity should be completed as quickly as possible. There you have your turbo deployment.

Just like the request for a car goes to the dealer who looks in the ship who signals to the car factory, who signals to the suppliers.

Kanban is not about pushing requests through a system. It is about pulling functionality out of the system in exchange for a request that enters via the last step.

like image 22
Ola Berg Avatar answered Sep 20 '22 17:09

Ola Berg


The team I manage uses Kanban and we release around every two weeks. If you're strict about what gets integrated into your mainline code branch (tests passing, customer approved, etc.), Kanban allows you to release whenever you want. You need to make sure that the stories moving through your system aren't co-dependent in order to do this, but on my team that's usually not a problem - a large part of our work involves maintenance, which consists of several unrelated bug fixes / features per release.

like image 21
Chris Simmons Avatar answered Sep 21 '22 17:09

Chris Simmons