The DIY Ethos: Learning to Code 101 for Non-Programmers

created at: 01/19/2015If you’re a living person in the workforce today you’ve probably considered the use of learning to code at some point. This article takes a look at the why’s, where’s, and how’s of getting started with a new coding language.    

Why Learn To Code?

All of us use technology everyday, yet so few of us have a solid (or even basic) grasp on how our daily technologies function. As a young man with a solid DIY ethos, I feel an imperative pull to have at least a conceptual connection (if not an actual one) to the technology and contraptions in my everyday life. Numerous tech honchos have declared coding to be the new literacy and frankly it never hurts to add a skill set that will flex your brain’s computational problem-solving skills while also giving you the potential for a raise.

Especially if you’re a man with a DIY attitude who’s limited by physical resources, coding can be a great way to experience the zen space of a methodical building process, except without the need for tools or materials. Plus at the end of the day, you’ll have something cool and tech-geeky to show for it. 

Where To Start?

The first question to answer after embarking on a quest for coding literacy is which language to learn. Unfortunately that depends on what you’re interested in, and even then there’s some disagreement about which languages are easiest or most useful to learn. 

One thing that people often repeat is that no matter which coding language you pick, your first language is going to be the most difficult to learn. As with spoken languages, it takes time to wrap your head around understanding a foreign syntax and language structure, but once you’re able to get past that, it’s much easier to apply your newly limber conceptual framework to comprehending a second and third language. In that sense, the most important skill is learning to “think like a coder.”

created at: 01/19/2015If your interest lies in design and/or the front-end of web development it’s a fair toss-up between HTML, CSS, and JavaScript. HTML is the basic language you might have dabbled in in high school and has always been the one I’ve gone back to when I want a conceptual refresher. JavaScript gets a lot of love for being easy to dive into since it doesn’t require a lot of setup and it’s already built into web browsers. In my experience it seems like all three are important to learn if you’re interested in exploring interactive web design in any serious way. 

C on the other hand is one of if not the most popular language to learn, but it has one of the steepest learning curves. Lifehacker writes, “C is a ‘machine level’ language, so you’ll learn how a program interacts with the hardware and learn the fundamentals of programming at the lowest—hardware—level (C is the foundation for Linux/GNU)” and also makes the comparison that C is to programming what basic anatomy is to a doctor. Everyone that I’ve spoken to that started with C is happy that they know it, but only about half of them recommend it as a starting language since it takes so long before you can really do anything cool with it. That said, maybe you’re one of those people who doesn’t have a problem plunging in and sticking with a difficult course of learning and you just want to commit to being a badass from the get-go… then C might be a good one for you. 

created at: 01/19/2015Java (no relation to JavaScript) is either tied with C or in second place for popularity and happens to have lots of online places to learn it. One the big benefits of learning Java is that it’s incredibly practical and also allows for easily horizontal learning with other OOP languages such as Python, PHP, and C++.

Python is pretty well-loved for its simplicity and far-ranging capabilities. It generally requires fewer lines of code that are easier to read and is also more forgiving with mistakes. It’s been rising in popularity since it’s been used on websites like Pinterest and Instagram. It’s also the official language of United Space Alliance (NASA’s shuttle support contractor) which isn’t nothing. 

Places To Learn:

Codecademy is undoubtedly the most popular online resource and is noted for it’s easy lessons and interactive courses that allow you to see what you’re building in real time (see layout below). Take your pick between courses in HTML &CSS, JavaScript, jQuery, PHP, Python, Ruby, or general Web Development. Each lesson explains the next step in your learning, gives you a space to try it out for yourself, and then gives you hints if you make mistakes. I’ve personally found Codecademy extremely helpful as a kinesthetic learner. It’s the simplest introduction you’ll get to whatever language you choose; think of it like the Wikipedia of coding languages. I highly recommend starting here. 

CodecademyMIT’s Open Courseware offers quite a few courses you can pick through such as Introduction to Computer Science and Programming, Introduction to Programming in Java, and Practical Programming in C. The entire class materials are online including lecture notes, homework sets, exams and more – and it’s entirely free. Other great places to look for free course offerings are on Kahn Academy and Coursera, or try googling CS courses from Stanford University

Introduction to Computer Science is just one of Udacity’s many well-regarded college courses in coding. You can peruse the course materials for free, but this one costs money to take one of their guided courses (although it does come with a personal coach).

Finally, it’s worth looking for intensive code boot camps in your area. The courses are usually 2-3 month intensives for guys who are looking to improve their personal market value. These real-world courses have been cropping up all over in the past few years and are great for those who are looking to learn skill in a classroom setting alongside peers who are pursuing the same ends. 

Here are some great resources that helped inform this article if you want more in-depth information on the next steps in learning coding:

Dev/Code/Hack

 Lifehacker.com

 Learn To Code