Kanban is becoming a popular agile tool. Indeed it is very good for software projects of certain types. However, there is a danger of false reasons behind Kanban adoption.
#1. User Stories Diversity
"Our stories vary in size a lot from 1 point to 40 points. Large stories just do not fit into an iteration"
It is very easy to say you can't split user stories, thus iterations should be abandoned. An easy solution is not the best one. There is something important behind the fact you can't split stories. Most likely you don't know how to split stories right. It is quite hard from the beginning and demands creativity.
Moreover, according to Queueing Theory, it is better to have small stories with roughly equal size. Small batches with equal size improve flow (and you have a better and more predictive cycle time). So in Kanban you still have to split stories to smaller stories and try to make them equal size.
#2. Failed Iterations
"We can't complete most stories in a single iteration"
There may be many, many reasons behind. Mini-waterfall approach, velocity greed, large stories, manual testing, poor stories description, etc. You may even have a wrong iteration length. For example, in large projects 1 week iteration may be an overhead with a huge transaction cost. So 1 month iteration may be much better in this case.
You need to analyze true reasons, the roots of the problem.
#3. Failed Retrospective Meetings
"Retrospective meetings are waste, they do not help in process improvement and we want to remove them"
You just don't do these meetings right. One popular failure is no Action Items after the meeting. Without action items a Retrospective Meeting is just a kind of informal chat that you may have over a glass of beer. You meet, chat about your problems, and get back on the same track next day. Rule #1 is to collect and write the list of Action Items that you will try to accomplish during the next Sprint [or any other time box].
One more common pitfall is to skip action items execution. You may collect them, but not really try. You may even try them, but abandon too quickly. Almost all new rules or practices put you off the comfort zone. It takes time to learn them, use them and like them (or dislike), but it should be an expert opinion, not just a gut feeling.
If you expect that you will replace failed retrospective meetings with a nice and simple "stop the line" rule, you'll fail, since it is even harder than scheduled regular retrospectives and demands even higher level of self-discipline.
#4. Shared People / Functional Departments
"We have a single pool of developers and share them between projects. We can't form stable project teams"
Do you really think that Kanban will solve your social and organizational problems? C'mon! It helps to visualize flow and find bottlenecks, but if you don't have a cross-functional team — you have hard times. It is proven in so many sources and researches that cross-functional teams perform better, produce better results and better software.
If you are experiencing difficulties planning sprints with shared pool of developers, try to fix the root of the problem first - switch to cross-functional teams and eliminate multi-tasking.
"Kanban is so simple! No plans, no estimations, no iterations, no overhead"
Indeed Kanban looks simple. But it provides nothing interesting by itself. To ensure a successful Kanban adoption, you need to apply Lean principles first. This new buzzword may sound like a silver bullet, but obviously it is not. Hard work, discipline, target on perfection and constant improvements - all that is required to apply any agile methodology.
Don't get me wrong. I am not saying that Kanban is bad. We use it within TargetProcess and I personally believe it works way better than iterative development (for us). I just want to make a point that you'd hardly resolve all your underlying problems as you switch to Kanban.
P.S. I usually don't read posts like "10 reasons to ..." Can't believe I wrote such post myself! 🙂
P.P.S. Read next post 5 right reasons to apply Kanban.