Pre-reading | Problem Solving
Article: Solving Problems
Article: Act like you make $1000/hr
Article: How to think like a programmer
Article: The 5 Whys
Summary of Notes from the related articles:
There are a set of skills or a framework you can create and foster to help you be a better problem solver. Below will be some things to remember and things to avoid. Everyone has their own path for problem solving, but these common tips below are encouraged in any case.
Tip: Have a designed framework to solve problems and use it!
Bad Habits:
- Not allocating enough time up front to the “thinking”.
- Not having a “framework” in mind of how you’re going to approach your problem solving.
- Trying to write code immediately.
- You didn’t break down the problem into small enough steps.
- You don’t know your programming language well enough to convert the pseudo-code.
Good Habits:
-
Read the problem twice (or more) Understand it thoroughly and explain it outloud in plain english. -
Solve it manually with small sample data Optimize if possible. - Write the manual steps as pseudo-code or comments.
-
Replace comments with real code Optimize if possible.
Note: 70% of your time should be on steps 1 - 3
Tidbits for Drilling Down on Solving When Stuck
- Use “The 5 Whys” when approaching how to manually solve the problem.
- The example in an acritle used was string reversal, if the word is “wood”, you start the new word with “d” - why? because it’s the last letter, the next letter would be “o” - why? because it’s the next letter after that working backwards, and so on.
- If you struggle with manually solving or saying why, break it down smaller! Make sub-problems to solve first and then work your way up.
- Start with the simplest sub-problem first.
- After asking all the whys to understand why and what you’re doing, try and translate it to useful comments for psuedo-code like:
// start with the last letter and create a new empty word // append the current letter to the new word variable // if a previous letter, make that the new current letter, etc. - Don’t start code until you know how to solve it manually and can explain it clearly.
- Still struggling? Try to debug by going back through your notes and realizing what you really told your simple minded computer program to do
Why the 5 Whys
This technique (coined by Sakichi Toyoda) is designed to drill down to the root cause of an issue that isn’t stopping from misc. solutions at various levels. It looks to create counter-measures (which prevent the problem from arising again) as opposed to solutions (which just deal with a symptom).
- Best used with simple or moderate problems (best to use other methods for large complex, like cause and effect analysis).
- Create a team of people who are most familiar with the problem
- Define the problem statememnt together - “Team A isn’t meeting time targets”
- Start asking why the problem is occuring - “Why is Team A not meeting time targets?”
- Accept answers that are grounded in fact of what has actually happened and been experienced (not guesses to what might) - write them on the board around the problem statement
- Each time an answer is accepted, ask Why to that answer - “Why does it feel like volume of calls is too high?” (might yeild a new answer of “we need more staff”).
- Note that some answers can branch off into their own new 5 Why branch
Below is an image for what this might look like:
Know Your Worth | Use Time Wisely
A bonus topic for these reading notes and articles is to ensure you understand how you value your time. The article about assuming your time is worth $1,000 an hour reminds us to ask ourselves things like What would you stop putting up with? and How would you be spending your time? and What things would you stop or start doing?. Then immediately following up with asking yourself if you’re taking steps towards what you have defined as what truly matters to you? Or are you just “busy”? Who is in charge of your time? If you teach yourself your time is valuable, others will see your time that way too. Learn to say no because everytime you say yes, you are turning down other opportunities for how you’re spending your time.