It’s strange to be talking about programming in a personal development blog, but I think it useful for you to know what are the advantages of learning how to program and what you can get from it for your day to day life.

I have been programming since I was 16 and I’ve been doing it professionally since I was 19. The benefits I gained by learning how to program are enormous and they help me in almost every aspect of my life.

With this post my intention is to expose the basic concepts and advantages of learning how to program and to put you in a position where you can decide for yourself if learning how to program is worth your time or not.

What programming is

Let’s first talk about what programming is. According to wikipedia, programming is the process of writing, testing, debugging, and maintaining the source code of computer programs.

From this definition you can see that most than everything, programming is a process. This process can be interpreted as cognition, which in turn is the process of thought. Now, programming is both practical and theoretical, but for me is more the theoretical side among everything else that provides the most benefits.

Programming of course is more than this, but this reason alone should be enough to attract the intellectual curiosity of many.

On a more practical view, programming is a simple set of instructions that produces a certain output. For example, the following program prints the numbers from 1 to 5 in the screen.

example-1

Don’t worry if you don’t understand how this program works, that’s not important now, it’s just to get you an idea of how a program looks like.

The last thing I want to say about programming, is that there are hundreds of different programming languages, and each of those was created to solve a particular kind of problem. For example there are languages that are used to create games, others that are used to create operating systems, and others that are used to create web applications. There are even languages that are used to teach programming and math to kids.

Benefits of programming

So what are the benefits of learning how to program if you are not a computer geek and you performed poor at math in college?

  • Problem solving. The area you’ll practice the most when you write programs is problem solving. In fact, each time that you write a program you are trying to solve a specific problem. The benefits of exercising your problem solving skills are enormous. Suffice to say that in your day to day life you are constantly solving different problems, so being skilled at it is certainly a big plus.
  • Planning. Like many other activities, programming involves lots of thinking about what you are doing, analyzing your desired output and figuring out the steps you need to take to get there. In one word, planning. And guess what you do when you write for example a goal? You are planning for something that you want to achieve.
  • Learning complex concepts. Programming is attractive because you can learn a lot of new concepts that are rare to find in other disciplines. For example one popular concept is recursion. Recursion is a process that calls itself until it meets a particular condition. Recursion happens everywhere in nature and it’s often discussed also in philosophy. The beauty of this is that you’ll learn a lot of complex concepts like this by building practical stuff. In other words you create knowledge by personal experience.
  • Different perspectives. Programming affects greatly the way you think by exposing you to a multitude of concepts from very different perspectives. Every programming language has its own way of viewing concepts, and every time you learn one of them your perception changes. Programming is one of those activities like playing music or painting that leaves a huge impact in your way of thinking by opening new possibilities. In other words programming forces you to act with an open mind.
  • It’s fun. I started studying programming because it was fun, and it still is for me. Being a self learner, I always had the opportunity to study what I personally found interesting. If you want to learn how to program, you can do the same by picking only the concepts and programming languages that are fun for you. Of course is useful to get a general overview at first, but then you can start doing what you really like.
  • You can get a job. We live in a world where technology is a big part of our lives. For example to read this article you are using a computer, which in turn is connected to the internet. You are using tens of different programs in this very moment, even if you don’t know it, and someone needs to write them. If you take the time to learn how to program professionally, there are big opportunities available. Companies are constantly looking to hire great programmers and you don’t need to be a genius to become one, practice and passion will make it. I expect this field to grow even more in the future as technology becomes more and more important for us, and I think we’ll reach a point where studying programming will be required at school.

How to learn to program

You can start learning to program in just a few minutes if you want. Even though it takes years to become a proficient programmer, you can start to see interesting results in just a few months. In fact programming is a continuos skill, and every day is an opportunity to learn something new.

If you are ready to take this journey, the following are some steps you can take to learn how to program.

  • Get a unix machine. This is not required at first but it certainly helps to get your hands on a unix machine. By unix I mean an operating system like linux or mac os x. The advantages of using a unix operative system instead of windows is that you can run your programs easily, and the amount of information available online is greater. It’s true that you can write programs for windows in windows, but I highly discourage doing it unless you really know what you are doing. Windows among programmers is often seen as a bad platform, and there’s a good reason behind it.
  • Pick a book. There are tons of great books for beginners, and you don’t have to spend money in the beginning. At this point you just need a book that teaches you the basics of programming in a friendly and understandable way. I’ll link to some free books at the end of this article, but basically you don’t want to end up with a computer science introductory text when you are just getting started.
  • Solve interesting problems. When you are learning something new, it’s useful to use it to solve interesting problems. For example when you learn the basics of working with numbers and creating simple functions, you can write your own program that generates the sequence of fibonacci. That’s probably a chance to learn some math also. You learn programming mostly by doing it, so do’t forget this step.

Is learning to program worth your time?

The drawback of learning how to program is that it takes a lot of time. Yet the advantages of learning it can’t be ignored.

For example I specialize in building web applications, so it’s easy for me now to create a website that does what I want. I have the possibility to launch an internet startup without having to pay someone else to build it for me. I also have friends who created programs for mac or the iphone and are now making a comfortable living from it.

Even if you don’t plan to create something with your new knowledge, you can apply it to many other aspects of your life. For example, as I said earlier, having great problem solving skills and planning abilities is helpful when you write down your goals or when you decide to start your business. Again, I mean very helpful.

The price to pay for all of this is that you have to spend a few hours every week if you want to learn how to program, which should not represent a big problem, unless you are literally running fast trough your life (and in that case I suggest you to consider slowing it down).

As with everything else, good things happens to those who are willing to take the time to build them, so is your choice. At this point the real question is: can you afford not taking the time to learn how to program?

Resources

The best thing you can probably do now, is to go through these free resources and spend at least 30 days working on them. At the end of the 30 days you should be able to decide for yourself if you want to invest more time into programming or not.

Here are some resources to get you started.


  • Learn to program book. This is a free book where you can learn some concepts of programming. It’s based on practical stuff mostly and it uses a popular programming language that you can then use every day.

  • Project Euler. This website includes a series of math challenges to sharp your programming skills. Even if you are not good at math, you can search on wikipedia what you don’t know, and then try to create a program to solve it.

  • Teach yourself to program in ten years. An article with useful information for those who want to learn how to program.

  • How to become an hacker. The philosophy behind being an hacker. Note: hacker is not what you probably think.

I welcome any question and additional advice in the comments.