Similar to what Toyota Production System identified as seven categories of waste in manufacturing, also software development has its own wastes.
Partially done work
The work which is not complete does not bring any value. Furthermore, it creates additional constraints to keep it in a usable state.
Understanding customer needs is crucial to delivering real value by building the right thing.
Developing software is heavily based on learning. Making the same mistakes over again can be omitted by capitalizing on the first occurrence of a mistake.
Handoffs create extra work by a need to shift information. A lot of information is lost during these shifts.
In order to keep the context fresh fast feedback is important. The bigger the delay in getting feedback the harder it becomes to capitalize on it.
Every context switch creates a must to change focus, and readjust for other tasks, resulting in lower productivity.
Creating defects boomerang back, creating extra work, and slowing down new development