DEV Community

Cover image for 5 Steps to Solving Programming Problems
Adrian Prieto
Adrian Prieto

Posted on • Originally published at adrianprieto.com

5 Steps to Solving Programming Problems

Solving problems is a programmer’s bread and butter, and everyone has their own method, I personally found 5 steps that most likely than not will help you, not only to solve problems but to do it faster and more efficiently.

1. Read the problem several times until you can explain it to someone else

Read

This is by far, the most important step, read the problem several times, until you fully understand it, if you don’t understand it, you won’t be able to solve it. the best way to know if you understand the problem is by being able to explain it to someone else.

2. Solve the problem manually

Nothing can be automated that cannot be done manually!

Any code we write has a foundation, and it is the manual process. That being said, solve the problem manually first, that way you know exactly what you want to automate, this will save you a lot of time wasted if you just start writing code like a maniac.

Test your process with more than one input and some corner cases to validate it, pay close attention to every single step you take in your head, write it down, as each one counts.

3. Make your manual solution better

See if you can make your process better, if there is an easier way to do it or if there are some steps you can cut to simplify it (like loops). This step is very important, remember that is much easier to reconstruct your process in your head than it is in your code.

At this point you will be tempted to write some code, don’t do it yet, we have one more step to cover, I promise you it will make your final code easier to write.

4. Write pseudo code

Pseudocode is a detailed description of what a program must do, this will help you write every line of code needed in order to solve your problem.

Experienced programmers sometimes omit this step, but I can assure you no matter how experienced you are, if you write some pseudo code, the process of writing your final code will be much easier since you only have to translate each line of pseudo code into actual code.

Let's think about the steps needed to write a function that returns a number's squared value.

// Initialize a variable with a 'n' value

// Multiply variable by it self

// Return the result of that multiplication
Enter fullscreen mode Exit fullscreen mode

Now we know exactly what our code is supposed to do, we have one more step.

5. Replace pseudo-code with real code

Here it is the fun part, now that you know for sure what your program should do, just write some code and test it. remember you can always make your code better along the way.

Lets use our square example (very simple for demonstration purposes):

function square(n) { 
    // Initialize a variable with a 'n' value
    const initialValue = n
    // Multiply variable by it self
    const squaredValue = initialValue * initialValue
    // Return the result of that multiplication
    return squaredValue
}
Enter fullscreen mode Exit fullscreen mode

Optimize your code:

function square(n) { 
    return n * n
} 
Enter fullscreen mode Exit fullscreen mode

There you go!

This might seem like an obvious process, but most people omit half of it and start coding, which leads to wasting precious time.

No matter how complex your problem is, I assure you these 5 steps will help you solve it in less time and with fewer headaches.

Note: If your problem is too complex, divide it into small problems, it’s a technique called “Divide and conquer”.

Originally posted on my site - 05/26/2016

Top comments (5)

Collapse
 
perigk profile image
Periklis Gkolias

Very nice. :) Do you have any similar "checklists" for tackling bugs?

Collapse
 
dianamariejorillo profile image
Dee Jorillo

Great list! I especially agree with #4; I found that writing pseudo-code really is beneficial when you're stuck and helps in simplifying things. Thank you for sharing!

Collapse
 
newtorob profile image
Robert Newton

Great list, thanks for the post!

Collapse
 
aprietof profile image
Adrian Prieto

Glad you liked it!

Collapse
 
capu profile image
HD

Very nice, many times i forgot to follow these steps and the result not so good, unproductive.