Swimlanes are used to track parallel work streams within a common resource. The most typical use might be grouping composite work items with a parent. Another typical use is an expedited lane for emergency work items that can skip queues and preempt other work. Swimlanes generally indicate some kind of branching. That can be either work item branching or workflow branching.
Kanban systems can be used when the work generally follows some kind of common workflow. For many software development projects, this is an easy constraint. Most software involves some kind of problem definition, some kind of design activity, and some kind of verification. Most software development also involves the use of a limited set of technology applied to a limited set of systems within a limited problem domain, so that most of the work done falls into a few general types.
Most is not all, however, and sometimes work will appear that doesn’t fit neatly into any well-defined type. Or maybe it does have a type that we haven’t defined yet. If the work is non-value-added, we can chalk it up to overhead. If the work is value-added, we will want to track it like all of the other value-added work. A useful trick for managing that kind of work is to reserve a swimlane for ad-hoc workflow:
If you find yourself using the ad-hoc swimlane frequently, you might want to map the value stream of some of the work items to see if you can discover some latent or emerging workflow.