Skip to content

Instantly share code, notes, and snippets.

@snoblenet
Forked from rhysforyou/gist:3769749
Created September 23, 2012 11:20
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save snoblenet/3769753 to your computer and use it in GitHub Desktop.
Save snoblenet/3769753 to your computer and use it in GitHub Desktop.
How to Learn

Never in the history of the human race has there been a group as fortunate as computer science students. We have unlimited access to untold quantities of free information with which to better ourselves. We encounter few barriers that we can't overcome through hard work and a little ingenuity. We have the unparalleled ability to pursue our own ideas, follow what interests us and share our creations with the world.

So often I encounter individuals who tell me they'd love to build an iPhone app, make a game, launch a website, and so on. But often when I ask these individuals "what have you done so far?" I'm greeted with blank stares, usually followed by some excuse along the lines of "I wouldn't know where to start."

So that's what this is. The starting point.

A few pieces of advice

It's not going to be an easy journey of course, the ones worth taking rarely are. But a lot of the reason I started HackUOW was so that people wouldn't have to take the journey alone; that there would be people to give support and advice. With that in mind, here's a few pieces of advice from myself.

Have a goal

This is probably the most important piece of advice I could give anyone who wants to start getting serious about software development. If you have something you're really just longing to build, something to work towards, you're going to have a much easier time learning.

Having some context into which you can place everything you're learning is so incredibly important. I'm personally_awful_ at learning without some overarching idea that ties everything together1 and I'd hazard to guess that that's true to some extent for everyone.

You won't start out great

In fact you'll probably be awful, but it doesn't matter. No one starts out being good, your tastes will exceed your abilities for some time; but you'll get better. Every piece of software you write will be better than the last and soon you'll be slinging code around like nobody's business.

Don't worry about how much you suck to start out with. Just start each new project with the goal of making it better than your last one.

Where to start

With that advice in mind, where exactly do you start learning? To be honest that's a very specific question with an answer that's unique from person to person. However there are some general guidelines I could give—laced with subjective opinion as they are—about where to start learning for a variety of topics.

If you wanted to learn game development I could think of no better way to start than by downloading and playing with Unity. This is a mature game engine that's been used to publish thousands of games on all manner of platforms, yet one that's fairly approachable to newbies. It's got a great community and there's lots of help out there for newbie developers.

Web development is something that I'm personally a bit more experienced with. If you have little to no experience building web pages I'd start out by reading tutorials on HTML Dog. Also, HTML is wonderful in that it's inherently open-source; if you want to know how something was achieved on a web page, simply look at the source. If you want to start building more sophisticated web applications, I'd recommend checking out Ruby on Rails, a sophisticated yet accessible web framework with a fantastic community. In particular, the venerable Rails Tutorial is a fantastic starting point.

If you want to learn iOS development I'd start out with IOS Programming: The Big Nerd Ranch Guide. It's a very hands on introduction to iOS programming that nevertheless gets into some pretty advanced topics. It's how I learnt iOS development and published my first app.

But most importantly, you should be constantly talking to others about what you've learnt and applying those newfound skills to actual working projects. Keep building more and more projects, improving your skills as you go along and soon you'll be a fantastic software developer.

Footnotes

  1. Part of why I'm often so restless in university lectures.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment