Classic MIT Lecture: Introduction to Programming

This video is one of the best introductory lectures on programming I’ve ever seen. Presented in 2008 at MIT by Professors Eric Grimson and John Guttag, this course has become something as a staple for anyone trying to learn programming online.

The entire course is offered for free at MIT Open Courseware. The course is taught in Python, but even if your goal isn’t to learn Python, the principles explained apply to any programming language, and thy are an excellent and concise reduction of the problems computer scientists face, and how you need to think in order to become a good programmer.

If you’re even remotely thinking about learning to program, watch this video!

3 Reasons Why Beginning Programmers Should Start Using GitHub ASAP

githubIn case your unfamiliar with the system, GitHub is a cloud storage tool designed specifically for programmers.

It’s one of the most widely used tools in the industry, and is an essential platform for anyone serious about learning to program.

Despite it’s nearly universal use, however, many beginners don’t start working with GitHub until they begin looking for a job, which in most cases is far too late.

In this post I’ll go over the top 3 reasons why beginning programmers should start using GitHub more quickly.

Gain Familiarity

The first reason is simply to gain familiarity with the system. Like any technical skill, programming is an art that must be practiced consistently in order to do well.

You need to build fluency not only with your chosen programming language, but also with the tools and techniques that are commonplace throughout the industry. Practicing using these tools with your own projects gives you plenty of runway to make mistakes, and have the tool start to feel like second nature before the time comes when you absolutely need it.

Build Good Habits

Secondly, using GitHub encourages you to build good programming habits.

As a developer, you’ll need to practice checking your code into and out of GitHub, and learning how to use different branches to control different types of changes you make.

This serves several purposes. Most importantly, it gets you in the habit of backing up your data consistently. It also encourages you to be hyper-organized about how and when you alter or expand pieces of code, and teaches you how to merge distinct changes back into your main branch.

Great Learning Resource

Finally, GitHub provides a tremendous, and often underutilized resource for new developers.

There are thousands of projects that you can freely download, load into your own system, and play with. You’ll be able to read and edit code written by expert developers, and can learn from their techniques.

Once you reach a certain level of skill, you’ll also be able to commit changes to existing open source projects. This will help you build your resume and gain valuable experience.

Since GitHub is free for public-projects (and as a beginner you don’t need to maintain private servers for your practice projects) there’s really no good reason not to use it, and the benefits you’ll get will help you improve your coding talents more rapidly than you would otherwise be able to.

The Life of a Programmer: What Do Computer Programmers Do All Day?

Before you get too far into your exploration of computer science, it’s important to step back and look at the reality of what programmer’s do on a day to day basis.

Many people have an unrealistic picture of what coders actually do on a day to day basis, and I hope to dispel some of those myths in this post.

The “Idea” of Coding

what a computer programmer doesThe idea of coding is easy to fall in love with. Thanks in part to media-hype, we tend to have a mental picture of programmers who are all young, hip, slightly dorky 25 year olds who stumble out of college and land a six figure job.

They go to work at 10am and stay until 8pm, but at work there’s a gym, a massage room, a gourmet cafeteria, a personal concierge to take care of annoying errands, and even happy hour beer-breaks with ping pong and air hockey.

If they ever get bored with their cushy job, or decide they simply aren’t earning enough money, they can just start a company, which their previous employer will happily buy from them for several million (or even several hundred million) dollars.

Sounds appealing, right?

The Day to Day: What Does a Programmer Do?

Unfortunately, the reality is a little different than the hype.

code bugWhile there certainly are stories of programmers who start a company only to sell it 3 months later for $30 million, or of amazing perks for working at one of the top tech titans, the day to day life of a programmer is a grind.

Constant Learning

One of the biggest challenges of any professional coder is to keep up to date with everything that’s going on in his field. You hear people refer to programming systems as “languages” and “frameworks” for a reason.

While different systems might share common threads, beginning work on any project requires an intense process of learning the system. Add to that the constant updates to the popular languages, each with different advantages and tradeoffs, and you can see how making any sound decision requires intimate knowledge with a wide range of topics.

Looking For Commas

Not only that, but the actual act of writing a piece of software can be extremely time intensive.

Be prepared to have your eyes glued to the computer for hours on end. On big systems, it can take an hour or two just to get up to speed with where you left off the day before.

Code rarely works the first time it’s written, which means that a lot of time is spent editing and re-editing to find small errors, or account for different possible contingency scenarios.

When “bugs,” or errors in the code, crop up, it’s not uncommon to spend several hours trying to find their real source, only to realize it was a simple misplaced comma, semicolon, or parentheses!

This takes a certain type of personality, and a great attention to detail in order to enjoy.

Problem Solving Is Fun

I don’t mean to imply that programming is just a dull, “heads down and get to work,” type of profession.

I just want to be straightforward about the type of mindset you need in order to code successfully.

