Guide to Learning to Program

You want to learn to program. But where do you start? At the beginning, many programmers get frustrated because they can’t find the answer to their simple questions. And that’s because there really isn’t one way to “learn to program,” and programming isn’t a single discipline. In this primer, we’ll give you a broad scope overview of the discipline of programming, and start you out on the right path towards your goals.

What is “Programming”? What Type of Programming Do You Want to Do?

First: There are extremely different types of programming, and there are different ways to learn each type. There are front-end web developers, who design the look and feel of websites. Their “programming” is sometimes minimal, and there’s an emphasis on aesthetics. There are algorithm developers, who develop things like compression suites and physics engine. Their “programming” is mathematics-based and intensive, and there are very little aesthetics involved.

When people talk about “programming,” they’re talking about a discipline that’s as broad as engineering. Before you start to learn how to program, you really need to have a greater understanding of the type of programming you want to do.

Here are a few of the core focuses in programming:

Web development and web design . An extremely popular discipline, most web developers and web designers are almost entirely self-taught. Web developers and web designers have to study things like customer/user behavior, because they need to understand how people interact with their websites (User Experience).

. An extremely popular discipline, most web developers and web designers are almost entirely self-taught. Web developers and web designers have to study things like customer/user behavior, because they need to understand how people interact with their websites (User Experience). Game design . A growing discipline, game designers and game developers focus on the technology needed to develop games. Some of them program quite extensively, but others actually only need a foundational knowledge of programming (such as C++ or C#), because they’re doing the majority of their work in a proprietary game development tool.

. A growing discipline, game designers and game developers focus on the technology needed to develop games. Some of them program quite extensively, but others actually only need a foundational knowledge of programming (such as C++ or C#), because they’re doing the majority of their work in a proprietary game development tool. Cloud-based application design . Today, cloud applications can be designed in Python, JavaScript, C, Java, or any number of other technologies. Cloud applications are taking the place of standard web applications, but they have a lot of crossover between cloud application design and web development and web design.

. Today, cloud applications can be designed in Python, JavaScript, C, Java, or any number of other technologies. Cloud applications are taking the place of standard web applications, but they have a lot of crossover between cloud application design and web development and web design. Mobile application design . Mobile application design often demands what’s known as a “full stack” developer: someone who can develop a back-end and a front-end at the same time. Still, many mobile application designers are self-taught, as the mobile application industry has been booming.

. Mobile application design often demands what’s known as a “full stack” developer: someone who can develop a back-end and a front-end at the same time. Still, many mobile application designers are self-taught, as the mobile application industry has been booming. Enterprise application design . Enterprise applications are most likely to demand languages such as C++, Java, and SQL. Enterprise application design is more what people think about when they think about a “programmer”: Someone who works for a business and spends their time programming and developing for complex tasks.

. Enterprise applications are most likely to demand languages such as C++, Java, and SQL. Enterprise application design is more what people think about when they think about a “programmer”: Someone who works for a business and spends their time programming and developing for complex tasks. Data science and database design. Data science is a swiftly growing field that requires an extremely analytical mind. It is one of the most demanding fields to go into, and it requires a heavy emphasis on mathematics and programmatic theory. Not every programmer can be a data scientist, but those who are data scientists are going to find the market exceptionally open to them.

As you can see, there are a number of focuses that you could have, and the way that you learn to program is going to require that you decide your path fairly early on. While the philosophy of programming remains the same in each discipline, the tools and languages that you need are going to be dramatically altered by your focus.

How Can You Learn to Program? What Type of Learner Are You?

Why is it so hard to learn to program? Why is it so difficult to find help? A lot of this has to do with the culture of programming, though it is shifting. There are two types of programmers out there:

Self-taught.

Course-taught.

A large number of programmers are entirely self-taught, and this remains one of the major ways to learn disciplines such as web development and mobile app development. These are “passion” fields that people often go into because they can bring completion to a project from start-to-finish on their own, without the need to be hired by a company. In other words, freelancers.

In the early days of programming, most programmers were extremely self-sufficient and would teach themselves by spending hours simply trying (and failing) to write code. Eventually they would become better at it, but it took a lot of practice.

Self-taught programmers pick up programming books and read them. They get online and search for problems and then solve them. They are entirely self-motivated and self-driven, so discussions are often centered around simply learning to program via osmosis: Throwing oneself into programming and “learning” it that way.

But that’s not the way that many people learn.

Many people cannot learn simply by reading a book, which is what eventually leads to frustration. Many people need courses. And thankfully, there are a great number of courses online for those who want to learn to program. Once you have a foundational knowledge, of course, you may find yourself learning a new programming language just by reading a manual.

Option 1: Online “Code School”

For most people, reading a book isn’t going to be enough. But there are both free and paid programs that offer extensive coursework to that end. Programmers who want to get started can attend:

Some courses operate at your own pace: You do modules when you want to, which makes it easy to learn while you’re working or otherwise busy. Other courses operate just like a class, where you need to check in at a certain time.

With programming, like many challenging disciplines, students often find that it takes a while to “click.” Some people take to it immediately and innately. Others struggle through the first few modules until everything starts to gel. Still others need to take multiple classes from multiple angles until they really know what they’re working with. Regardless, everyone can learn to program.

Whether someone tries to teach themselves programming or tries to take an online class, the field of programming still requires a great deal of self-motivation. At its core, programming is about problem-solving. If someone isn’t able to motivate themselves to find the answers to problems (or sometimes invent an entirely new answer), they won’t do well.

Consequently, a number of the tools that are most important for programming are really research tools.

Here are some of the most important online tools for programmers:

Github. Programmers are going to find Github, by far, the most important resource. Github is a central repository of open source code, but it’s more than that: It’s the first calling card a programmer has to offer a potential employer. Most employers are going to want to look at a programmer’s Github account, because it’s essentially their programming portfolio. As you begin to develop your programming prowess, you should be regularly uploading your projects to Github. You should also consider engaging with other projects, as you feel capable of doing so. Github commits are essentially a ranking: the more commits you have, the more experienced a programmer you’re perceived to be.

Stack Overflow. StackOverflow is another critical free online tool: StackOverflow is where programmers can ask questions and have them answered by other programmers. A programmer doesn’t have to solve all their problems themselves; in fact, they rarely do. No one wants to reinvent the wheel. Instead, programmers can search for questions in StackOverflow, such as “What is the best sorting method for this application?” Chances are, the question has already been asked and answered.

With Github and StackOverflow, you can review other programmers’ code and also contribute to and interact with the community. For programmers, the community element is extremely important, as it’s how people learn about new ways to tackle complex problems.

Option 2: Coding Boot Camps

Do you want to learn programming fast? Coding boot camps have strong advantages and disadvantages. If you learn best in a learning environment, rather than on your own, a boot camp is going to be an intensive, rigorous course that steps you through the processes of learning to code quite quickly. These courses are paid courses in which you will physically go to a classroom and learn for hours and hours at a time: Your one job is to learn programming, and that’s it.

There are a number of coding boot camps for specific disciplines, especially video game programming. And they tend to be a bit of a double-edged sword.

Coding boot camps are a great way for someone to get foundational knowledge very quickly. If you’re a dedicated individual who wants a head start, it may be worth it to pay for a boot camp. The issue with a boot camp is that you get from it what you bring to it, since it’s a paid course, and since the ultimate goal of the boot camp is more to make money than to educate.

Most boot camps promise that they will be able to place you with a company once you’ve gone through the boot camp, and this is usually either unlikely or misleading; They may be able to get you a temporary, low-level position. Boot camps are known for churning out low-grade programmers, and it’s low-grade jobs that these programmers will be able to get.

But that doesn’t make boot camps useless: They’re still a great stepping stone for those who understand that it isn’t going to launch them into a career right away. There are very few worthwhile careers that can be purchased through an eight week intensive course, but there are many worthwhile careers that can start that way.

One caveat: Be wary about courses that are too expensive and promise too much, and never pay for a job. If a coding course tells you that you can pay a certain amount of money for placement in a position, then it’s not a job: It’s paying for additional training. The best boot camps are going to be moderately priced and rigorous. Try to talk to someone who has already gone through the camp and ask them what their results were.

Option 3: Traditional College Degrees

The most time-consuming method of learning to program, of course, is a traditional four year degree. Many schools provide degrees in Information Technology and Programming today. If programming is something that you know you want to do, and you’re heading into college, this is likely the best starting path for you.

But if you’re already out of college, never attended, or already have a different degree, a college degree might not be the right way to learn. College degrees do take a significant amount of time, and they’re the most costly method of learning to program. Moreover, they give a rough foundational overview of programming, but generally don’t teach the programming skills that are actually in demand within the industry.

A web designer, for instance, can take a paid, online course, and learn the intricacies of modern web design. With a portfolio in hand, this may be enough to start getting them web design work within a few months time. If a web designer goes back to college, they may spend four years getting a web design degree before they are able to get any web design work. Further, they may find that most of the knowledge they acquired is dated; web design moves very quickly, faster than a degree program does.

Consequently, college courses are usually best for those who are just starting out in college and need to choose a degree path. Usually, going back to school for a tech degree isn’t the best choice, because the technology moves quickly. There is also still some skepticism within IT markets regarding “paper programmers”: Programmers who hold degrees but who have never actively programmed.

There’s one exception: If you never acquired a four year degree and you want to get into extremely extensive work (such as data science or computer security), you may want to go back simply to acquire a four year degree. If you already have a four year degree, an online course or paid trade course may be better.

Option 4: Entirely Self-Taught

As mentioned, it’s possible to teach yourself programming. There are books available that will walk you through the basics of web development, design, application development, and so forth. Many programmers have learned this way, but it’s not just that it’s a challenge. It’s that some people can learn this way and others cannot.

If you generally learn best through reading and self-instruction, you can pickup a book and read it. If it “clicks” with you, you may be able to learn programming simply by going through a textbook and trying out the exercises within the book, at your own pace.

Getting Started

As you can see, before you even start programming, you need to know roughly what discipline you want to go into. Are you most interested in developing websites? Do you want to develop video games? Or are you interested in specific fields, such as electronic medical records, or improved cybersecurity? Once you have your discipline in mind, it’s easier to know where to go to get started.

The methods of learning to program depend on how self-motivated you are and how much you can learn on your own. At one end of the scale is being entirely self-taught: you can pick up a book and dive into StackOverflow and Github on your own. At the other end of the scale is going back to college for a four-year degree: you can spend a few years learning the basics of programming and development, and get he support of a teacher and students.

Perhaps most importantly: Anyone can learn to program. If it’s something that you have a true interest in and a true passion in, you will find a way to learn it. Sometimes it may be a combination of the methods above, and sometimes it may click immediately. What’s most important is that you find out whether programming is something that you truly enjoy and are passionate about.