There’s a lot of chatter and hype around normals learning how to code. I’m fully in support of the hype because I (like many others) believe that understanding how machines work is an increasingly important skill in a world where human relations are increasingly dependent on networked applications.
As a result of that hype, if you sit down with an MBA interested in technology — with due apologies to MBAs for using them as the ultimate barometric gauge of hype — they will tell you that they are learning how to code. The typical evidence provided at this point in the conversation is an account at Codecademy (and all credit to the awesome team at Codecademy for this being the case).
Here’s how it goes: Before you even get started you’ve decided that you don’t want to be an engineer. You convince yourself that you provide enough value as “the business gal/guy,” and that you just need to know enough to call bullshit on the engineers. You, after all, know how to raise capital. You sign up for Codecademy. You spend 3 months deciding between Python and Ruby, because you heard Django was more powerful or something but Rails had better community support or something. You in fact have no idea what that means. You maybe do a tutorial or two. Oh wait, I should be learning Node.js. It’s the future. Then… hey what’s that shiny thing over there?
I’m allowing myself to move into snark:overdrive because I’m being self-deprecating. Yes, I, like many other business dudes and dudettes before me, have fallen into the abyss of half-assery.
Here’s how you manage to crawl out of it. Stop trying to learn how to code. Stop it right this instant. Doesn’t that feel nice? You didn’t really like it anyway, did you? Because it’s not really that fun. Syntax errors, terminal commands, servers, consoles, frameworks, libraries, gems, classes, models, views, controllers, fml.
You know what is fun? Making things. Turning a spark of creative insight into a thing that you can show people — a thing that people can use and from which they can derive some iota of pleasure or utility. Start with a simple website. Basic HTML and CSS. No product is too small. In fact, the opposite is true. If you don’t know how to build the first version of your product in a weekend — a usable working version, don’t try to build it. Programming is a means to an end, not an end in itself. You should be trying to do as little of it as possible to make the thing that you want.
Use tutorials like this one for Rails and this one for Python to introduce you to new concepts (and read this post while you’re at it), but as soon as it starts to feel like work, stop what you’re doing and use that newly-gleaned knowledge to build something cool.
Here are some other tools that I recommend:
As you build, you will actually begin to find that programming can in fact be fun! You’ll struggle for hours to solve a problem and literally clap out loud when you find a solution. Then when you realize that that single solution enables a whole set of user-facing features, you’ll pee yourself a little with joy (or because you’re so engrossed that you just couldn’t bring yourself to go to the bathroom. Go to the bathroom guys, that’s gross). The moment I discovered caching? zomg. The moment I discovered, while building an application, what MVC actually meant? Fuggetaboutit.
Here are some things I built in the last few months:
A personalized vinyl store based on your data from Rdio and Last.fm
See what your friends are liking on Tumblr
What the name says…
No description needed.
i.e. the alternative title for this post.
This isn’t rocket science. The only thing getting in the way is your commitment to programming as an end in itself, and your ambitions to build the next great social network for pets or nothing at all. Start small, make things, and then when you’re done, make some more things.