Wednesday, September 19, 2018

Problem Solving Skills



https://ryanstutorials.net/problem-solving-skills/

Be Open Minded

Be open to the possibility that:
  • The actual problem you have may be different to the problem you think you have.
  • What you think is causing the problem may not actually be what is causing the problem.
  • The best option may be to throw out your solution and start again in a different direction.
  • Your beliefs on anything and everything could be wrong.
Great new ideas often come from challenging our assumptions about how things do or should work. Always be open to different opinions. I'm not saying you have to agree with them but you should take the time to appreciate and understand them.

Be Inquisitive

Always be looking around and noticing things. Try and notice everything, not just what is (or what you think is) directly related to the problem area. Often, things which you don't suspect have anything to do with what you are looking at actually do.
Look for:
  • things that seem odd or stand out.
  • any patterns.
  • anything that is there that maybe shouldn't be.
  • anything that is missing.
These are often good starting places to find clues.

Ask the Right Questions

This is one of those things you get much better at with practice. Often when a student is stuck I find that I can get them unstuck by simply asking them the right questions.
I like to ask these general questions (about anything and everything):
  • What is it actually doing?
  • How is it actually doing it?
  • How effectively is it performing its purpose?
  • Why is it doing it/ what would happen if it was taken out?
  • What is it's relationship with other components?
  • What could I do to test that assumption?
You will also find that by asking these questions, new questions arise specific to the situation or problem. This is good. The more questions you can ask the better.
In answering these questions, always try and find proof or evidence. Try to rely as little as possible on assumptions.

Slow Down

It amazes me how often a student has asked for help in solving a problem and in the middle of explaining the problem to me they have realised the solution. I think it is largely because when you try to explain something to someone else you have to slow down. Speech is naturally a slower process than thought and you also tend to phrase it differently when you tell the problem to someone else rather than just thinking internally.
Slowing down can be difficult to do but can make a big difference.
Another approach to help slow things down is to come back to a problem. Leave it for a day or two (or an hour or two) and come back to it. You'll be surprised how much of a difference it can make.

Don't be Lazy

I see many students take the Where's Wally approach to problem solving. That is, they randomly, rapidly skim, hoping to find the solution. Effective problem solving is more like piecing together a jigsaw puzzle. We first look at all the pieces, trying to find the ones that stand out (such as corners and edges). Then we attack the problem from there and as the picture builds, the easier it gets. It's more work but the outcome is always much better.
Technology is great. Alas, it has also made us lazy. The result of search engines like Google and devices that increasingly hide the processing away from us is that we just expect the answers and results to be at our fingertips. Many people are just seeking that silver bullet so they don't actually have to do any work.
Effective problem solving doesn't work like that however. Don't be lazy. Read all the material, don't just skim it. Often the difference between something working and not is a little detail you have missed. You may get something that works by skimming but if you don't understand why it works then you won't be able to adapt it easily to other scenarios.

Don't Panic


Make Sure You are Solving the Right Problem

Sometimes the problem you initially see is not the problem at all. It is a symptom of the actual problem. If you solve the symptom you aren't solving the real problem, you're just putting a band-aid on it.



http://www.careerbuilder.com/advice/what-are-problemsolving-skills-and-why-are-they-important



Labels

Review (572) System Design (334) System Design - Review (198) Java (189) Coding (75) Interview-System Design (65) Interview (63) Book Notes (59) Coding - Review (59) to-do (45) Linux (43) Knowledge (39) Interview-Java (35) Knowledge - Review (32) Database (31) Design Patterns (31) Big Data (29) Product Architecture (28) MultiThread (27) Soft Skills (27) Concurrency (26) Cracking Code Interview (26) Miscs (25) Distributed (24) OOD Design (24) Google (23) Career (22) Interview - Review (21) Java - Code (21) Operating System (21) Interview Q&A (20) System Design - Practice (20) Tips (19) Algorithm (17) Company - Facebook (17) Security (17) How to Ace Interview (16) Brain Teaser (14) Linux - Shell (14) Redis (14) Testing (14) Tools (14) Code Quality (13) Search (13) Spark (13) Spring (13) Company - LinkedIn (12) How to (12) Interview-Database (12) Interview-Operating System (12) Solr (12) Architecture Principles (11) Resource (10) Amazon (9) Cache (9) Git (9) Interview - MultiThread (9) Scalability (9) Trouble Shooting (9) Web Dev (9) Architecture Model (8) Better Programmer (8) Cassandra (8) Company - Uber (8) Java67 (8) Math (8) OO Design principles (8) SOLID (8) Design (7) Interview Corner (7) JVM (7) Java Basics (7) Kafka (7) Mac (7) Machine Learning (7) NoSQL (7) C++ (6) Chrome (6) File System (6) Highscalability (6) How to Better (6) Network (6) Restful (6) CareerCup (5) Code Review (5) Hash (5) How to Interview (5) JDK Source Code (5) JavaScript (5) Leetcode (5) Must Known (5) Python (5)

Popular Posts