Learning To Code as a Non-Techie


Does the thought of programming send shivers down your spine? Well, you’re not alone. For most people, coding seems about as doable (and as interesting) as solving differential equations. One look at a programmer’s screen is all the proof you need that coding is just mathematical gibberish. Right?? Wrong dumb dumb! You’d be surprised at just how easy it is to learn the basics of building a website or even an app.


Random wall of code

Is it any surprise that most people are intimidated by the thought of coding something like this?



I’m not talking about using WordPress, DreamWeaver or some other application to help you build a site. I’m talking about actually writing the code for a website or app from scratch yourself.

Alright, fine - it might not be that easy if you want to learn some advanced programming languages like C++ and build the next Photoshop. But, learning how to create websites and apps? Not nearly as tough as you might think!

Learning to Code is Like Learning to Speak Spanish
(except for all the words and rules you use)

Learning how to code is really just like learning a foreign language, except without the exotic allure. You’re just learning how to talk to computers instead of to people. You type certain words and your computer (not really your computer but we’ll just be moving on…) tries to understand what you mean. A large part of programming is simply learning which commands to use to talk to your computer in way it understands. You don’t need to be a genius or have a technical mind; you just need to learn how to speak a new language.

A future coder talking to a computer in a strange language

Choosing the Right Programming Language for You

There are a LOT of programming languages out there and each of them has its own set of nuances, rules and quirks. Some of these languages are shockingly useles but most of them have some sort of purpose. However, don’t get overwhelmed by all the possibilities. You only need to learn a couple languages and you’ll be good to go.

If you’re interested in learning how to build websites, there are three must-learn languages:

HTML is an organized and straightforward (maybe slightly boring) kid who plays a major role in every single website out there.
CSS is HTML’s artsy cousin with a flair for design. They never leave each other’s side and are almost non-functional without the other close by.
JavaScript is HTML’s cool uncle who brings your site to life. He was letting himself go a little but recently found jQuery and has really turned himself around!

Now, there are tons of websites built with only these three languages. However, some people are going to need more POWER. If you’re interested in building something more complicated (not necessarily a website), you’ll probably want to try your hand at one of these languages:

Java is the hardnosed businessman without much room for nonsense. It has a lot of traction with businesses and it don’t take no shit. By that I mean that if you misplace a semi colon your program will crash.
C++ is the slightly edgier co-worker of Java. The two are pretty similar but C++ is a little bit snazzier and a little bit more susceptible to crashing after a weekend bender.
PHP is the Craigslist of programming languages. It’s ugly and a little gross but makes up for those flaws with its simplicity. It doesn’t feel right but millions of sites use PHP (including TutorGrams) so there must be something to it.
Python is the highschool valedictorian teen who also happens to be a star athlete, get a full scholarship to Harvard and also hang with the cool kids. But underneath it all, she seems a little bit too perfect.
Ruby is Python’s younger, hipper sister. She’s got a lot of the same appeal as Python but throws in a little bit more personality and weird quirks just so you know she’s human.

Admittedly these descriptions might not have been all that helpful. So, to put it simply:

If you’re looking to build websites, you need to learn HTML, CSS and JavaScript. You should also strongly consider learning one of: Python, PHP or Ruby eventually.

If you’re looking to build apps, you need to learn Objective C to build apps for Apple devices and Java to build apps for Android devices.

If you’re looking to build software programs, there are many possible options but C++ and Java are two of the most popular.

Just Do It

The first step is deciding which language(s) you're interested in learning. The next step is actually figuring out the different rules and commands that make up the language(s) you chose. The best approach we’ve found is to read a little bit about the language, maybe watch a few introductory tutorials and then immediately try building something very simple. Maybe just a blank web page with your name in fantastic red coloring. It’s tempting to try and absorb as much information as possible before building something but that’s a good way to become overwhelmed. The sooner you give it a go, the sooner you’ll realize that it really isn’t that difficult.

Gradually start adding more complicated features by reading briefly about them and then trying to put them into action. Maybe make a list of links on your web page, set a background color or include an image. Good! Now keep going. Keep adding more complicated features. For instance, if you’d like to build a website; look at a typical website page and notice every element that goes into it. Now slowly make your way through trying to copy the elements on that page. Make a navigation menu like the one you see, try to organize your page in a similar way, make some spiffy buttons that resemble the ones you see etc. The key here is to not feel like you need to understand the entire language front to back before using it. Just start using it!

The Rebarbative Constitution of Programming Lingo

You’re going to run into terms and explanations which make no sense at all but keep moving forward. A lot of these terms and concepts are actually very simple but have terrifying names and over-complicated definitions. It’s almost as if programmers want to seem more intelligent and badass by using the most intimidating words possible. Keep moving. Don’t get slowed down by trying to understand every piece of the puzzle. Just keep trying to gradually build a more sophisticated website, app etc.

