Interested to learn programming? Before choosing your first programming language to learn, you should have some basic understanding of the computer science field and what do programmers really do.

This infographic will answer some common questions like what is programming, how does computer program works, what software developers do and don’t do, what are the common struggles, etc.

Special thanks to Brian Schmitz for allowing me to use his awesome answer on Quora – What is a coder’s worst nightmare?

Remember to check out the infographic explained and FAQ section at the end of the post for more detailed explanations.

Check out the PDF version here.

Infographic Explained & FAQ

#1. What do you mean by “writing very specific instructions to a dumb, yet obedient machine”?

Imagine this: You have to instruct a kid to shower. The kid only knows how to follow your instructions. So you ask the kid to:

Walk into the bathroom. Turn on the shower. Stand under the shower. Take the soap. And so on…

Oh wait, The kid didn’t even remove his/her clothes before entering the shower! That’s how programming is. Computer only does what you exactly tell it to do. It doesn’t know how to assume and never think about the consequences.

#2. What are some common misconceptions about programming?

You don’t have to be a genius or good in math to be a programmer. You just need to be have good problem solving and logical thinking skills.

Programmers do spent significant amount of time in front of the computer, but that doesn’t mean that programmers are good at fixing friends’ and family members’ PC.

There’s no best programming language to learn. The answer varies greatly depending on your requirements, preference, time constraint, etc. Programming languages are like religions and some developers are more religious.

#3. Explain more about high-level and low-level programming.

Using the car analogy, high-level language is like driving an auto car. You don’t have to worry about shifting gears (similar to garbage collection & memory management in programming). It’s easier to learn and drive (code) an auto car.

Middle-level language is like driving a manual car. You can shift gears (more control), but it’s harder to learn and drive.

Low-level language is like the car engine. You don’t have to understand how the car really works in order to drive. Similarly, you don’t have to learn how to code in assembly language and machine code (literally impossible).

To sum up, computer is built on layers of abstractions. You drive a car through abstractions – gear shift, gas pedal, brake pedal, steering wheel, etc. The complexity of the vehicle and all the little details are hidden from you.

#4. Why is it hard to estimate software development time?

Here’re some great answers on why are software development task estimations regularly off by a factor of 2-3.

#5. What is the fixing mysterious bug about?

Fixing software bug is extremely common, which you will encounter daily. However, sometimes it would take hours or even days (yes, weeks and months are also possible) to fix a bug. Here are some reasons why:

The code is badly written and it’s written by someone else. He/She might have left the company and you are unable to approach them anymore.

Only occurs under certain conditions which are hard to replicate. For example, the bug only occurs when your website receives heavy traffic and reach certain threshold.

Now, pick your first programming language here: Which Programming Language Should I Learn First [Infographic].