It’s still a useful resource and I liked the tips for solving problems.
The tips come from the book How to Solve It by George Polya. It’s a book on mathematics, but the principles apply to programming, too.
1. Understanding the Problem
- Can I restate the problem in my own words?
- What are the inputs that go into the problem?
- What are the outputs that should come from the solution to the problem?
- Can the outputs be determined from the inputs? Do I have enough information to solve the problem?
- How should I label the important pieces of data that are a part of the problem?
2. Concrete Examples
Coming up with examples can help you understand the problem better. Examples provide sanity checks: user stories and unit tests.
- start with simple examples
- progress to more complex examples
- examples with empty inputs
- examples with invalid inputs
3. Break It Down
Use pseudo-code or code comments. In an interview, explain the steps you want to take without worrying about details like language syntax.
4. Solve the Problem (or Solve a Simpler Problem)
If you can’t solve the complete problem, try to solve a simplified version.
5. Look Back and Refactor
- Can you check the result (does it work)?
- Can you derive the result differently?
- Can you understand it at a glance?
- Can you use the result or method for some other problem?
- Can you improve the performance of your solution?
- Can you think of other ways to refactor?
- How have other people solved this problem?
- How to Solve It by George Polya