Learning Programming Isn’t Daunting

August 16, 2012

Your idea is cool, but you know what’s cooler? Building it.

Building software today has a lower barrier to entry than ever. Dan and Marco were just talking about how creation, deployment, and distribution is easier than it’s ever been.

That message wasn’t new to me, but getting from zero programming knowledge to shipping my first piece of software always felt like this daunting endeavor with packages to install and databases to learn.

But it’s not – programming is about taking something complex and breaking it down into small bits and pieces that are easy to learn and build. So in the spirit of breaking things down, I’ve found three steps that have helped me be successful this time around learning to build software as a business guy turned User Experience strategist/designer:

  1. Pick a project
  2. Learn the basics
  3. Build it

Pick a project

This endeavor must start with a problem you want to solve for yourself. Having a personal project will put the things you’re learning in context, even if you’re not building it yet. You’ll see the bigger picture of how you can build a part of your idea when you’re learning something basic and boring like loops or arrays. It’ll also motivate you to keep learning when something more interesting pops up.

In my case, The Syndicate is my fiddling option of choice. My project was to build a CMS for sponsors to submit their content and for me to distribute it to the writers each week. Yes, I’ll probably spend 100x the time building this than I’ll save each week, but it’s about the experience of learning.

Learn the Basics

Every time I’d tried to learn to program in the past, I’d barely made it past getting the environment ready. We learn by actively doing, not by learning, so it’s important to choose something that will get us “doing” quickly. I tried learning Ruby 2 or 3 times and couldn’t even get the language dependencies up and running on my computer.

My first programming attempt was JavaScript through Codecademy, which was fantastic for giving me a first pass at foundational knowledge. I’ve quickly learned that there’s a core set of knowledge that you have to know regardless of which language you choose – things like:

  • Variables
  • Logicals (if/then statements)
  • Arrays
  • Loops

As I progressed through my lessons on Codecademy, I hit a wall given my goal to build a CMS for The Syndicate: JavaScript is a client-side language. What that means is that without getting plugged into a bunch of other things (Node.js anyone?), all I can do is manipulate stuff that’s already in a user’s browser. As far as I could tell, there are no back-ends, no databases, nothing.

Lesson learned: programming languages are about picking the right tool for the job. There isn’t necessarily a “better” or “worse” when you’re starting out, but that’s where having a project in mind beforehand will help you start with the right language for the problem you want to solve.

In my case, I decided to give it another shot with PHP. Yes, it’s not a “cool” language, but it’s simple to get coding (it’s essentially dynamic html pages), and it’s easy to deploy.

I was about to order a PHP book off Amazon when one of my buddies recommended the Lynda PHP/MySQL Essential Training. It’s an 11 hour video training that walks you through all the fundamentals and a basic CMS build at the end. For $20 for a one month Lynda subscription, I’d have time to walk through everything – conveniently enough, I had three evenings in Florda on a work trip to do so.

Break it Down and Build It

Ironically, I didn’t even make it through the full Lynda training. I was about 2/3 of the way through, far enough to learn to write to MySQL databases. Absorbing the fundamentals a second time around made it very easy to learn.

But learning is about doing, remember? So I decided to start building, but I kept getting stumped when I started.

Break it down into smaller pieces.

It wasn’t about building a CMS, it’s about building a small feature, then building on top of that.

So I started small: one night I wrote a basic form that would post to a database. The next day I figured out how to return those values and display them in a table alphabetically. Each night I’ve built a small component of this entire CMS.

When I’d get to something that I didn’t know, Google was my best friend. Want to upload a file through PHP? Yep, there first two pages of results are loaded with ‘em. If you have a problem, someone has asked it online before, especially with a widespread language like PHP.

Once you figure out these small pieces, they quickly build on each other, and before you know it, they’ve snowballed into your project. Being a creator is addicting – no wonder programmers stay up into the early hours working on their stuff.

Coming up soon, I’ll share the results of my currently in progress CMS for a peek behind the scenes of how The Syndicate is run.

  • http://twitter.com/aplewes Amanda Plewes

    Great post – I LOVE Codecademy and think it’s awesome you’re teaching yourself to code. 

  • http://twitter.com/aplewes Amanda Plewes

    Great post – I LOVE Codecademy and think it’s awesome you’re teaching yourself to code. 

  • http://twitter.com/burin burin

    This is great news!

    As with anything, just the idea of getting started is the most daunting. Once you get past that initial “mountain” and realize it’s just a “hurdle”, though, you’ll realize that there’s SO MUCH STUFF that you don’t know and think you should know. Don’t let this get in your way though, because everyone started somewhere!

    I’ll admit that techies aren’t the best people to admit that they didn’t know it all from the start, but we all began somewhere, and this is a great story to motivate those who have always wanted to jump in.

    It’s not that bad!

  • http://twitter.com/burin burin

    This is great news!

    As with anything, just the idea of getting started is the most daunting. Once you get past that initial “mountain” and realize it’s just a “hurdle”, though, you’ll realize that there’s SO MUCH STUFF that you don’t know and think you should know. Don’t let this get in your way though, because everyone started somewhere!

    I’ll admit that techies aren’t the best people to admit that they didn’t know it all from the start, but we all began somewhere, and this is a great story to motivate those who have always wanted to jump in.

    It’s not that bad!

  • William Semple

    I spent a long time trying to get into the right frame of mind to code. I eventually jumped straight into a university course to force myself to do so. Found learning Javascript somewhat simple, and C/C++ even simpler; Javascript being a C like language helped. The one thing that really helped me was to think of the 3 control structures, sequence, iteration and selection; whilst knowing that a program is just complex forms of these. Codecademy is a brilliant start in getting to grips with Javascript/Python etc, whilst a dummies guide will always do magic in explaining things in a simple manner.

    Im still only learning, but have succeeded more that i ever thought I would. If I can do it, anyone out there can!

  • William Semple

    I spent a long time trying to get into the right frame of mind to code. I eventually jumped straight into a university course to force myself to do so. Found learning Javascript somewhat simple, and C/C++ even simpler; Javascript being a C like language helped. The one thing that really helped me was to think of the 3 control structures, sequence, iteration and selection; whilst knowing that a program is just complex forms of these. Codecademy is a brilliant start in getting to grips with Javascript/Python etc, whilst a dummies guide will always do magic in explaining things in a simple manner.

    Im still only learning, but have succeeded more that i ever thought I would. If I can do it, anyone out there can!

  • http://twitter.com/lifeblue Lifeblue

    Code Academy has a newer program out …A Code Year which goes through Javascript/HTML/PHP… a new class each week to learn all 3 in a year. I am currently in the middle and it helped conquer the first hurdle of “where to start”

  • http://twitter.com/lifeblue Lifeblue

    Code Academy has a newer program out …A Code Year which goes through Javascript/HTML/PHP… a new class each week to learn all 3 in a year. I am currently in the middle and it helped conquer the first hurdle of “where to start”

  • http://www.facebook.com/rmadhuram Raj Madhuram

    Welcome to the fascinating world of programming Marcelo! Your posts are awesome. Thanks for sharing your thoughts.

  • http://www.facebook.com/rmadhuram Raj Madhuram

    Welcome to the fascinating world of programming Marcelo! Your posts are awesome. Thanks for sharing your thoughts.