The Best Way to Learn Programming and Crush It

The Best Way to Learn Programming and Crush It

Have you ever heard about the phrase “software is eating the world”? Well, it is true. More and more things around us are getting smarter and it is software what powers them. In this post, I will share with you the reason why you should at least consider giving programming a shot. You will also read about common pitfalls often made in the learning process. I hope that you will find this post useful and that it will make your learning path from beginner to master easier and more comfortable. Without further ado, let’s begin.

Why Should You Learn Programming

There has been a lot of buzz about programming in the last year or two. Situation went so far that many people even consider including programming into curriculum of elementary schools. According to these people, kids should be taught how to write code just like any other recommended subject such as mathematics, languages or history. Whether is it a good idea, is not the topic for this discussion. My personal opinion is that programming can offer many benefits to kids. From abstract thinking to problem solving. Programming can also make school much more interesting and pleasurable for many kids. Anyway, let’s get back to you.

Becoming Future Proof

Two main reasons why you should be interested in programming are following. First, with time, software will be bigger and bigger part of our lives and environment. We can already see how many object we interact with on a daily basis are powered by software. It was not so long ago when the majority of manufactured cars were just a piece of hardware. Today, some models contain more lines of software than the device you are using to read this post. And, progress will only accelerate and expand. Second reason why programming might be the best choice for your new hobby is that, in close future, many of the jobs currently done by people will be handed over to computers.

Luckily, when this time with will come, as it will, there will be a huge demand for people with knowledge to maintain and control these computers and other machines. From this point of view, learning to program now may bring you many opportunities and guarantee you a job, if that’s what you are looking for, in the future. So, instead of becoming unemployed like many of your friends and colleagues, you will have plenty other choices. As Charles Darwin said: “It is the most adaptable who will survive.” Do you need any more reasons to convince you to get started? Okay. Knowing how to program will allow you to get complete control over the devices in your environment.

Return of the DYI Man

Do you remember the times when if your car stopped working you just took it to your garage and fix it by yourself? What an amazing feeling it was to be self-reliant. Today, the majority of people are afraid to touch any part of their car because they might accidentally break something. How said is that? It’s like sitting on your butt waiting for your mother or father to tie your shoes. Have you ever actually saw car engine? Have you ever got your hands dirty while change the oil? Have you ever smelt that unique odor? Sadly, many young people will answer all these answers with “no”. Sure, the majority of people today know how to use their iPads and smartphones.

However, when something go wrong and these devices reject to work, they are screwed. Do you want to be one of these people as well? I doubt that. My guess is that you would more likely be that guy everyone is looking for to solve problems. Also, as I mentioned above, many of the devices we use on a daily basis will be soon controlled by software. Give it couple of years and even replacing of a lightbulb will require software engineer. Or, your girlfriend told you that the oven is not working? Maybe it was attacked by some virus. Don’t worry. Call specialist and wait until he will remove that infection from your oven’s operating system.

Unfortunately, don’t be surprised if your girlfriend will leave you and start dating that hit engineer who fixed your oven. In modern sense, he was the real man. He was able to take care about the problem by himself while you… Failed. Sad, but true. As it seems, software may not only take away your job in the future, but your girlfriend or wife too!

Lego for New Century

Here is a “bonus” reason to learn programming. As a child, did you have a Lego or some kinds of mechanical building kits? I did and I love them even today. These “toys” are a great way to develop creativity and problem solving skills in your kids. What’s more, these toys can also work as connectors and build strong bonds between you and your child. Just imagine yourself and your kid building something together. Nowadays, in many cases, parents were replaced by tablets or smartphones. Many families are spending time together only when it’s time to dinner. Sometimes, not even that. You can call this a parenthood crisis if you want. If that vivid picture scared the shit out of you, don’t worry.

There is another way how you can use all these devices as your advantage. Yes, you can learn programming together with your kid! Imagine how much fun can both of you have. Think about the moments spend together building some website, app or game. Put simply, software became the new Lego. Today, kids are more likely to building buildings and spaceships in Minecraft or create their own simple apps and games instead of playing the ones created by someone else. So, if you either already have kids or you are planning to have some soon, learning how to program can become quite handy.

Making the First Step

Okay, let’s say that all the heavyweight reasons convinced you to give programming a shot. What is the first step to make? You will need to pick a language. Although, there is another way to start your education. Instead of picking a language and diving into its syntax and semantics, you can start with broader grasp. Meaning, you can learn the fundamentals of programming as a discipline. This will give you a better picture of how programs and hardware work. It will also introduce you to possible learning paths. It can even help you chose your first programming later on.

If you would ask for my advice on where to start, the answer would probably be with these fundamentals. Learning the bare foundation independently of any language will be much more useful to you than jumping right into one language and its specific syntax. The benefits of taking the slower and a bit longer road are obvious. You will learn the theory of programming and writing software without being limited to specific syntax. Let’s make something clear, every language has its own syntax, reserved keywords and more. Meaning, when you finally master one language, you often have to re-learn some of the building blocks such as syntax when approaching new language.

