What is the difference between Scrum and Kanban? That is the most often question about agile itself that I hear.
Answer to this question is simple. For me the shortest answer is that:
Scrum delivers working version of product not earlier then one sprint, Kanban deliver working version of product as soon as possible, optimally after every ticket.
Of course that is not complete answer. However in mine opinion as a first sentence it describes most important differences.
I have observed that projects in Scrum almost always are able to present first valuable demo of product not quicker then after few sprints. Projects that are using Kanban have tendency to be ready for demo after few tickets and even before first iteration. It’s not a general rule and depends mostly on how project is started technically and with what User Stories. However Kanban itself helps to assure better stability and business goals in shorter time period. In many cases mine observations are that Kanban is used by more experienced teams.
What to use?
Answer is simple as possible. Use that what you currently need. It depends on actual situation. Anyway personally I prefer to use Kanban over Scrum. It seems to be more Agile and more flexible.
There were some opinions around that in Kanban there are no “sprints” and there is no backlog. In fact, that is not true. Kanban defines iterations and allow to adjust flow to have backlog. Practical advice is to use milestones with version number to plan iteration and to use “awaiting” status as a backlog container.
What are your experiences with that topic?
I think that using Kanban is much better way to achieve business goals and present product as soon as possible as demo. Just have to use transversal method of building product where it means implementing components by small parts and develop them all in one time. In example if you have ticket that describes story “User has to login with valid credentials”, then just make sure that all components of software were developed to achieve that. Like UI, proxy, backend, part of other backend, ldap or whatever else serving login credentials. It doesn’t have to be fully working products, just very small part of them. There can be used subtasks that are in technical category to do that.