Simplified Thinking Like a Software Engineer part 1

AndReda Mind
6 min readApr 26, 2022

The first part for that is how to think as a problem solver.

If you have a problem with your car, you can solve it with:

  • automotive knowledge,
  • diagnosis,
  • replacement equipment,
  • and common shop tools.

Not replacing the whole car, it’s a way to avoid the problem and it will cost you a lot, even the repairs may cost you a lot and you need to know what is the best solution that will cost less money.

I’m trying to simplify a big topic by simplify it as rules and advices, but some of them will be a very helpful in some problems and maybe won’t fit other problems, so I’ll just say all of them to make you collect them and build your own strategy based on the type of the problem.

Note: the first 3 rules are Golden rules, will give you the problem solver Mindset

Golden Rule 1, know if you have the talent of the general problem solver, and develop it

Here we have 2 situations:

  • If you are a talented problem solver, it means that you have:
    1. the talent and the eye to detect the critical details of general life problems.
    2. You already were and still helping your family or friends with solving their problems.
    3. You are seeing the details that no one is looking for or no one notices it.
    Here if you already have it, you should know it’s your way is programming solve more and more, here know that you are the closest one to winning the problem-solving competitions, so give this path more time as much as you can and try to develop it.
  • If you think that you don’t have it, maybe you are right or you have the talent but you have never been tested, so I’d recommend you to have the mindset of the beginner scientist, this mindset means:
    1. Asking for more and more, the real problem solvers are looking for a lot of answers to a lot of questions
    2. Even if they don’t have the questions and they just have a word or keyword to look for, that would be good for them to search and deep dive into that topic and know things they have no idea about it.

So, knowing where you are will help you with how you’d develop it.

Golden Rule 2, Hava a paper when you are thinking

Imagin that you are at any programming contest, writing the solution on paper will make your head clear, doesn’t poser your head with the syntax of the programming language while you are already thinking.

When you decide to start coding the solution, you will be faster than anyone else, because now you are just converting the solution from paper into code, you are just focusing on writing the syntax for it.

Golden Rule 3, Abstract the problem

After that you should restate the problem like Abstract it, or highlight it to see just the part that have the problem that you have on paper as I said to define and see the constraints (will talk about it below)

you will know how powerful the Abstraction is when you see a problem which written in a snaky way, so you need to Simplified to yourself.

Rule 1, Understand the problem and its type

We all know that with problem solving the first thing is to know the problem and understand it, but here at the software Engineer, it’s very important that you know what the solving should be like, from that perspective, we can say that we have 2 types of problem

  1. the direct steps solution
    like solving The Fox, the Goose, and the Corn problem, it’s direct steps without any probability, here it’s easy to know what is the most effective solution.
  2. the probability steps solution
    like sliding puzzle, or chess movements that are large enough that it is difficult or impossible to plan out a complete solution algorithms that will be the most effective one with all situations

Rule 2, Know the types of the Data:

I remember when I was a fresh graduate (knowing the problem-solving skills is big plus for me at this time) and I have been asked at an online interview about a problem, I remember the interviewer after he explained the problem about searching in a list, he loved that the first question that I had was

What is the type of the data? and that to understand what we are dealing with, to know the functionality that we allowed to use. (this is very important especially if you dealt with AI problem you will know what I mean.)

The second question I asked the interviewer was Rule 3

Rule 3, How much data that the algorithm (the solution) should deal with?

here, this question will make you able to see how the scale of the problem is, by knowing the scale of the input, and that will help you to know what if the

After this 2nd question, I was able to understand the problem, how big it is and which solution would be better, that is how I got an offer from this job.

Rule 4, See the constraints:

with programming, there are a lot of constraints like:
- the cost of the solution,
- performance
- graphics for games,
- a business application might have a maximum time response to user input),
- memory footprint.

So, problem solving as writing an original program that performs
- a particular set of tasks
- and meets all stated constraints.

Expert problem solvers are quick to recognize an analogy, an exploitable similarity between a solved problem and an unsolved problem.

Rule 5, Look for the most constrained part of the problem

at the car example, you better think that you want to repair the car with lowest cost.
Although I will not discuss artificial intelligence too much here, there is a rule for solving certain types of problems in artificial intelligence called the “most constrained variable.”

Rule 6, Always Have a Plan

By this point, you should understand that having a plan is always possible. It’s true that if you haven’t already solved the problem in your head, then you can’t have a plan for implementing a solution in code. That will come later. Even at the beginning, though, you should have a plan for how you are going to find the solution.

here the Golden Rule 1 of developing the general problem-solving skills will help you, will do when you have the experience of solving a problem that you have no idea about how you would solve it but you did it.

Rule 7, Divide the Problem

This will help you with more than 90% of the problems, because sometimes you are dealing with a complicated problem that needs more than one solution for each part to be solved

Rule 8, Start with What You Know

It’s like you have a 2-hour exam, the last thing you need is to waste the whole 2 hours with the question that you don’t know.

Rule 9, Reduce the scope of the problem

do this with the problem that you don’t have a clear idea about the solution by either adding or removing constraints, to produce a problem

Rule 10, Look for Similarity

Finding the similarity between a current problem and a problem already solved, to customize the old solution to fit the current problem.

Rule 11, Sometimes it’s better to do some experiments

experiment with a part of the solution with a part of the problem in a new project, and this project will be like a guide for you in the future.

Rule 12, Finally, push your code to GitHub

to reuse the old code for similar problems.

See you in part 2 of this series.

--

--