Fortunately, if you master the fundamental paradigms of programming you don’t have to re-learn anything. These fundamental principles are applicable to any programming language you can find under the sun. Having said that, you still have to arm yourself with a syntax related knowledge of language of your choice to put these principles into work. Yes, without writing down in the terms of a specific syntax you will be able to create only abstract code in your mind.

One Language Rules Them All

Kind of nerdy subtitle … Anyway, whether you decide to start with theory of programming or not, your next step will be important. For this reason, I have one advice for you. Don’t start with more than two or three languages at the same time. If you are completely beginner – someone who never touched the code – pick one language and stick to it. Only when you will be skilled enough (use online tests, not your opinions) you can move on to another one. Otherwise, you are putting yourself at risk of creating confusion and getting lost or overwhelmed by overload of information. Remember that learning a programming language is similar to learning a regular language.

Although you can learn Latin (my favorite language), French and German at the same time, you should avoid going over the edge. Next, keep in mind that this advice is somewhat relative. What does it mean? Well, some languages are more difficult to learn than others. For example, take a look at good old JavaScript and compare it with Perl or even assembly language. Especially in case of assembly language, your mind will have a tendency to blow up after your first one or two lessons. So, if Perl or assembly language is one of your choices, I highly recommend that you stick to that one language or take one more at max.

About a year ago, I was considering learning assembly language and Perl at once. However, I have to admit that I’m a bit of masochist (just ask me about my insane calisthenics training). Unless you either share the same tendency along with high self-confidence or you are an advanced programmer, avoid decisions such as these. It would only make the whole learning journey more difficult than necessary. Instead, do the opposite and start with some easier language. If your final choice is JavaScript, I wrote a short series of tutorials that will help you master all the parts you need to know. After that, you will able to write your own scripts and apps with clean and maintainable code.

The takeaway is this … Remember that more is not better. The less experienced you are in programming, the smaller number of languages you should tackle at the same time. Although, consider the time you are out of school or the last time you learned anything more difficult than to tie your shoelaces. If it is a long time, getting your learning muscles back to work will require a little bit more work at the beginning. So, don’t be hard on yourself. Give yourself the permission to go slowly and fail often.

Limit Your Resources

Let’s suppose you decided on what programming language do you want to learn. Now it’s time to gather necessary resources you will use to acquire new knowledge. Before you will fire up your browser and start browsing the bookshelf on Amazon or courses on Udacity, Coursera, Treehouse or Codecademy and other sources of material you should know about decision paralysis.

The Trap of Decision Paralysis

One of the first traps many people interested in programming can fall into is decision paralysis. It can also be referred to as analysis paralysis. In the simplest words, this term is used to describe a situation when you have so many information and choices available that you become literally paralyzed. How can you find out if you are already in this situation? Unfortunately, spotting this is very easy. If it is happening right now, you can’t move forwards – make the decision – or move backwards – gather more information.

You can imagine it like standing on the rails in the way of approaching train. Rational solution of this life-threatening situation is to jump from the rails. However, when decision or analysis paralysis hits you, you can’t decide whether to jump on the left or right. From this point of view, the decision seems easy to make. What will happen if you add couple of variables? Let’s say that on the left side of the rails will be deep ravine with a small river. Unfortunately, the water is so dark you can’t estimate how deep or shallow the river is. In other words, you may die as well.

The right side of the rails doesn’t look promising either. It is a sheer drop full of stumps, holes and plenty of junk like rusted sheets, wires and broken glass (looks almost like a scene from Saw). In other words, although you will escape from the death caused by approaching train, you may kill yourself by falling on some garbage and bleeding to death or breaking your neck on tree stump. What option would you choose now knowing these “minor” details? If you jump on the left, the river might not be deep enough. If you jump on the right … There are many things that can kill you. If you will stay on the rails, you will be killed by train.

The rule of three

I admit that this example is a bit far-fetched. However, the result, from psychological point of view, is the same. You are paralyzed. In order to avoid this paralysis, I came up with something called “Rule of 3”. Purpose and application of this rule is fairly simple. All you have to do is to limit the resources you will use to learn programming (or anything else) to three. And, three doesn’t mean three types of content such as books, videos and articles. Three means literally three pieces of your preferred learning medium. If you like to learn by reading books, grab the top three books on the programming language of your choice and stick to them.

The exact same thing for videos, courses, articles and so on. Three pieces or less. Never more. If you are an analytical type of person such as me, you probably have a natural inclination to gather as many information and facts as possible. Unfortunately, as mentioned in previous section, this will only lead you to paralysis. Let me give you a personal example. When I decided to learn JavaScript, I did what felt natural to me …. I started to collect books from library to have as many information as possible. Nothing was left to chance.

