A problem solving style:

  • Understand the problem
  • Manage the flow of ideas
  • Maintain quality


Understand the problem

  • Success or failure often turns on minuscule differences in problem definitions
  • Leaders recognize this, hackers get bored once "it works"
  • Encourage everyone to "read the spec", or understand the problem
  • Resolve arguments by referring back to the original problem
  • Get to a common understanding of the problem
  • Is the argument about a difference in the solutions or a difference in the problem it solves?
  • Ask!

Manage the flow of ideas

  • Contribute a clever idea to the team
  • Encourage copying of useful ideas
  • Elaborate on an idea that a teammate contributed
  • Drop your idea in favor of one the team wants to develop
  • Refuse to drop an idea until everyone on the team understands it
  • Resist time pressure, listen when other people explain ideas
  • Test ideas contributed by other people
  • Withhold quick criticism of ideas -> keeps them flowing
  • Make it clear that you are criticizing the idea, not the person
  • Test your own ideas before offering them
  • Encourage the team to drop ideas that worked before, but no longer
  • Revive a dropped idea later

Maintain quality

  • Measure quality as the project progresses
  • Design tools / processes to test quality as you build a solution
  • Measure the speed of the implementation, compare to schedule, be prepared to change the solution procedure
  • Step back and assess viability, refresh perspective
  • Check ideas with the customer before building
  • Restore morale when an idea collapses