How to think like a programmer: 3 misconceptions debunked
Tags: programming, beginners, discuss
Published: 2022-07-18 19:56:42

If you don’t have a programming background, there’s a good chance that words like “coder,” “programmer,” and “developer” conjure up images of solitary math geniuses mechanically writing software applications that are totally inscrutable to the average person. If you aren’t a self-proclaimed math nerd or computer geek, you might assume that you could never learn to code.

The truth is that while becoming a proficient programmer takes a lot of work, **anyone can learn the basics**, and there are a lot of benefits to doing so. You shouldn’t be discouraged by **misconceptions about programming** that frame it as an activity that’s reserved for a talented few. Programmers come from **diverse backgrounds** and bring a wide range of skills to their work—they’re not all STEM experts. Math is certainly part of coding, but so are grammar, logical reasoning, critical thinking, and creativity. Coding is often also a **collaborative endeavor** in which people put their heads together to come up with innovative solutions to complicated problems. 

Today, we’ll talk about some common misconceptions about programming and why you shouldn’t let them dissuade you from learning to code. We’ll also consider **how programmers think** and how you can start practicing that thinking before you sit down to write your first line of code.

**We’ll cover**:
* [3 common misconceptions about how programmers think](#misconceptions)
* [Programming as problem-solving](#problem-solving)
* [Why you should think like a programmer](#why)
* [How to practice thinking like a programmer](#practice)
* [Next steps for thinking like a programmer](#nextsteps)

<a name="misconceptions"></a>

## 3 common misconceptions about how programmers think

As we noted above, our culture is rife with misconceptions about programming. Part of this is because of how programmers are represented in popular culture. You might be familiar with the character types: the anti-social nerd, the wealthy Silicon Valley partygoer, the STEM genius staring at a computer screen while writing code at a superhuman speed.

The last of these character types is probably the most disempowering because it frames programming as inaccessible to the average person. This reinforces misconceptions about what programmers do and how they think. We’ll discuss a few of those misconceptions here.

### 1. All programmers are math experts.

The role of [math](https://www.educative.io/blog/how-much-math-do-developers-need?eid=5082902844932096) in programming is complicated. Having a strong math background is definitely a plus if you’re hoping to learn to code, especially if you’re interested in exploring math-intensive fields like game development or machine learning. It’s important to remember, however, that programmers come from all sorts of backgrounds. Plenty of them are great at math, but many of them are not. There are tons of skilled programmers out there who are successful not because they have a strong math background, but because they can **write economically**, **apply logic**, and **break tasks down into steps**.

### 2. Writing code is a repetitive, mechanical process that doesn’t involve creativity.

There’s plenty of space for **creativity** and **innovation** in programming. Sometimes applying a tried-and-true method might be the best way to solve a problem, but programmers also need to be able to **think outside the box** to come up with **novel processes and solutions**.

### 3. Being a proficient programmer just requires memorizing programming languages.

Novice programmers sometimes think that learning to code and learning a programming language are the same thing. This isn’t necessarily the case. If you’re trying to build a house, it would be a mistake to become an expert on power tools and construction materials while neglecting to learn anything about architecture. 

The same is true of programming. A programming language is **just a tool that programmers use** in their work. If you don’t know how to problem-solve and think structurally, memorizing programming languages won’t get you very far.

<a name="problem-solving"></a>

## Programming as problem-solving

So, if the ideas about programming we've discussed are flawed or incomplete, then what does it actually mean to think like a programmer? Experienced programmers frequently say that coding is about **problem-solving**. It’s not just a process of absorbing a massive amount of technical information, memorizing it, and then applying it. You must be able to look at a project from multiple angles, anticipate obstacles, break the project down into manageable steps, and then be ready to revise your approach mid-process if you find that it’s not working. 

If your team of programmers was tasked with building a software application, for instance, you wouldn't all just sit down at your computers and type the code from scratch. You'd work with a range of stakeholders to determine **what the application needs to do and why**. 

* Who’s going to use it?
* What problems will the application need to solve? 
* What obstacles might the team encounter in the development process? 

Only after answering these **big-picture questions** would you know what tools to use for the job.

<a name="why"></a>

## Why you should think like a programmer

There are good reasons to think like a programmer even if you’re not pursuing a programming career.

Steve Jobs famously said, “Everyone in this country should learn to program a computer because it teaches you how to think.” The suggestion that people need to be taught how to think may seem a bit odd, given that we all think every day. The quote makes the point that the **questioning, dynamic, and adaptable thinking** that programming requires will serve people well in other endeavors, too. 

Thinking like a programmer can open up new horizons. It will help you to develop new perspectives and new ways of analyzing complex tasks. 

<a name="practice"></a>

## How to practice thinking like a programmer

So, what are some **concrete strategies** for starting to think like a programmer? Try some of these exercises to get a sense for how programmers approach problems.

**1**- Think about a process that you go through on a regular basis. It could be cooking your favorite meal, paying your bills, or cleaning your house. **Break your routine down into steps**, and ask yourself if all of the steps are necessary. Can steps be removed or combined to make the process more efficient? 

   * This step-based analysis resembles how a professional programmer might solve problems in the context of imperative programming, the oldest programming paradigm.

**2**- Next time you’re tackling a new project, don’t just jump into working on it. Spend some time **brainstorming multiple approaches** to meeting your goals. Then, review those approaches and consider their pros and cons. You might find that your initial, instinctive approach to the project isn’t actually the most efficient or effective. 

   * Thinking through solutions before implementing them is an important part of programming. This is why professional programmers often create high-level or low-level design documents that lay out the architecture of a solution before they actually start writing code.

**3**- Try thinking about a big problem as a collection of smaller problems (in programming, these are sometimes called “sub-problems”). **Try to solve the smaller problems** to see if this gets you closer to a solution to the bigger problem.

   * This is a good, general-purpose problem-solving technique, but there are specific applications of it in programming. [Dynamic programming](https://www.educative.io/blog/python-dynamic-programming-tutorial?eid=5082902844932096) and the [divide-and-conquer paradigm](https://www.educative.io/answers/what-is-the-divide-and-conquer-paradigm?eid=5082902844932096), for instance, are techniques that involve breaking programming problems down into sub-problems.

<a name="nextsteps"></a>

## Next steps for thinking like a programmer

If you’re looking for **more resources about how programmers think**, consider Educative’s [Introduction to Computers & Programming](https://www.educative.io/courses/introduction-to-computers-and-programming?eid=5082902844932096) course. It provides a series of lessons, quizzes, and exercises that will give you a general introduction to coding and the ways that programmers solve problems.

Starting to **learn a programming language** is a daunting next step, and novice coders often feel unsure about how to approach it. If you’re ready to take that step, consider exploring some of Educative’s courses that teach the basics of major programming languages. Courses where you can [learn Python](https://www.educative.io/courses/learn-python-3-from-scratch) or [learn Java](https://www.educative.io/courses/learn-java-from-scratch?eid=5082902844932096) from scratch will teach you the basics of two of the most popular and accessible languages.

Whatever concerns you may have about starting your programming journey, the most important thing to remember is that there are plenty of resources available to help you get started.

*Happy learning!*

### Continue learning about programming on Educative

* [7 tips for self-taught devs (& why you should call yourself one)](https://www.educative.io/blog/tips-self-taught-developers?eid=5082902844932096)
* [Learn to code part-time: 5 tips for success](https://www.educative.io/blog/learn-to-code-part-time-tips?eid=5082902844932096)
* [6 characteristics that can make you an outstanding developer](https://www.educative.io/blog/characteristics-outstanding-developer?eid=5082902844932096)

### Start a discussion
What are other misconceptions about programming? Was this article helpful? Let us know in the comments below!