📝Five Whys

Five Whys is a method developed by Sakichi Toyoda and is a critical component of Toyota Production System. The methods helps to identify a root-cause of a problem.

You start with the problem statement and then ask the “Why?” question repeatedly.

Process:

  1. Form a team
  2. Assign a master (facilitator)
  3. Form a problem statement
  4. Ask “Why?” repeatedly until root cause is uncovered
  5. Decide on solution
  6. Assign responsible for solution

Tips:

  • Do “Five Whys” analysis for every incident hitting production, breaking development process, etc.
  • Cross-functional teams may enable better perspective on the issue
  • There is usually a solution for each level of the “Why.” The deepest cause is not always the best to address.
  • Include the whole team into discussion, especially the person who has “caused” the bug. If the person is missing, there is a tendency to blame they. (“Why he didn’t wrote the test?”---“He never does.”) “Invite all affected” But if the person is present, they could provide an insight into their behavior. (“Why you didn’t write the test?”---“I don’t know how to use the testing framework” or “I tried, but it is too hard to write a test for this feature”—>“system is highly coupled”)
  • People are rarely to blame. Assume that people do their best and the problem is in the system, process, or organization. (“Asses the process, not people.”)
  • Do not jump to conclusion. Work through each level.
  • 5 is not a hard number. You may need more or less steps.
  • “Base our statements on facts and knowledge.”
  • At every level there can be multiple answers. Write them all down and explore.
  • You might also ask slightly different Whys on each level.
  • The method can be applied to anything:
    • Any problems (both production, job-related, and personal ones)
    • The Design of Everyday Things applies it to uncover design issues
    • If you want something, ask the Why question to uncover your deep motivation
    • You can use this to discover customer’s motivation (see Always ask “Why”)
  • Every task (ticket) should be traceable to business requirements (which is ultimately either increasing profits or cutting expenses)

Programming-related example:

Example with multiple possible questions:

  • Bob pushed to master directly
    • Why he did that?
      • He didn’t know the branching strategy
    • Why he was even able to do that?
      • master branch isn’t protected

Backlinks