I'm working on a knowledge management/internal wiki tool for organizations.
check it out

Learn to code, where to start ?

You have seen that more and more companies are looking for developpers and developpers are able to create websites, applications, tools, automation softwares but you never understood how to do all that by yourself, or you maybe didnt have the motivation to start learning, this article is here to help you understand what is achievable by a developper and how to start being one.

Some definitions

  • A programming language is more or less a language that allows someone to talk to a computer, for example in this language you could have a word print wich displays something on the screen, so when you write print hello inside a language interpreter the computer will show hello
  • A language interpreter is a program, as firefox, or chrome but instead of seeing webpages, you can type some text and the programm understand the programming language. For example the image below I typed print("Display this message!!") and typed Enter and the programm displayed Display this message!! interpreter
  • A programmer ( or a developper, or a coder or a software engineer) is someone who knows a programming language, some developpers will know how to create an app some will know how to create a website, it is not because you are a developper that you can code anything.

When you want to become a developper or just want to learn how to code, there are more things to learn than a programming language, yes you need to know at least one programming language, but for example if you want to create a website you also need to know how to make the programm available to see to others (how your website can be available on www.yourname.com ?), if you want to create an app, you need to know how to publish your app the Android play store. I will explain bellow the steps to reproduce depending on what you want to create.

Note : I recommand to start by learning how to create a basic website before anything else, so that you can start learning with something you can see. Also don't forget that trying to learn something is much easier if you apply what you learn, so think to an idea of website you would like to create before starting learning.

You want to create a website

If you want to create a website there are several languages to learn:

  • HTML, This is a language that allows you to structure a website page, so which text you want to display, wich button, a link to another website, this is a very simple language
  • CSS, this is a language that will allow you to style your website, do you want this button to be red? this text to be in italic? 30 pixels of blank between two buttons?

As a simple example, if you copy the text below in a text file on your computer and you open it with google chrome it will display like the image below

<html>
<body>
<div>Hello this is the first text</div>
<div style="color:blue">And this text is red</div>
<button>Click on me </div>
</body>
</html>

interpreter

I'm not goint to teach you CSS or HTML, there are lot of tutorial on the internet and a lot of books that teach it, just google "learn html and CSS" and you will find plenty of ressources, The most important is not to have the best tutorial but instead to dedicate some time everyday to it for a few weeks.

When you will have created your website you will want to make it available to everyone to see on the internet, so you need to buy a domain name for example "www.thisisthebestwebsite.com" for example you can go here

Then you need to buy a hosting plan, usualy there is one free with the domain name, when you have it you have to send your HTML and CSS code on the hosting plan, and voila your website is reachable by anyone

If you want to make your website dynamic

With the languages we have above you can only create static pages with links, so no forms, no buttons, That would be enough to create news website for example, because the news website just show the same pages to all the users and it is like reading a paper newspaper on the internet.

But if you want to have buttons or that your website reacts to events, like click or mouse move, for example if you want to build a game, then you need another language : Javascript

Javascript is much more complex to learn than HTML and CSS, because this is a real programming language, you can code almost anything you want with javascript and this is the only language you can use to create a dynamic website, because this is the only 'real' languages that the browser (Chrome, firefox, safari) understands.

So same as HTML and CSS, type 'learn javascript' on Google to find ressources

Your want a website which can save information

With javascript you can create a dynamic website, but you wont be able to save information, or exchange information with the website, for example you cant enable your user to register or to login. If you want people who go on your website to register or exchange information (for example let users upload a CV to you) you need to learn again a new languages, but for the first time, you have tons of programming language you can choose : Python, NodeJs, Ruby, Java, C++, Go .... almost any programming languages can be used here. This will be your Backend, and the javascript part of your code will be your frontend

So which language to choose ?

I suggest Python or Ruby, but it honestly doesn't really matter which one you pick, Python an Ruby are probably the most simple to use and when you use Python alongside Django or Ruby alongside Ruby on rails you will get a language that is adapted to web, but are still without any limit (Instagram was initially built in Python/Django, Airbnb was initially built on Ruby/Ruby on rails), if you have a friend knowing any them it is probably a good idea to pick the same one so that he can help you at some point.

So choose one (personally I used python) and type on Google 'learn Django' if you picked Python and type 'learn ruby on rails' if you picked Ruby

Now you will also have to learn the concept of a database, which is just a way to store data and retrieve it, like a dictionnary.

You want to create a mobile app

Creating a mobile app is at first much more complex than creating a static website, but after you have learnt it then it gets easy as anything else.

There are 3 possibles types of mobile app:

  1. An app for Android only
  2. An app for IOS only
  3. An app for both Android and IOS

For each types the way of building the app is completely different. You probably ask yourself, why not everyone is creating an app for both IOS and Android, and the answer is simple, if you create an app that works for both then you will have a lot of limitations and performance drawbacks, as a result most of the company that you know that have an app, have two apps, Netflix has an app for IOS and another for Android, same for Facebook, same for most of big companies, and if you have an android phone and an iphone you can see that on both phones are the app look the same but they have some differences visually, because they are different. But the advantage of creating an app for both is that it is probably going to be easier and faster (than creating two), there will be some limitations and if you make the wrong choice you may have to recreate your app from scratch in a few months because your reached the limits.

So if you want to create a simple app, like an note taking app, an alarm, then you can go with 3, but if you want to create a game or sync files (like dropbox) it is probably a good idea to create a different app for Android and IOS

If you picked 3., then there a few different languages that you can use : React Native, Ionic, Flutter, Xamarin, Cordova , search on google the one that is most adapted to what you want to build

If you picked 2., then there is only two ways, Swift or Objective-C

If you picked 1., then the two most popular ways are : Kotlin or Java

You want to create a desktop app

This is probably the most complex thing to build, an example of desktop app is Microsoft Word, Photosphop, Notepad ++.

There are so many ways to built them, and you can use so many language that is almost impossible to create an article to cover everything, but if this your first app you will probably have to use a graphical interface framework which is more important that the language itself, example of such framwork are : QT, GTK, Electron, Unity. Depending on what you choose your app may work only on Windows, or only on Mac or both of the them at the same time.