The missing piece in your coding journey
Why problem-solving is the first step to ensuring your long-term success
This blog was originally published on Substack. Subscribe to ‘Letters to New Coders’ to receive free weekly posts.
Note: This post is adapted from a blog I originally wrote over on educative.io, called The 1 piece of coding advice I wish I had received. Like me, I think a lot of aspiring programmers start at the wrong place when building their skills.
I’m hoping this post will help you become a strong developer by pointing you first toward the most important foundations of coding.
Let’s dive in!
Many aspiring coders start their journey with questions like, “Which programming language should I learn?” or “Which code editor should I use?”
While these are valid questions for someone who’s just decided to learn to code, there’s a more foundational skill that they could be building right off the bat: problem-solving.
From Meta to Microsoft, problem-solving was the core skill behind all of my developer roles. Similarly for you, problem-solving will determine your success in any role or specialization you choose to pursue (whether that’s being a web developer or a systems engineer).
Today, I’ll explain why it’s worth taking the time to strengthen your problem-solving skills, and how you can do it.
I’ll cover:
- What is problem-solving in programming?
- Strengthening your problem-solving skills
- Preparing for long-term success
- Learning to think like a programmer
What is problem-solving in programming?
Problem-solving is the core skill of a developer.
Put simply, we can break down the developer’s problem-solving process in 3 steps:
- Understanding the problem
- Considering the best solution for the problem
- Translating the problem into something the computer can understand (i.e., writing code)
Note: it’s not until the last step of this problem-solving process that you’d be writing code. To add, writing code is just a small fraction of a programmer’s job — which means that problem-solving is about a whole lot more than coding.
In reality, developer problem-solving can involve more than the 3 simple steps I’ve outlined. For example: research, comparing solutions, evaluating downsides of each solution, considering constraints, and so on. Generally, the more complex your problem is, the more complex finding the solution becomes.
Learning to code without covering logic and problem-solving is like wading into waters without knowing how to swim. It’s not enough to know how to build a program. Knowledge of syntax, algorithms, or programming languages alone won’t help you decide on an optimal solution for your specific scenario… but problem-solving skills will.
You’ll do plenty of coding in your career — but before you ever write a line of it, you should grow your ability to understand a problem and the implications of its potential solutions. Once you can do that, you’ll be better able to find optimal solutions to any coding problem (and finally, translate them into code).
Strengthening your problem-solving skills
Here’s the thing: you’re already solving problems every day. You’re organizing your room. Navigating traffic. Planning your budget. Mundane as these tasks may seem, you’re already using a core developer skill to tackle them.
That said, we all have room to strengthen those problem-solving skills — and the sooner you work on yours, the more quickly you’ll become a strong developer.
The best way to get started? Practice logic problems.
Let’s try one out as an example.
Logic problem: The Farmer’s Dilemma
Problem: A farmer must transport a duck, fox, and corn across a river.
Rules:
- The farmer can only take one item at a time.
- The fox and duck can’t be left alone together (the fox will eat the duck)
- The duck and corn can’t be left alone together (the duck will eat the corn)
At any step, the farmer has to choose between these options:
- Take fox
- Take duck
- Take corn
- Go alone
With these rules in place, take a moment to write down the step-by-step instructions to transport the duck, fox, and corn across the river.
If you’re not sure where to start, spend some more time understanding the problem. For instance, you can deduce more information through the rules you’ve been provided:
- The duck can’t be alone with either the fox or corn, which implies that the duck can be with the farmer or left completely alone
- The corn can’t be alone with the duck, which implies that the corn can be with the fox, the farmer, or left completely alone
By solving the farmer’s dilemma step-by-step, you’re already practicing a key aspect of coding. Sharpening these analytical abilities will only help you handle more complex challenges down the road.
You can find problems like the Farmer’s Dilemma in Educative’s Skill Path: Computer Science Bootcamp.
Preparing for long-term success
Change is constant in software development. New languages, frameworks, and methodologies emerge every year. However, what remains unchanged is the importance of strong problem-solving skills in developers. To keep up with the industry, being a proficient problem-solver is essential.
When I graduated and entered the workforce, the major shift in tech was the rise of distributed systems. My generation of developers navigated uncertainty as we helped build what would become the discipline of System Design: the practice of designing scalable distributed systems. This new territory came with entirely new challenges, and yet: everything we did to navigate and establish that new discipline still boiled down to problem-solving.
It’s safe to say that problem-solving will remain the constant through every technological shift.
Let’s consider the most recent shift — the rise of Generative AI tools like ChatGPT in developer workflows — and whether it’s impacted the need for problem-solving skills.
Developers are using Generative AI for various tasks, from testing code to writing documentation. According to the latest Stack Overflow Developer Survey, its most popular use case is writing code (at 82%).
With all these use cases for Gen AI, did developers have to do less problem-solving? No — quite the opposite. Generative AI has only emphasized the importance of strong human problem-solving skills.
Remember: writing code is just the final step in the problem-solving process. Generative AI may assist in this stage, but it cannot handle the critical thinking required in the earlier steps.
Why? AI tools lack the context and nuanced judgment needed to understand a problem, as well as the human creativity needed to find innovative solutions. Gen AI tools can only assist when guided by well-crafted prompts, and even then, they’re prone to errors and biases.
As Generative AI becomes more integrated into software development, developers’ roles as critical thinkers and problem-solvers will only become more important. Developers will have to guide and supervise AI in the right direction. As Gen AI tools help reduce tedium, developers will be able to spend more time solving the complex problems that are unique to the AI era.
Problem-solving skills will always be crucial for developer success. The earlier you start building yours, the better prepared you’ll be for whatever changes lie ahead.
Learning to think like a programmer
Thinking like a programmer means thinking sequentially, breaking complex problems into small chunks, and understanding how each component interacts with each other. Doing this successfully all boils down to problem-solving and logic skills.
Problem-solving is the universal prerequisite to all programming languages and specialities. There’s a lot to learn when it comes to programming, but you can start building problem-solving skills before you even decide between Python or Java (or whichever language you’re considering).
As a reminder, you can learn to think like a programmer with Learn to Code resources at Educative. With a bottom-up learning approach, you can cover all your bases from problem-solving skills to landing your first job (in various programming languages).
Happy problem-solving!
– Fahim