Simplicity is an integral part of satisfying the customer. Ideally, we would provide them a button to click that does everything they want. However, that is rarely possible. We build complex systems that require users to select how they want to proceed. Likewise, we include or exclude features and functions as part of meeting the requirements.
Simplicity--the art of maximizing the amount
of work not done--is essential.
When we think of simplicity, the focus is often on how little we have. This principle points to what is not included in a straightforward approach. More importantly, this principle focuses on work not done. When you think about it that way, simplicity is an essential piece of getting things done. We ignore the work that is not needed. By default, that leaves us with the shortest path from here to there.
This concept can be seen in auto racing. Every so often, a race car must make a pit stop. During that time, there is work done to fill the vehicle and replace the tires. A pit stop that is skipped is work not done. The more a racer can reduce those stops, the better their time will be. We can apply that concept to any project. Therefore, the more work we avoid, the shorter the path to our goal.
Give And TakeWork less can be an easy concept to grasp. However, it is not that simple (no pun intended). Simplicity does not imply lower quality. There is work that must be done. The race driver, in our example, still needs to drive every lap. If they run out of gas, they will fail. Thus, some pit stops are required. Likewise, there is work needed for any project. This principle applies to every step from design through testing and deployment. Our goal is not to remove tasks. It is to remove the work we do not need to do. Some work is good; other efforts are busywork. That is where our objective lies.
Busy Or ProductiveThere are many ways to assess whether work is required or not. In general, I find there is one rule we can point to for accomplishing this. For any task, is it productive or keeping someone busy? Does that task move forward progress towards a requirement in some way? If it does not, then we likely have some work that does not need to be done. Therefore, we can remove it and get closer to simplicity.