-
Important to internalize to be successful as a coder
- study efficiently
- getting comfortable with looking at the uncomfortable
-
Problem solving skills are almost unanimously the most important qualification that employers look for - Demostrating computational thinking or the ability to break down large, complex problems hackerRank
-
Why is problem solving Important?
- Dive Right In... (not effective)
- Try a solution
- If that doesn't work try another one
- Rinse, wash, repeat
- Best ways to solve problem is:
- Decomposition - (composer example)
- Taking a big problem, and breaking it down into smaller pieces, until each pieces becoming uninteresting (Make Dinner/ Login User examples - see recording*)
- Understand the Problem
- Know exactly what is being asked. - Asked questions until you know grasp the subject
- How to know when you understand a problem? - Having the ability to explain it to anyone (rubber duck, dragon explaining)
- Verbalizing it, you'll find that your grasp of the subject is not as strong.
- Richard Feynman (Research him, read his philiosophy on explaining) - "If you can't explain something in simple terms, you don't understand it."
- Do you remember being stuck on a problem? -
- Plan
- Don't dive right into solving w/o a plan
- Nothing can help you if you can't write down the xact steps
- In coding this means don't start hacking straight away. To get a good plan, answer this question:
- "Given input x, what are the steps necessary to return output Y?"
- In coding, Programmers have a great tool to help them with this .. //Comments//
- Divide
- Do not try to solve one big problem -You will cry
- Break it into sub-problems. These sub-problems are much easier to solve. Make them SIMPLE!!
- After solving every sub-problem, connect the dots
- **This technique is the cornerstone of problem-solving. (read step again, if you must)
- Each piece into its simplest form
- Compose
- Combine the smaller pieces into larger assemblies
- A system is composed of a group of object which interact
- Sub-Problems (What if i get stuck on the smaller problems?)
- Take a deep breath, accept that you're stuck (it happens to everyone). be inqisutive
- Stuck?
- Debug: go thru steps by steps thru your solution - detach from the problem and try to view it from a different angle
- Reasess: Take a step back - *someties reassessing is starting anew - Delete everything and begin with a fresh set of eyes
- Research: Google how other solved the problem
- Decomposition - (composer example)
- Dive Right In... (not effective)
-
Practice -
- Play games, do problem solving tasks
-
Simple Framework - (Bamboo and rope example)
- Even with the simplest framework, it can be effective
- "All problems share similar patterns." - Someone
- Reconginizing patterns in your code and in problems will assist you
- "Cultivate problem solving skills. It Matters!"
- Even with the simplest framework, it can be effective