As a software engineer, I am often asked by friends what the best way to learn to code is. This post is going to be dedicated to the easiest way to learn programming.

Code Definition

To Code, also synonymous with Programming is "the action or process of writing computer programs. 'Program,' in this context can be defined as instructions for a computer or a machine to perform a particular task.

Why learn to code?

Computers are a part of everything that we do. Literally, everything; all aspect of our lives involve computers to some degree, from making a phone call, to running our dishwasher. Having the ability to control and manipulate computers is an extremely valuable skill.

Should I learn to code?

Programming originally was only accessible to those with years of study and an expensive degree, however their is not a plethora of free and open knowledge, and coding is becoming mainstream. Schools across the globe are increasingly incorporating it into their curriculums, and even an ex-president can do it.

But the real question is should you code?

I think that with our ever increasing societal dependence upon computers to run every aspect of our daily lives, the ability to code will become an essential skill.
I’d compare it with learning math at school, even if you don’t end up being a mathematician, a basic concept of numbers is an essential life skill that will help you perform tasks such as splitting a bill or calculating discounts. Similarly, I believe that having a rudimentary concept of coding will be a necessity of our technology-reliant future.

"Learn to Crawl before you walk"

Where do I start?

First, you need to think about your goals. Do you have a project in mind, or do you just want to learn to program? (Think about this question, and we will readdress it later in the post)

The basic constructs of coding involve writing some text in a document, saving it, and then running the code. To get started we need to have to install an editor:

Terminology

It's super easy to get confused with all the 'code' jargon out there, so here is a simple glossary to help you get started:

App: this is essentially a program that you can just download and use on your computer or mobile device. E.g you can download an app from the iOS app store.

Plain Text: plain text means a file, has no formatting or tagging. This means that the files only value is the word and the characters.

Language: A programming language, is the language that a program is written in. There are many different languages. For example, Javascript, Python and Swift are all programming languages.

Markup Language: A markup language is a simpler version of a normal programming language. It isn't able to do as complex things, and its main ability is to transform or style. There is some more information on this further on.

Editor: The application on your computer that you use to write and edit the program. It's what you code in.

Code highlighting: Also referred to as syntax highlighting, is a feature in a code editor, where it knows the language you are programming in, and it highlights words to help make your code more readable, and show typos (spelling mistakes).

Autocomplete: Is similar to syntax highlighting, in that the editor is aware of the programming language you are coding in, the editor then makes word suggestions based on what you are writing.

Editor

When writing programs, you write these programs in a plain text editor, a plain text editor is something very simple that just lets you write text, no formatting (bold, italic etc), computers don't care about this; these are built for Windows, macOS + Linux. But most developers like to use something a little bit more advanced, with features such as code highlighting and autocomplete.

To get started I recommend downloading Atom. It is a free text editor, that has build in code highlighting and autocomplete.

Hello World

Any time you learn a new programming language, there is a right of passage to write your first 'hello world' program. This is a tradition that stems from the 1970's Hello World, Wikipedia

Start simple. Really simple.

0. Learn Markdown:

Programming is all about transforming words -> instructions -> actions.
To slowly introduce transforming words itis good to learn Markdown. Markdown is not a programming language but a text markup. It’s as basic as it gets, and a great, super easy place to start (this post was written in markdown).

This is a great site to learn the basics of Markdown:
markdowntutorial.com
You can use this site dillinger.io to visually see the markdown preview as you type.

Here is the most basic hello world example in markdown:
e.g.
**Hello World** ==> Hello World

1. Learn HTML:

The most basic use of learning to program is to simply be able to edit a website. HTML (Hyper Text Markup Language) is the heart of the web and is the base for every single website you have ever been on.
Learning HTML is a great next step after markdown, as it gets slightly more complicated. Here is an example of a hello world in HTML:

    <html> 
      <body> 
        hello world 
      </body> 
    </html> 

you can just put the code above in a text file and save it as whateverNameYouWant.html, then open it in a browser e.g. Google Chrome to see the results.

Learning HTML:
HTML on Codecademy

2. Learn CSS:

If HTML is the structure, then CSS (Cascading Style Sheet) is the style. CSS is how you style your HTML content.

    body { 
      background-color: light-blue; 
    } 

Learning CSS:
CSS on Codecademy

Choosing a path

You have now mastered the very very basics of programming and should now have the ability to create a website. This is a perfect start, and now you need to think about going beyond the basics. It's valuable to think about what you are trying to achieve by programming (like we discussed at the very beginning of the post).
Here are some possible and common paths to choose.

1. Further web development - Javascript:
If you have enjoyed learning HTML + CSS and would like to get the remaining part, then you should learn JS. JavaScript is one of the most popular languages on the web. It provides the behavioral aspect of a website and allows you to do technically clever things like creating a form or displaying a Twitter feed. If you are unsure about your direction, I highly recommend learning Javascript. It's a great general purposes language and can be used everywhere. Some very sophisticated bits of software have been made in entirely in JavaScript.

console.log('Hello World');  

Learning JS:
Javascript on Codecademy

2. Mobile Development:
If you are not very interested in building a website and building a mobile application is more interesting to you, you should learn iOS or Android development.

iOS: If you want to create iPhone and iPad apps, and you own a Mac, then Learning iOS Programming is an excellent way to learn to program. Swift is the programming language used to create iPhone apps and is a wonderful language (one of my favorites).

print("Hello World);  

Good Resources:
* Swift Book by Apple
* TeamTreehouse is an excellent website that I have personally been using for the past 3-4years. It has some of the best tutorials on the web, starting from beginners, all the way to more advanced levels. If you use my link you will get your first month 50% off: Treehouse

Android: If you would like to build Android apps, then you want to be learning Android development using Java. Java has been around for a very long time, and as such, there are ample resources for learning to code Java. Java is an older language, and as such a more structured and more difficult language. Unless you are super keen to build Android apps, I wouldn’t recommend learning Java as a beginner.

public class HelloWorld {  
    public static void main(String[] args) {
        System.out.println("Hello World");
    }
}

Good Resource:
* Once again, Treehouse has some excellent Android tutorials, and is a great starting place: Treehouse

3. General Programming:

If you are unsure of what you would like to program, or you have an interest in bioinformatics, maths, or programming to solve problems, then there is no better language to learn than Python. Python has been around for some time, and once again there are plenty of great resources for it. Python is often the first language taught by highly ranked schools in an introduction to programming and computer science classes. It's an excellent language that is easy to learn and can be used immediately to start solving problems. If you have no interest in programming websites or mobile applications, I would recommend you learn Python.

print("Hello World)  

Good Resources:

Codecademy also has some great interactive resources
Codecademy Python

Treehouse also has some good Python Resources:
Treehouse

Summary

Programming is one of the highest demand job sectors and can make a great career.

Learning to program, like anything, is much easier learned with a goal in mind and people find greater success with having a project to work towards. Something simple like building yourself a personal website, or creating a simple mobile calculator.

I hope the information above has been valuable, and please feel free to reach out via Twitter or email if you have any feedback or would like more information.