Programming. There is so much hype around it nowadays. Or is there?

For the last several years, this year included, jobs related to programming and software development were among the most in-demand professions.

Historically, we could refer to this chart from the Google Books Ngram Viewer to see the trends of the software development and web development appearance in printed materials between 1980 and 2008:

What we see here is a clear positive trend in both software and web development. Note that Google indexed over 5 million books printed between 1500 and 2008, so, unfortunately, there is no data after year 2008. However, we can infer that from that time the demand in developers only increased, as since then appeared and/or evolved many markets that require programming at their core, such as iOS and Android development, Data Science and Machine Learning at large scale, the Internet of Things and many others.

Therefore, in order to have a complete answer, besides answering “Why to learn programming?” some additional questions should be considered. Here’s the full list:

• Why to learn programming?
• Why NOT to learn programming?
• What will help yoy in your path?
• What will stop you from learning?
• How to learn?
• How NOT to learn?
• What to learn?
• What NOT to learn?

Did you expect such a long list?

Well, the majority of people will consider only the first question in the list and generally they will say that learning to program is easy. Everyone shouts everywhere that “You should learn to code! It’s so easy!” My perspective on that? I will give it at the end of this series of posts. But before that, we must consider all aspects of learning to program in order to be able to give a relevant answer.

In this post we’ll cover the first four and in the next one in this series the last four questions. So, let’s take them one by one.

Why to learn programming?

Demand

So, as I already said, it is in demand. Companies look for software developers, web developers, iOS developers, Android developers, game developers, microcontroller programmers, data scientists and many, many more. And by learning to program, you are becoming a potential employee in a market that has high demand.

Money

You can earn decent (well, depends on your definition of “decent” of course) money. Toptal has recently released a “Freelance Developer Hourly Rate Explorer” that allows you to check the salary range for 30 different skill sets. Speaking about geographical areas, StackOverflow Developer Survey Results from 2016 shows the average yearly salary in USA is around $100-$110K, in UK it’s around £45-£50K and in Eastern Europe it is around \$20K. Note that these numbers are an average and the actual salary depends on many factors such as your experience, responsibilities, chosen language, etc. But overall, the numbers are close to these.

Optimization

If money or high demand doesn’t appeal to you, consider learning to program because it can save you plenty of time, literally.

When I was working as a training coordinator at a telecom company, I have optimized the process of generation of an .xls report from 16 man-hours to 2 man-hours. I’ve done it by writing macros in VBA (Visual Basic for Applications). I didn’t know Visual Basic, yet I saw the optimization potential and learned the basics of it to achieve the task.

And there are plenty of examples of how people optimize their jobs and tasks by means of scripts that do repetitive tasks for them quicker and with less errors.

Creation

If you love to build stuff, to create things - programming gives you the opportunity to do this. You are a creator and you can build almost anything that you can think of. Although for some things to create you’ll need to gain some experience first. And the good thing here is that you can build on what’s already built and stood the test of time, thanks to the open source community that is there.

Besides everything stated above, or in case you simply want your job to bring you pleasure and you seek what would that job be, with programming you can choose from a range of things. Want to work on robots? To code your own wearables? Want to build sites? Games? Desktop applications? You choose.

Why NOT to learn programming?

Ok, ok, that is all good. But I would like to address some things against learning programming, as no job is perfect.

Money

Developers have high salaries, but they are not the only ones who make good money. In case your focus is money, you could make an analysis of high paid jobs and choose the one that you like the most.

Sedentary lifestyle

Usually, a programmer sits all day long, sometimes even in the evenings and nights as well. If not to deal with this by practicing sports, it can cause some health problems.

You don’t enjoy learning

If you are not an avid learner, most probably you will fail to learn programming, as (1) to learn it you will need to process a huge volume of information and (2) even after learning to program, you will need to continuously improve and learn what techniques and improvements have appeared.

Competition

Although the demand is huge, the supply is also huge. And if in other jobs you compete with people from your city or country, here you compete with people from the whole world, as a programmer can work remotely.

But, there is a “butt” here. Good specialists are still in high demand (as everywhere, actually). So unless you will decide to become one of the best programmers out there, think twice whether you want to enter this saturated market.

Now, if you are good to go with the previous two questions, we’ll go on with discussing what will aid you. Thus, in case you have the things mentioned below, you have higher changes of succeeding.

Ability to learn

As with any profession, learning to program, especially if you are new to the field, requires you to learn a lot of things at the beginning. A more distinctive feature in this field though is the fact that it is evolving pretty fast. Now, this doesn’t necessarily mean that you need to learn everything that appears out there, but some things you will need to learn even if you have several years of experience.

Persistence

Ever worked on the same task for 1-2 days, without any progress? Sometimes programming can be really frustrating. Apparently you wrote everything correctly, the program doesn’t throw any error, yet it doesn’t work as you expect. Without persistence, chances are that you will leave programming somewhere in the middle of you path, because “it’s not something you’d like to do in life.”

What will stop you in your path?

There is one particular thing that will prevent you from succeeding in this field though, and namely:

Fear of mistakes

Probably this relates more to the younger generation that is either studying or has recently graduated, although there are adults that also suffer from fear of mistakes.

When learning to program, you will make tons of mistakes. TONS. Be prepared for that.

But that’s ok. Even experienced programmers make mistakes. What is important, is that you learn how to fix them. And here, the language in which you code itself will help you fix your code.

You see, you “communicate” with a computer by means of a special “language,” the programming language. So, in a way, a computer is like a human - you can “speak” to it, it has memory, a “brain” that processes information and so on. But unlike a human being, when it doesn’t like something you do, or when it takes offense at you because you didn’t write the code correctly, a computer won’t sit silently and hate you, it won’t get angry at you, but instead will tell you exactly what’s wrong with your code. You just need to know how to read the “feedback.”

On a side note, this is one of the things that I sometimes miss in humans - computers tell directly what’s wrong with someone’s behavior.

Good. Now that we covered some things that will help you and others that will stop you in learning programming, in the part 2 of this article we’ll analyze how to learn it and what specifically to learn in order to become a good, and then a great programmer.