As you may guess, this collection obsession lead to quick paralysis. I had no idea where to start. I was afraid that if by choosing one book I could potentially miss something important included in another. Also, because I collected about eight different books, reading all of them at the same time was not answer. Here I was, with stack of books on the shelf unable to decide. It took me a lot of discipline and effort to force myself to choose one book to start with. Again, I used data analysis – browsing online reviews and estimating the average (I’m a bit of analysis and data junkie).

Putting the Rule of Three into Practice

With the experience I got from this process, I decided to create some rule or guideline to help avoid the analysis paralysis. The solution I came up with was the “Rule of three”. Description is following: search for top resources on the programming language you want to learn, how many do you want. Next, look for feedback and reviews on these resources. Avoid looking only on the top or worst reviews. The most useful ones are actually somewhere in between. Then, use this information to reduce the number of resources to three and don’t look back. That’s it.

Learn by Doing

Regardless of your favorite learning style or type of resource, the best way to learn programming, and just anything, is by doing. There is no other method I can recommend more than learning by doing. Getting your hands dirty and trying programming on your own will speed-up and shorten your learning path like nothing else. Purely for the purposes of learning how to program, you should bookmark online code “playgrounds” such as JSBin, Codepen or JSFiddle. These websites will help you try the code without the need to install any software or app on your computer, which can lead to another paralysis – use rule of three.

The Importance or Exercises

The last thing, related to learning by doing, I want you to know is to always work on coding exercises included in book you read or video you watch. Remember, these exercises and examples are in there for a reason. They are not there just to fill up the empty space or increase the number of pages. Well, some people are doing that, but such products are on the bottom of the shelf marked as “crap” anyway. Let me repeat that … Do the exercises! Don’t turn the page or load another video until you get this done.

The reason why I am stressing this so much is that … I hated to do that as well. In the past, every time I would encounter some code exercise or example, I would quickly “go” through it visually and move on. I considered these exercises as a waste of time. My idea was that I can save time by skipping them and focusing only on the theory. This decision caught me later. I didn’t remember how some concept works or fully understand it. Solution? Go back and do the exercise anyway. The takeaway? Don’t skip exercises. It will not save you time, rather the opposite.

Language First, Frameworks and Libraries Second

The very last topic we will discuss today is learning the programming language before trying to switch to any framework or library. This is another mistake often made. Nowadays, on the front-end scene, one can often see forums full of people trying to learn jQuery, AngularJS, React, Ember and so on. Don’t get me wrong, I have nothing against frameworks. The problem is when you read a question about problem with some framework and you can clearly see that the author is complete beginner, lacking any knowledge about the language. For example, how many times can you find someone asking a jQuery related question not knowing even fundamentals of JavaScript?

Seeing questions such as this one makes me want to answer: “For God’s sake, you don’t even know the JavaScript!” Listen, it’s great that you are curious and want to explore different solutions and ways to speedup and simplify your work. However, you should get into this stage only when you know the language through and through. Unless you are able to write what you want to create in the plain (vanilla) version of the syntax, don’t “fix” it by using framework or library. So, if you want to learn CoffeeScript or jQuery, do your homework and master the JavaScript first.

When Framework Die

Going straight to the framework or library will only create a bigger mess. What’s more, what will you do when your favorite framework or library will fail? Moving back to the basics (plain version of the language) will not be able a solution. You have little or no knowledge of it. Also, keep in mind that life cycle of libraries and framework can be short and current market is overflowing with new arrivals. Meaning, what will you do if you learn framework A, but the majority of clients or job positions will require framework B? In this situation, you are screwed.

On the other hand, let’s say you were wise and learned the language first. Then, after you built solid knowledge base, you decided to give some framework or library a shot and try it. Now, when you realized that the framework you learned lost its gloss you can simply go back to the pure version of the language. Another option is to choose another framework (the same language) that is currently in demand. Since the basic programming principles are still the same, you will only need to learn new syntax. So, no matter what happens, you are always able to adapt to situation at hand.

Closing Thoughts on Getting Started with Programming

I could try to convince you to give programming a shot the whole day. There are many benefits you can gain from it and from engaging in learning process itself. However, I will not do that. You already have the information you need to decide for yourself. The last two though I will leave you with are that, first, it is never too late to learn something new, whether it is a programming language or anything else. As long as you keep your brain and mind fresh, your age or current conditions will not define or predict your learning abilities.

And, second, learning to program or code doesn’t have to be for the purpose of getting a job. You can pursue it as a new and interesting hobby without secondary intentions. So, have fun.

Do you have any questions, recommendations, thoughts, advice or tip you would like to share with other readers of this blog, and me? Please share it in a comment. You can also send me a mail. I would love to hear from you.

Did you like this article? Please subscribe.

Are you on social media? Let's connect! You can find me on Twitter, GitHub and Dribbble.

Alex Devero

I'm Founder/CEO of DEVERO Corporation. Entrepreneur, designer, developer. My mission and MTP is to accelerate the development of humankind through technology.

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.