Allan Kelly blogged recently about whether kanban systems trade predictability for efficiency. Its an interesting viewpoint, but I’m not entirely sure I agree!
Firstly, I don’t believe any agile process gives predictability. One of the reasons for preferring agile methods is that software development just isn’t predictable. Rather, I would say that agile methods can give reliability and that both kanban and more traditional agile methods give equal reliability. Secondly, I prefer to focus on effectiveness rather than efficiency and that both agile and kanban value effectiveness over efficiency.
So, if there is a trade-off, it is between the amount of up front effort in planning in order to achieve reliability at the expense of effectiveness. Scrum (for example) invests time in Product Backlog and Sprint Backlog planning in order to communicate at a high level what should be delivered. Thus Scrum says “we believe we will deliver this much work over that time period, and that it will be made up those items”. Kanban, however, simply measures average lead time and due date performance. Thus Kanban says “we belive we will deliver this much work over that time period *but* we don’t yet know what those items will be – we’ll decide at the last responsible moment”.
Actually, I thinks its more a relationship between trust and effectiveness. The more mutual trust there is between the business and delivery team, the less up front planning is needed, and the more efficient a team can be. That’s not to say that Scrum has a heavy up front planning process, or is a low trust method, but Kanban takes advantage of more mutual trust in order to eliminate some overhead and be more effective.