Skip to content

Latest commit

 

History

History
51 lines (48 loc) · 2.97 KB

How to think like a Coder (Problem Solving).md

File metadata and controls

51 lines (48 loc) · 2.97 KB

How to think like a Coder (Problem Solving)

  • 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
  • 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!"