25 Awesome Links to Learn Code at Lightspeed
By Vincent van Leeuwen.

I recently wrote a post on why non-technical founders like myself should learn some code instead of begging around for technical talent. Following the post, I got a series of requests by non-techies for a list that could get them up to speed more quickly.
Please note that I can’t promise that this list will turn you into a world-class hacker overnight. All I can show you is what I used to get going. I do believe though, that if you’re truly committed, you should be able to start hacking your own prototypes in a few months time.
Before we start though
I recently read a great post by John Biesnecker on the joys of having a Forever Project. When it comes to learning code, I couldn’t agree more on having one. Especially when you’re starting to learn programming, I believe it’s essential to have a forever project. And no, this should not be some project that you believe will make you extremely rich within the year. Instead, I believe this should be something you’re really passionate about. A project that is hard to imagine actually embarking on, but “whose mental cost of abandonment is far too high to even consider” [^1].
Often it’s a game of some sort.
I would never have learned to code as quickly as I did without my personal forever project. Programming is hard. It will suck. And then it will suck more. Until, after hours of struggling, it finally works, and you don’t really care anymore. That’s the nature of it. And this is exactly where forever projects step in: Having a project you’re really committed to forces you to go through with it. It gives you a goal to strive for.
In addition, I found that having a forever project helps you relate. Programming tutorials are getting better by the day, but you can’t prevent that they’re very abstract at times. This can be difficult, especially when you don’t have a mathematical background. Having a forever projects helps you to relate some of this abstractness to your own situation. It gives you context and perspective.
Client / server side spectrum
As I’m not a true techie myself, it feels a little out of place to be the one explaining you this. But before we start, you should probably read a little bit about the difference between client side and server side programming. This will help you considerably to understand how programming for the Web really works underneath the surface.
Done?
Alright then.
Let’s dive in.
The Basics
1) HTML - W3Schools
I used W3Schools to learn the basics of writing HTML tags. Although probably not the most sophisticated resource out there, I like it a lot. It’s pretty old school, taking you from the very basics like paragraphs and images to more sophisticated stuff like forms. In addition, the tutorials are short and concise. Which makes them ideal to do some just before you go to bed (instead of watching yet another episode of Family Guy).
Regarding the HTML section, I would say that if you’ve made it through to HTML Colorvalues, you’re probably good to start some css.
And: don’t forget to do the awesome HTML Quiz :)
2) CSS - W3Schools
More of the same, this time diving into pages and styling them with CSS. This is probably pretty straightforward stuff by now, and hopefully where the fun starts. I personally always thought that messing around with CSS was a lot like making a painting, which I already thought was cool when I was just 5 years old.
And again, don’t forget to do the awesome CSS Quiz :)
3) Choose a text editor and start building stuff
If you’ve done all HTML and CSS courses, you should be able to start messing around. There’s only two more things you’ll need to do first:
A) Pick a text editor
I use TextWrangler, which works fine for me, but there are better ones. Whatever you do, don’t use Dreamweaver.
B) Debugging HTML
One of the disadvantages of writing HTML is that it’s quite a stupid language in terms of debugging. If something crashes, it doesn’t tell you where and why. Luckily for us, I recently found an awesome plugin by Kevin Burke that does just that. I’ve made a simple “plugin-ready” HTML document available for you to work with here. You’ll notice that if you for instance don’t close the “foo” div tag, it will throw you an error where things went wrong. Trust me: this will save you a lot of time and frustration.
OK, in terms of your forever project, you should now be able to design and build your own landing page. Off course the signup forms require some logic that you’re not capable of (yet). For this, you can therefore use embeddable forms like Betali.st, Wufoo or Google Forms. From a Lean perspective, I would recommend including 2-3 questions in your signup form (via Wufoo for instance), so you can do some early validation on some critical assumptions your business proposition has.
4) Subtlepatterns
This probably belongs more in a design tutorial, but still. If you’re in need for an awesome background, this is the place to be.
5) Twitter Bootstrap
You might have noticed how some Websites are starting to look more and more like one another. Bootstrap is the reason why. It’s a powerful front-end framework originally built at Twitter by @mdo and @fat. It will save you a lot of trouble. You can call UX elements like Grids, layouts and buttons with pre-defined HTML tags without ever having to write any CSS yourself.
I love Bootstrap. Any monkey can make a beautiful Website using this, which is probably why it’s the most forked Github repository by far. And, not unimportant, the docs are excellent too.
6) Advanced HTML & CSS
I never used this one myself, but merely stumbled upon it when writing this post. Still, it looks like an awesome resource for doing cool stuff with CSS3 and HTML5 if that’s your thing. One tutorial I thought was pretty awesome: Lesson 7: Transforms.
JavaScript and jQuery
Before diving in, I feel compelled to tell you that I personally never really learned JavaScript (JS) or jQuery by the book. I just kept messing around with it until it worked. Especially because you can use JS client-side, it only requires some basic knowledge of HTML & CSS to get started.
So you might be wondering: (as was I)
What is the difference between jQuery and JavaScript?
JavaScript is a language. jQuery is a library built with JavaScript. jQuery was designed to help JavaScript programmers by extending JavaScript functionality. Often, jQuery plugins will provide a shortcut to make stuff easier than it would be in raw JavaScript (credits StackOverflow and Microsoft).
OK then, let us continue.
7) jQuery basics: Codecademy
Actually you can use codecademy for much more than just JavaScript, including HTML/CSS, Python and Ruby. Since I only used it for the jQuery & JavaScript tutorials (which are excellent), I included it here. I found the Codecademy tutorials very entertaining to do. They are short and concise, and include some gamification elements to give you instant feedback on your progress.
If you feel like trying some jQuery plugins to get a hang of it, here is a really cool overview of what’s out there.
8) JavaScript basics: Codecademy
The JavaScript tutorials are more of the same, and will get you going on some real programming concepts like Functions, ‘For loops’ and ‘While loops’. I personally never made it past tutorial five, as I’m impatient by nature, but I guess the more you make, the better it is.
When you’re done with the basics of JavaScript, the Codecademy Projects tutorial might be a pretty cool starting point to start experimenting with all your skills combined.
Side note on debugging JS:
One of the problems I always have with JavaScript is that it either works or it doesn’t, much like HTML. And if JavaScript crashes, it doesn’t give you much feedback why. A good tool I can recommend to test whether a certain JS snippet is going to work or not without having to edit your whole HTML code is JSfiddle.
Alright then, let’s move on to some cool JS libraries that I enjoyed messing around with:
9) Bootstrap JS
The Bootstrap JavaScript snippets are pretty cool and well documented as usual. These are a nice starting point if you’re new to implementing JS snippets into your webpage. I found especially the Carousel pretty cool when doing product visualizations and the likes, but also dropdowns, modals and tabs have proven very useful.
10) Highcharts
If you’re ever going to use any charts to visualize data: Use Highcharts. It’s awesome.
11) d3js
I never really used this one myself, but it looks even more awesome than Highcharts when it comes to visualizing large data clusters. Probably a little more difficult to set up, so wait till you’re a little further before diving into this one.
Python
Before you start to download a Python release, it might be worthwhile to mention that there’s a big difference between Python 2.7.X. and Python 3.X. For reasons that go beyond the scope of this post (and probably even beyond the scope of my brain for that matter), the creator of Python, Guido van Rossum, decided that the syntax needed to be altered with Python 3.
So which one to pick? Unfortunately, I can’t make that choice for you. I guess it really depends on what your objectives are. For me, I just wanted to do Web development on my forever project using Django. If you’re to use Django, Python 2.7.3 is the release you should be using for now.
12) Biteofpython
Great book that is meant for newbie’s and that cover the basics of Python programming.
13) Diveintopython
Decent book that used to be very popular. Little problem with Diveintopython is that the guy who wrote it has disappeared from the surface of the earth. This makes it hard to find demo code snippets as he removed all of those too.
From my experience, I think that in general you should stay away from too much theory as much as possible. In the end I felt you learn most by just doing. The following are therefore a very warm recommendation:
14 Google Python classes
The Google Python classes were very useful to me, although I had difficulties finishing all of them on my own. Probably wait until you’re a little further (for instance after reading Biteofpython) to get going with these.
15) Learn Python The Hard Way
I actually only found out about these while writing a previous blog post, but this looks like a very good resource, maybe even to begin with from scratch.
Some great Python packages that will make your life a whole lot easier:
16 & 17) Pip install & Virtualenv
If you’re ever looking to install a new Python package (like Python-requests and Django that are listed below for instance), Pip is your friend. It enables you to install Python packages seamlessly with just one command line request.
Pip also has its counterpart, easy_install. But for a reason that goes beyond my Jedi powers, apparently you don’t want to use that.
18) Python-requests
Great tool if you’re ever going to do anything with APIs, or opening files over a url.
19) Beautifulsoup
If you’re ever going to scrape Websites (using Requests for instance), you will find that a lot of them are unreadable due to HTML tags. This beauty helps you to separate the wheat from the chaff.
Django
When I picked up coding, my purpose was to be able to do basic Web development. Therefore, after the basics of Python, I quickly proceeded to learn Django. Django is a very straightforward framework that enables you to build websites very quickly. Resources that were very useful for me included:
20) Djangobook.org
The official body that explains the basics and gets you going in building some basic apps like polls and stuff.
21) Beginning Django Ecommerce
This book was very useful for me. Especially if you’re looking to build a products that requires user logins and/or shopping cart functionality (moving objects across databases) this book is great.
Wrapping up: Some final gems and nuggets to get you going:
22) XML & JSON
Both are structures designed to transfer data. I personally never really learned XML, as I prefer JSON. If you work with Python, JSON is great because the syntax is very similar, basically enabling you to access data via dictionaries straight away. A great Python encoder/decoder for JSON that I really like is simplejson.
23) StackOverflow
Whatever problem or error code you Google: if there’s a result that links to Stackoverflow, click it. Man, I love this site. Almost any problem I ever had I fixed via Stackoverflow. To keep Stackoverflow this awesome though, please take the following into account: Never ask a question before you have thoroughly checked if this particular question hasn’t been asked before. Although I do not share recent sentiment about Stackoverflow becoming too much of a lazy noob place, I do see how it’s annoying to some that certain people are throwing questions out there that have been answered before. And believe me, your problems are peanuts. At the level you and me are at, it’s highly unlikely that someone else before hasn’t asked the problems we’re encountering.
24) Version Control: Git
I only have experience with Git as a version control system, but there are many others. Why you need such is beyond the scope of this post, but trust me: You do. Especially if you’re going to work on projects with other people. I found that the official Git docs do a great job explaining how Git works and why you should use it.
An advantage that comes with Git is that it integrates seamlessly with other cool stuff like Github and Bitbucket. Both are online repositories that allow you to share your code with others. Github has a strong focus on open-source (open source repositories are free, private are premium), while Bitbucket also offers private repositories for free.
25) Heroku
I can’t speak for Ruby but when it comes deploying & hosting Python/Django apps this thing its nuts. It’s free (as long as you’re small), hosted on Amazon EC2, and super easy to deploy using Git. In addition, Heroku allows you to host a PostgreSQL database for free. Only problem comes with static files. You probably want to put those somewhere else. Once you scale, Heroku will become expensive, but that’s none of our concerns for now.
A short note on Ruby and Node.js:
I started programming in Python because of two good friends, @dwightgunning and Aksel, both of whom I’m still very grateful. Although I have no way of comparison, I found that Python is a very friendly language to learn. Still, it is not the end of the universe of course. If Ruby is more your thing: here is an excellent blog post by Will Miceli that provides great links to Ruby / Rails resources. For Node.js you can check out NodeTuts (kudos @jvduf), while for PHP you might want to check out SexyPHP (kudos @PeterJaap for providing us with such a classy recommendation :) ).
But still, I feel compelled to ask: Why would you want to learn anything other than Python? After all, the Dutch invented Python, so it must be good :)
OK, that was it. If you’ve made it to the end: Sorry for this (admittedly) long post. I hope though that it will help to convince you to pick up some coding and maybe speed up the process.
If you have any recommendations that you believe should be included in this list, please do share them in the comments below. The more good resources, the better for all.
And, off course: I wish you loads of luck! May the force be with you :)
—
If you found this post useful, you can help us by sharing it. Also, feel free to leave a comment below, or drop me a line. I love to hear your feedback. Thanks!
Image credit: anieto2k
[^1]: Awesome quote stolen from John Biesnecker.