2. Types of Probelms
● Easy: Visualize the solution or the path to the
solution right away
● Medium: Visualize the path to the solution
after certain level of engagement
● Hard: Visualize the path to the solution after
trying various strategies
3. Solving Strategies for Hard
Problems
● Optimistic Attitude: Belief that most problems
can be solved with perseverance
● Simplify: Break it down to simpler problems.
● Whiteboarding: Make figures, sketches, flow
diagrams
● Ask Questions: Yourself & Others
4. ● Heuristics: Rules of thumb, that may or may
not work, but will throw more light and help us
get started
● Externalize: Free the mental RAM by putting
ideas on paper in the form of notes, diagrams
or other ( Brain can hold only so much
information at a time )
5. ● Mini Milestones: Set tiny milestones to
motivate yourself to proceed further
● Go for a walk, Sleep on it ( let the
subconscious work for you )
6. Learning Strategies
● Identify the common tasks that take up most
of your time as a programmer (New Feature
Conception & Implementation, Bug Fixing..)
● Identify your current workflow & check for
scope for optimization
● Look at the practices of co-workers or others
in the community
7. Common Falacies
● Lack of Perseverance
● Trying to figure the entire problem instead of
breaking it down
● Approaching with a “I know it or not know it”
attitude
● Not taking the time to reflect on the solution
before moving on.
8. Improvement Strategies
● Do not rush to finish and move on
● Explore the problem space & the standard
problems and solutions in that space
● Identify variations of the problem
● Identify your approach towards the problem
● Look for alternate, more efficient solutions &
trade-offs