At the end of the day, software engineering is just problem solving. Each day you’ll face different  small problems, and as you solve each small problem, you’ll gradually be able to piece together the bigger picture, until you’ve solved the large problem.

This can be a very fun process, and the satisfaction and reward for solving interesting, complex problems is hard to beat.

You can click here to learn more about how to get started learning to program.

How Long Does It Take To Learn a Programming Language?

Technical mastery is not an overnight process.

Learning to program is something that you’re going to have to commit to in the long run in order to be successful.

How Long Does It Take To Learn To Code?

how long does it take to learn codingWhile you can learn the basics in a few months, ideally you should be prepared to put in a consistent effort for at least 6 months or a year in order to feel like you really have a firm grasp on the basic concepts.

Then, like any skill, it can take decades to truly master. Check out Peter Norvig’s infamous article on mastering programming here.

But before you can even begin to get to that point, you have to get through the basics.

The Programming Learning Curve

In my mind, the better way to think about becoming an expert coder has nothing to do with how long it will take, but rather what steps you have to go through in order to get to your goal.

The absolute hardest part about learning to code is the act of getting started. There’s a huge learning curve before you can even begin to understand what the he** other programmers are talking about, and getting over those initial hurdles is all about mindset.

Here are the two biggest obstacles to getting started.

Thinking Like A Computer

The first hurdle you’re going to have to work through has nothing to do with your ability to write comprehensive software programs.

It’s far more basic.

You first need to learn how to think like a computer.

This means that you need to understand the fundamental processes a computer goes through when interpreting software programs, and what those processes mean to you as a programmer.

For most people, this means that you need to get much more specific about the way you think, and begin to outline every contingency scenario in more details.

One example I always like to use is to think of the instructions you might give to make a peanut butter and jelly sandwich. To most people, you’d simply say “make a peanut butter and jelly sandwich,” but to a computer that doesn’t cut it.

One level of detail further might be to say “take the peanut butter and put it on the bread,” but again this doesn’t cut it. Imagine how someone who didn’t know what you were talking about might react. They might take the entire jar of peanut butter (jar included) and place it on top of a package of bread! Not quite what you were expecting, right?

Computers will often respond in the same way.

Understanding Tech Jargon

Another major hurdle you’re going to encounter is the barrier of understanding all of the tech jargon used by people in the industry.

I remember when I read my first book on programming, I felt like I had to look up almost every word! Each page I read, just led to new questions!

There’s definitely a huge barrier to entry with this process, but the good news is that if you can stick through it, once you master the basic vocabulary and method of thought, you’ll be able to apply that knowledge to program just about anything!

So, how long does it take to learn to program? That’s up to you. But to get there, you need to begin. Crawl before you can walk. Walk before you can run…you know how it goes.

The question really is: are you ready to try?

Click here to get a free guide to learning programming.

Why Learn To Code

why learn to programWhy learn coding?

In today’s tech-centric age, there are tons of reasons why you should learn to program in at least one coding language.

A few decades ago, the stereotype of a computer scientist was the pure nerd, complete with a tweed jacket and bifocals hunched over a computer. Today, that stereotype has evolved to include rich 20-somethings who wear jeans and t-shirts to work.

The reality is that there are as many different types and personalities of programmers as you can imagine, from the academic nerd to the stay at home mom.

If you’re still on the fence about whether or not you should learn coding, here’s a list of the top 3 reasons why we think it’s important.

Why Learn Programming? 3 Reasons

1. High Paying Career Options

The first reason you might want to consider learning to program is perhaps the most obvious: software engineering is consistently ranked as one of the highest paid professions.

Entry level programmers can make $80,000-1000,000 a year in high demand markets like San Francisco or New York, and the profession as a whole has a median income well above the six figure mark.

Not only that, but with computers dominating growth across industries, adept coders are constantly in demand, which leads to a high level of job security.

2. Personal Interest

The second reason to learn programming is because of a personal interest and drive to do so.

The skills learned while mastering computer science are applicable to a wide range of fields. Knowing the basics can help you tinker with an idea you might have, or even just provide a means through which you can challenge yourself in your spare time.

3. Tech-Literacy

Finally, I think the most important reason to learn programming is for the purpose of tech-literacy.

Your goal doesn’t have to be to become an expert in the field, but knowing the basics of how technology works in any field is an increasingly important skill-set.

I’d even argue that technical literacy is going to become nearly as fundamental as knowing how to read or write. Understanding how software works allows you to make better decisions in your personal and business life, because you can understand what is and is not possible when leveraging software applications.

Should I Learn To Code? How To Decide

Just because coding is, undeniably, a highly sought after and important skill, doesn’t mean that it’s necessarily right for everyone.

While I would argue that everyone should at least know the basics of how programming languages work, that doesn’t mean you need to become an expert programmer.

