How to Improve Problem-Solving Skills as a Programmer?
Understand and create a problem-solving system for your career.
“Everyone in this country should learn to program a computer, because it teaches you to think.”
— Steve Jobs
The least important skills for a software developer to have are technical ones. You don’t need to learn every syntax, framework, building tool, etc. before applying for a developer job because all of these can be learned much faster on the job. As a matter of fact, even senior developers often Google the technical parts of their day-to-day work.
“The biggest mistake I see new programmers make is focusing on learning syntax instead of learning how to solve problems.” — V. Anton Spraul
Create a Problem-Solving System
Step 1: Understand the Problem
“If you can’t explain something in simple terms, you don’t understand it.” — Richard Feynman
Most hard problems are hard only because you don’t understand them. And how to know whether you understand the problem or not? If you can explain it in plain English to yourself or your friends, then you understand what’s the problem about. Or write down your version of the problem to see the holes you have in your understanding.
Step 2: Divide the Problem Into Smaller (micro) Ones
“Reduce the problem to the point where you know how to solve it and write the solution. Then expand the problem slightly and rewrite the solution to match, and keep going until you are back where you started.” — V. Anton Spraul
Do not try to solve one big problem. Break it into sub-problems. Regardless of an algorithm problem, or a UI component problem, you can always break them into actionable tasks.
Step 3: Still stuck on the problem?
This happens to almost everyone. Remember you won’t learn anything new if you never get stuck on a problem. But the great developers/problem-solvers are more curious and even excited about bugs than worried or irritated. In other words, the problem is the same, but the responses are different between a greater developer and a very junior developer.
The debugging tool is one of the important tools developers commonly use to investigate tech problems. For a backend engineer, an IDE debugging tool is usually perfectly integrated into the code, and for a front-end engineer, Chrome Dev Tool is one of the best tools to help developers quickly navigate all the pages and components.
Don’t forget to Google stuff when you’re stuck for some time.
Work on the Problem-Solving Skills in a Practical Way
If you want to be a great problem-solver, keep solving many problems at your work and some other side projects you work on. If you are a front-end web developer, here are some online JS projects you can work on to practice your problem-solving skills:
Or if you are a backend engineer, you probably favor solving algorithm problems. Below are some popular coding challenges websites you can practice every day:
or you want to enhance your problem-solving skills in system designing:
Conclusion
Once we learned the mechanism and importance of a problem-solving system, we could build our own to transfer it into real-life practice.