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