Everybody’s Who’s Anybody is Doing It
Almost everyone I talk to has at least a latent interest in coding. We all recognize the value of it. From Excel macros to personal web sites to Big Data (buzzword!) services, we’re all consumers of code–and eventually every one of us has that big app idea. “What if there were an app that could…?” “I wish I had an app that…” “They can make computers drive a car, tell me when my baby’s hungry, and spy on everyone in America, but why can’t my smartphone tell me…” (I’m having trouble coming up with something to finish that line. What can’t smartphones do now?)
Of course, there’s always going back to school. But only the nerdiest nerds find that path appealing. More often than not, the people I talk to want some tips on what they could do in their downtime at work and on the weekends at home to learn something useful. Since that’s kind of how I got into the game, I thought I’d share what I found useful. Again, this is just How This Dummy Did It. If you’ve done the same thing but different (and maybe better), I’d love to hear about it.
An Embarrassment of Riches
Truth is, there are more resources available to you than there are fans of Double Stuff Oreos. (Dear Nabisco, please sponsor this blog. Oreos preferred, cash acceptable.) Things have changed a lot over the last decade. When I started learning to code there was already an incredible wealth of information–a lot of it for free if you had access to the interwebs. But there were shelves and shelves of “Teach Yourself [Insert Technology Here] in 24 Hours” books well within reach of my allowance, too. Those kinds of books are still around, by the way. So there’s tip #1. If you already know what technology you want to learn, find a book on it.
As much as there was out there for the taking as soon as I got my first NetZero account, what’s available to the general public today is stunning. Coding has been called the literacy of the 21st century, and that’s not hyperbole. The job market demands more and more sophisticated computer skills. Knowing basic word processing no longer counts as being computer literate. And the number of technologies available just keeps growing.
The same thing that makes all of this overwhelming is the same thing that makes it awesome. There’s a website, a blog post, a discussion forum, an online pdf, a something-something for everything. This places you in the resource paradox presented by the interwebs: with so much info and so many resources available, where do I start?
Where you start learning to code will depend on a number of factors. I’ve come up with the following matrix–not to help you decide, but because this is how my brain is starting to work. (Unfortunately, it’s not interactive. You can click it if you want, but you’ll be disappointed. Unless you get satisfaction just from clicking the mouse. You like that “click-click” sound.)
There’s a pretty big spectrum available within that matrix. For the sake of argument, I’m going to imagine you fit a particular profile (the profile I fit when I got started) and take it from there.
But take that matrix at least a little seriously. Setting some realistic goals and plotting a learning path that’s right for you is going to be tremendously influenced by things like your self-startion. If you’re not a self-starter, you probably need at least a group of demanding friends with similar interests who will push you a bit. (Low on self-startion? Better be high on mentors!) If you have a really focused vision that involves programming mobile apps that call custom web services, but you have no equipment and no money, you might be backing yourself into a corner. That’s where the daring-do (yup–My Little Pony spelling; you’re on the interwebs now, brony!) comes in. If you’re low on current knowledge but high on smarts, you might be able to take a more accelerated approach than someone who’s low on smarts. So figure out where you are and where you want to go. If you have just have a vague, tangential interest in “coding” but no goal in mind, it won’t hold your interest.
Starting from Scratch (SFS)
So here’s your profile: you wouldn’t characterize yourself as knowing nothing. After all, you fired up your iPad and found your way to this blog. You know your way around a touch screen and how to navigate the web. But as soon as people start talking HTML and C++, here comes the flop sweat. You barely got out of high school French with a D, and now you’re expected to learn how to talk to a machine? At least on that trip to Paris, people understood your pee-pee dance. You and this computer have only one thing in common–not matter how you behave, it’s never good enough for your mother.
Oh, and you have time, but no money.
If you’re starting from scratch (you have no real knowledge of code, you have no money, but you have time and the desire to learn (if you don’t have time, you should find some blogs on time management, work on that, then come back here when you have time (I like to use a lot of nested parentheticals))), you’re what they call a noob. They will ridicule you for it. It’s not your fault, but you’re just going to have to accept your position at the bottom of the totem pole.
To start, I’d highly recommend Charles Petzold’s book, Code. I started it a little over a week ago, and I’ve only had time to get about 70 pages into it. But I’m already recommending it to everyone because it’s the most brilliant crash course in the fundamentals of computers that I’ve read. And it’s actually a fun read! I owe Sean Owen a debt for gifting me a copy of it. I should point out, though, that it’s not a how-to. It’s a Miyagi. You want to learn how to fight, and Petzold is going to teach you how to catch a fly with chopsticks.
“Tyler, I don’t want that,” you say. “I appreciate what Miyagi did for Daniel, but I’ve got plans and ideas! I don’t need to read about the history of the telegraph and Boolean algebra to get it. I need to write code!” I hear ya! I’m also an impatient jerk. So I’m going to give you the same direction I gave myself.
Learn HTML. It’s easy, it’s free, and nearly everything uses HTML or some technology that resembles it (XML and XAML come to mind). It used to be primarily for web, but since everything is web, mobile, or has a mobile/web component to it, it’s everywhere.
Learn the new stuff: HTML 5. And since you’re learning the new stuff, you’ll need to learn CSS. Also free and easy.
One of the nice things about HTML is that it’s really hard to break your computer with it. You might have some trepidation about that while learning to code. You know people who built applications that rendered their computers useless. HTML doesn’t carry any risk. You’ll learn more about this, but HTML is really just a way of telling your computer how to dress up your content. HTML5 has put more functionality into the language, but for the most part it still doesn’t do much of anything.
I’m not going to make a whole lot of suggestions about where you should learn HTML and CSS. That depends on you. I’m kind of a book learner, but there’s so much online that it really makes the most sense to find some web tutorials. I like W3schools, but it’s not the most dummy-friendly. It usually assumes some working knowledge of a few things. They’re also some of the best about listing prerequisites, though, so give it a go. If you just want to start trying to write HTML, there’s a cool test bed that will show you what it looks like when it’s rendered. I’ve also heard good things about Codecademy and Skillcrush. I haven’t tried either myself, so let me know if you like them!
A big chunk of learning how to code will be learning how to search for what you need to know online. Unless you’re really good at memorizing and have the time and the initiative to read the HTML5 specification, you’re eventually going to have to Google something. And since new resources crop up every day, Googling stuff is always worthwhile. That thing you couldn’t figure out how to do yesterday? Six people published blog posts about it last night. Not about you not being able to do it. They’re not out to embarrass you or anything. They were just trying to solve the same problem and shared their solutions. (Get a Stack Overflow account. When you need help and no one will answer your calls, some nerd will have an answer to your question there.)
Another advantage HTML offers the aspiring coder is that you can look at everyone else’s. You can basically look at the source code of every website ever. Right-click any web page and select “View Source” or “Inspect Element,” and you can sneak a peek at how everything’s put together. I’m not saying it’s always an easy read, but if you want to know how this was made, with enough time and persistence, you could figure it out and mimic it. That’s a really nice feature to have when you’re learning. You can find an example of what you want to do, copy-paste, and tweak to your heart’s content. This is true of a few other languages, as well, but there’s no source as widely available as HTML.
In addition to being free and easy, HTML is a good base for other things. You can use HTML to render mobile applications. A lot of hosted services for things like this blog allow you to customize their templates and tools with your own HTML, which means you don’t have to build everything from scratch. You can find existing templates for almost anything and then change the markup in a few places to make something surprisingly unique. Knowing the format of HTML will make also make learning XML easier, which will definitely come in handy.
Before you head off into the night with reckless abandon…
I mentioned this before, and I’ll mention it again. Have a project. Build a personal website to post your favorite recipes or display pictures of your dog (or the pictures you’ve been taking of your neighbor’s dog because you’re some kind of weirdo). Start a blog on a host like and write all your posts in raw HTML to practice. Make sure you use headings and images and fun stuff like that. Build a website to host your personal brand, or for that company you keep starting in your basement. It doesn’t have to be pretty. You don’t even have to publish it to the world. You can just have it on your own machine. (The tutorials will show you how.) If you don’t have a project, that’s what makes learning code difficult. There are too many things you can do with a little bit of computing power and a little knowledge. If you don’t know what your goal is, you’ll just get lost in a sea of tutorials trying to tell you things you have no idea how to apply. Figure out what you want to do, then target your learning toward that.
So that’s one way in. In future posts, I’ll talk about the path I followed into making my computer do stuff. HTML is a great, low-risk introduction to coding. But I didn’t get really interested in code until I started to learn how to make my computer automate things for me. It’s easier than you think!
Love and kisses,