What Programming Tools Do You Need?

To be honest, you really don’t much to get started with programming. The bare minimum is just a notepad-like program to write your code in. Although a simple text editor will do the trick, it’s easier to write code with an enhanced text editor like Notepad ++ and Sublime Text. These tools offer quite a few benefits but the main perk of them is “syntax highlighting”. This just means that your code will be highlighted in a way that makes it more readable.


An example of non-highlighted code in Notepad

An example of syntax highlighted code in Sublime Text - much nicer!


There are a lot of other tools out there and a lot of people will tell you how much you absolutely need them. But, you really don’t need much more than a text-editor to get started. As you start doing more complicated things you will run into tools that can help you but don’t get overwhelmed trying to work with all the “must-have” tools right off the bat. All that being said, there is one type of tool that can be very helpful even if you’re just starting out:

Photo editors. These allow you to create graphics, manipulate images, design headers and much more. Almost every website or app out there uses graphics (except for maybe Craigslist) and having a photo editor can make using these graphics a lot simpler. Here are a few popular choices:


Photoshop is the go to photo editing tool out there, but it's pricey

GIMP is a free alternative to Photoshop that still gives you most of the photo editing functions you'll need

Paint.net is another free photo editing program which offers most of the basic functionality you'll need.

Finding the Right Programming Resource for You

There are a TON of resources out there for learning how to program. They each have their own set of strengths and weaknesses. I wish I could just say you need to use so-and-so method to learn JavaScript, this course to learn C++, this website to get the basics of PHP down and so on. But the truth is that the right resource is going to depend on your situation. How do you learn best? What kind of budget do you have? Do you prefer learning from home? How quickly do you need to learn? And so on.

School Classes for Coding

These are pretty self-explanatory, you go to a local school and register for a specific class on how to learn a language such as HTML. Programming classes can be a good option but suffer from the pitfalls of most classes: the lesson isn’t tailored to your needs and you’re sharing the teacher with many other students. On top of that you have to get dressed and leave the house.

Recommendations

Your local college, university or technical institute will likely offer some sort of coding classes



Official Programming Guides

Every major programming language will have an official guide which outlines exactly how you can use it. However, most of these aren’t created for beginners. Learning how to program with these guides is a little like learning how to speak English with a dictionary. These guides are usually a great resource to consult and figure out exactly how you should accomplish a certain task but they leave a little to be desired when it comes to learning a language from scratch. All that being said, some of these guides are still a good starting point.

Recommendations





Online Coding Courses and Tutorials

There are a lot of great online courses out there to learn programming. A lot of them consist of video tutorials, some interactive exercises and a quiz or test at the end. The great thing about these courses is that you can learn from your own home and at your own pace. There are tons of options to choose from. You can go with some sites that offer a monthly subscription of around $30 for access to video tutorials, exercises and what not. Or you can choose a more formal approach where you enroll in online classes with a curriculum, clear assignments, lectures and so on.

Recommendations





Interactive Coding Lessons

One of the best things about coding is that you can immediately get feedback on whether your code is correct. If your website or app crashes: you probably did something wrong. However, it can be a little (just a little) frustrating when your website or app returns a blank screen staring at you, waiting for you to figure out what went wrong. This is where interactive coding lessons come in handy. You’ll usually get to write code directly in your browser (as opposed to in a text-editor) and receive detailed feedback on the code you write.

Recommendations



Programming Forums

Stack Overflow is quite simply fantastic. It’s a forum where you get to ask programmers specific questions and get feedback on what you’re doing. They will often tell you exactly where your code might be going wrong. Stack Overflow isn’t a tool for learning a language from scratch but it’s a great tool for fixing problems as you go along. Most developers are constantly using Google or Stack Overflow to help them out when their code is being uncooperative.

Recommendations



Programming Tutoring

Tutoring is a great option if you’re the type of person who learns best with a teacher guiding you along the way. There are times when you’ll be ripping your hair out trying to figure something out which could be explained in a couple minutes by a tutor. Tutoring can save you time (and hair) but it's not for everyone. A mix of learning on your own and working with a tutor when you hit roadblocks is often a good approach.

Recommendations


(possibly biased)

Parting Advice

Now, I have some bad news for you. The first websites or apps you make are going to stink. Like really bad. That doesn’t matter though. The important part isn’t making a beautiful, functional website or app right off the bat. The important part is learning the basic building blocks of making a beautiful, functional website or app and gradually improving over time.

As you’re learning, you’re going to run into many different technologies, lots of different advice and a fair number of speed bumps. Don’t get discouraged or overwhelmed. There are usually many different ways to solve a problem and you don’t need to learn about all of them. Some people are going to scream that you need to use a certain language or a certain method but don’t get bogged down by all the things you “need” to do. Find what works for you. Just keep trying to build something better and better until one day it all comes together.



Good luck!