dev-resources.site
for different kinds of informations.
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 specialties. 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).
Featured ones: