- Don't jump into the solution, think about it from a wider and higher level perspective
- I know that doing x solves the problem, but can I simplify/generalize/abstract it?
- e.g. Soduoku cell placement validation: do I need to check it cell by cell, or is it enough to just check it row by row? The difference here might mean less code to write and hence less things to worry about

- I know that doing x solves the problem, but can I simplify/generalize/abstract it?
- When in doubt, go back to the basics
- If I know a brute force slow solution, how do I optimize it?
- Think about trading space for time, or vice versa
- Think about data structures that might be more suitable for the problem
- One common example is the use of hash tables and sets to reduce the time complexity of lookups

- If I know a brute force slow solution, how do I optimize it?
- Proactive communication is good, but don't try to fill all the silence
- Trying to vocalize every thought might narrow my thinking and be less able to come up with an alternative