I’ll be the first to tell you that programming, while incredibly rewarding and interesting, can be a hard and, at times, dreary task. To do well, you’ll be putting long hours in front of the computer screen. But then again, to do well at anything you’ll be putting in long hours somewhere, and there’s nothing quite like the thrill of finishing a piece of software that you built from scratch.

At the end of the day, however, no one can tell you whether or not you should learn to code. The only real option is to try it for yourself. There are a ton of great programs that will walk you through the basics, and you can even get a feel for what it’s like and determine if it’s right for you.

Click here to get started for free.

How To Start Programming

Welcome to!

We are a community of programmers dedicated to helping beginners get started with developing computer software and systems.

Whether your aim is to change careers or to figure out how to get started coding as a hobby, learning the fundamentals of computer programming is a fun and exciting undertaking.

On this site, we hope to provide access to the latest tools and information that can get you started in this robust and diverse field.

Getting Started with Programming

One of the biggest obstacles I faced when first starting out was trying to figure out how to get started in programming, even though I didn’t come from a technical background.

Before you begin, it’s essential that you have a clear reason why you want to learn programming. We strongly encourage you to set clear goals for yourself, which include both objectives for your education and a timeline by which you want to complete them.

Whatever your goals, you need to understand that this is not a topic that you can master overnight. In fact, we think it’s just about impossible for any one person to master all aspects of computer science. As you learn, you’ll realize that there are literally thousands of different branches and paths you could take, each of which is constantly making new progress and developments.

Finding the avenues that interest you and continuing to learn new things about those niche-topics is one of the aspects of computer science that makes it so interesting to so many people.

While you definitely need to have a core grounding in the fundamentals, don’t hesitate to branch out and read up on topics just because they spike your interest. Sooner or later you’ll find a way to bring those interests together into a cohesive skill-set that’s right for you.

Have A Little Faith

Having a little faith in your abilities is absolutely essential to your success.

The road to becoming a programmer can at times be frustrating and overwhelming. This is normal, and it happens to all of us, even those who have been in the industry for years.

When you find yourself stuck in a rut, take advantage of the bountiful forums and communities available to you. You’ll quickly find that Google is your greatest resource. Chances are, someone, somewhere has experienced exactly the same challenge you have, and has found a solution to it.

Just keep an open mind and approach each challenge as a new problem you can solve. Bit by bit, you’ll find yourself on your way to mastering your chosen language. With each step you take, your confidence will improve, and you’ll begin to see more and more options ahead of you!

How To Start Coding in 3 Steps

Finally, perhaps the best step you can take today is to get started learning.

Lots of people think about learning a new programming language, but few actually take the steps to do so.

Just starting somewhere, anywhere, with a topic of interest will start you down your path, and quickly compound to increase your knowledge and abilities.

There are plenty of resources on this site to help you out, and we’ve even put together this quick getting started guide.

If you’re interested in learning how to code there are a ton of resources available to you.

In fact, I believe there are almost too many options for beginners, which leads many individuals bouncing back and forth between different systems without a clear plan of action.

In this post I’ll provide a brief getting started guide that will help you find the track that’s right for you.

Step 1: Choose Your Language

This is the first major step of learning to program, and is a decision that you shouldn’t take lightly. It could direct the course of your entire programming interests and career.

The first part of the decision comes down to whether you want to work with the front end or the back end.

The front end refers to programming languages that have to do with what the end user sees. Front end programmers work more with appearance and effects, and (as a general rule) use fewer algorithmic developments. Because of this, the languages often involve less math, and are “easier” to learn, but you’ll need to learn at least the basic three (HTML, CSS, and Javascript) before you can do much of anything.

Back end languages, on the other hand, tend to take on the heavier algorithmic lifting. These languages form the backbone of most major pieces of software, and deal with everything from controlling step by step logic of a program to securely storing information in a database.

You can read more about choosing a language to start with here.

Step 2: Establish a Plan

Once you’ve chosen a language to work with, your next step is to set a clear plan that you’re going to follow.

Chances are, if you’re a newbie, you don’t yet know enough about programming even to ask the right questions about what you should learn.

For that reason, I strongly recommend all beginners to invest in a training course. Working with an established course will make sure you cover all of your bases, and can learn everything you need to in a digestible, easy to follow way.

You can start with free resources like CodeSchool (which has a 1 month free trial) to get your feet wet, but if you’re serious about ramping up your skills, you should consider more in depth courses like those provided by Thinkful.

Step 3: Start Coding

Finally, the only real way to learn how to code is to start coding.

You can read all the blogs and books you want, but nothing is going to give you experience like a hands on, trial by fire approach.

Unfortunately, even getting through this step can be a challenging process, since before you start programming you’re going to need to set up your system with the right software and tools.

That’s one of the reasons I think programs like CodeSchool are so great: they have a browser-based system setup for you, so you can begin playing around with your chosen language online, without having to worry about configuring your own computer correctly.

Click here to get started with a free trial from CodeSchool.