Showing posts with label Problem Solving. Show all posts
Showing posts with label Problem Solving. Show all posts

Trial and Error

This is one of the best ways of actively dividing the problem space. The interview question "what number am I thinking of" is based on this. When it's one dimension, things are pretty easy. If the number is higher, divide the lower numbers in two and ask again.

Dividing the problem space is the goal of debugging. Remove things that cannot be true so you are left with only what is possible.

Prove it can't be solved

Someone walks up to your desk and shouts:
You have to fix this. It's shit. The whole thing is broken for the user, the database. The accounts team hate it. You've got to fix it.
And you, being the obliging worker crack on with fixing the thing. You work through everything you know to get the thing working but can't seem to get it working at all.

Incubation

Just let it sit

First off, incubation is not of pretending to think about something while you post on twitter, download from iTunes, update your Facebook status and try the new voice recognition Google search.

Incubation is: letting it sit in your head, while you do some other things and finding an idea or a solution by stuff just moving around in your brain while you don't think about it.

Consult & Research

If you're really stuck then it's time to get some help.

Get your question into a form which is useful to other people. While it's amusing to get an error report explaining "I can't use the website..." because "I didn't go into work today", the point of debugging is to fix things as quickly as possible, not to spread more emails around the world.

Brute Force

Most often associated with server attacks (e.g. DoS) brute force simply uses all available resources to achieve a given end, without prioritization.

This is often what people try when they don't know what the problem is, but in an even less efficient way than they could. Brute force is blunt but thorough as it should cover all possibilities.

Brain Storming

The aim of brainstorming is to give you lots of ideas.

You aren’t interested in thought-through plans, or detailed suggestions - you are just interested in getting more ideas.

Analogy


Analogy isn't really about ideas, but describing a system - or a problem - in terms of something else can often help you understand it better.