Deferring Decisions

Deferring decisions to the last responsible moment is one of the 7 Lean Software Development principles and an important aspect of Just In Time (JIT) Thinking.  Ideally, you only make decisions about those things that you have enough knowledge about (see The Cone of Uncertainty).  But, there are several tactics that can help you defer making decisions, or part of the decision.

Break down Decisions into smaller ones

Consider how you can split the decision into parts that can be decided at different times in the future.  One technique is to simply break the problem down into several smaller problems / needs.  Then each of these can either be decided on, deferred or generalised*.  For example, in product development we may decide only that we will need to capture user data that is considered PII (personally identifiable information) and not specify the exact data that we need to capture.  This decision may be beneficial to help kick off activities to understand and conform to data protection (e.g. GDPR) whilst deferring the specifics to a time when you understand more about needs, constraints and feasibility etc. 

In software development, an example may be that we need to decide if data persistence is needed and if data access needs fine grained control access.  However, do we need to decide on the technology yet?  Or to define the latency or load abilities?

Prioritise Decisions

Just as we strive to break our problems down and our tasks down into small, valuable, manageable chunks, when we do this with decisions, we can prioritise them, and reprioritise them (using similar techniques to Product Backlog Management and Interleaving).

* To Generalise or to Abstract something means to deal with an idea or a concept and not the specifics of this instance.


Related Pages