Learning coding: where to start?

in #blog6 years ago (edited)

Last updated: December 08, 2018

If you don't want to read the whole thing and just see what can interest you, this article is made of different sections:

  1. Breaking the 1st myth
  2. Breaking the 2nd myth
  3. 3, 2, 1, let's code!
    a. I want to make games
    b. i want to make smartphone applications
    c. I want to make a website
    d. I want to make computer programs
    e. I want to make Data Science/AI
  4. Conclusion

The perpetual question: where do I start learning coding? It is easy to find free websites to learn coding like Udacity, Codecademy or Khan Academy. But it is always a challenge to know which coding language you should start learning. I don't remember how many days, maybe even weeks, I have been wasting just to find the coding language that was the best for me. Even now it can be difficult to find what I need in my job as a web developer: Which library to use? Which version is the correct one? Do I need to learn a new library or language? Even after more than 10 years of coding I am still learning, and I will probably never stop. And that's why blog posts like this one are important, because it gives us the opportunity to lose yourself in the depth of internet.

Time to time, I check on Google if there are new pages/posts explaining how to choose which language to start with when you want to learn coding. And as always, I can't find any (or they are not really visible). Let's change that today by showing you a list of coding languages depending on what you want to do, while breaking 2 big myth.

Breaking the 1st myth


Coding is hard: I don't remember how many time I heard people telling me that coding can be hard, that this language is more difficult than this one. It is true that some of them require a certain abstraction in their understanding but that doesn't mean that you can't do it. I am teaching kids from 9 to 17 years old how to code games with JavaScript and none of them found it impossible. Sometime, it can be difficult to understand what is going on but with the proper teaching, there is no impassable obstacle. And that's where a second myth appear.

Breaking the 2nd myth


I don't understand, so I can't code: If you're starting to wonder if you can code or not just because you don't understand something, just look at a growing baby. Do you think he or she understand something when you talk to him/her? It is the same with you and coding. Even if we say that you are learning a language, it is still something different. It takes time to catch what some codes are really about because we are not used to it. As an example, it took me 3 days to understand a simple JavaScript element (this.) because I've never seen that before. Every day there are things I see that I don't understand, but with time, I finally catch their meaning. Like I tell my students:

If you can fully understand 20% of the code you can see right now, it's the best thing ever!

3, 2, 1, let's code!


Now that we broke some myths about coding, it's time to actually start choosing which coding language we are going to learn. It will depend on many different aspect and I won't be able to detail everything in 1 post. I might end up doing multiple posts that will each talk about 1 aspect that I am going to develop here. When we want to learn to code, it's like if you were trying to choose a car: do you want it powerful? efficient? cheap? with options? Depending on all those different small aspects, you will have your final choice. The main questions you will have to answer are: What are you interested in? What do you want to create? Because yes, coding is mainly about creating stuff. Let's review the possibilities.


I want to make games


That is probably one of the most common thing that any new developer wants to do. In the gaming world, you will have the choice between using an already existing game engine or making your own. As for now, I will suppose that you know nothing about coding so creating your own engine is not an option. Knowing that, you will have to go for the other option. First, lets see the top 3 languages used in the game engine industry:

  1. C++
  2. C
  3. C# (pronounced C sharp)

C++ is the monster on top of the podium. When you look at the game engine list on wikipedia, it is used as a primary language in 78 cases when C is only in 18 cases and C# in 9.
Another very important point is the community around the program. You will fastly learn that the bigger the community, the easier it is to resolve your coding problems. That is why I am also going to give you a choice on which engine to use (there is no ranking):

EngineLanguagePlatformBest forPrice
UnityC++, C#cross-platformMobile gamesFree
Unreal Engine 4C++cross-platformPhotorealistic gamesRoyalties of 5% of the revenues after earning more than 3000$/€. Free if you earned less.
CryEngineC++, C#, LuaPC and consolesBest graphics9.90 $/€ per month

The choice is yours!


I want to make smartphone applications


Smartphones are everywhere, no wonder why people want to learn how to make apps. Depending on which smartphone you want to create an app, you will need to learn a specific language (except for 1 option). Those languages are what we call native, they are the interface language of your smartphone (can be different from the core). Since the growth of internet use on smartphone, some companies started to do what we call web apps. They are websites that act like a smartphone application (like Google Drive). The only downside it that if you don't have internet on your phone, you won't be able to use the app. There is a way to make it work but I won't talk about cache, cookies and service workers here. Finally, there is a new trend which are the hybrid apps. They are basically websites built inside a real smartphone application (also called a shell). For multiple years it was said they were slowlier than the native apps (which was true), but it is fastly changing and is smetime the opposite!

Ok, now that we introduced that, let's see the differences between the 2 main operating systems (Android has 86.7% of the market, iOS 13.7%, the rest only 0.1%) :

Operating SystemNativeWeb AppHybrid
iOSSwift, Objective-CJavascriptReact (JavaScript), Angular (TypeScript)
AndroidJavaJavaScriptReact (JavaScript), Angular (TypeScript)

As you can see, if you want to create an app purely native, you will need to learn a language for each OS. It is different for the web apps and hybrid apps. Concerning the first one, I won't recommend it to you as it is not really perfect and you might have problems setting everything up yourself. The next one, on the other hand, is what I use and I find it quite simple to get a grasp on it.

So if you want to learn in order to get a job, I would recommend learning native languages. If it is just for your personal pleasure, go for hybrid. The 2 are quite similar now so you won't miss too much.

To help you a bit more here is a review with some more infos:

  • In order to get a job:
    • Android (most of the market): learn Java (I know hybrids app are rising but Java is still predominant)
    • iOS: Swift (Apple is pushing it instead of Objective-C)
  • For personal pleasure or you know how to make WebApps:

Of course, you have more languages you can use but I am just giving you a quick overview of the most used ones.


I want to make a website


Well, this one is pretty straight forward for the base. You need to learn HTML and CSS (that are not coding languages) to be able to make a simple website with no interaction with a server or no calculations and functions. After that, you might want to do more than just making a page and organising its look. With the latest version of CSS, you will be able to make animations (by using keyframes) but nothing too extravagant. If you want more, you will need to learn JavaScript (at least the version ES6).

After that, it will depend on what you want to do. You will definitely need to learn how to communicate with a server to manage a database but it doesn't mean that you will have to learn how to make a server. For that, you have 3 main options:

  • PHP
  • Ruby on Rails
  • JavaScript (yes, this one again)

PHP is still the most popular but JavaScript is rising by its simplicity of use.

If you want to go more into depth in the creation of servers, I would recommend you to have a look to those languages:

  • .NET (pronounced "dot net")
  • PHP
  • Node.js (JavaScript, again)

.NET is probably the most famous one but the PHP and Node.js community is bigger which make it easier for beginners to learn.
I can't go explain more about it as this post is just a presentation with some choices but I will try to make a post about all the different aspects of the creation of a website and server.


I want to make computer programs


For a long time, it was the graal of every nerd teenagers: being able to create your own programs. Well, this one is pretty straight forward too as there is ot that much choice:

  • For Windows: C++
  • For macOS, Linux: Swift

If you already know how to make web applications, you might want to take a look at Electron which allow you to transform your web app into a computer program with installer.


I want to do Data Science/AI


As Data Science is something quite new, you might have some problems finding proper information. You will see that you will have the choice between 2 big languages: Python and R. Each one has an advantage in one characteristic:

  • Python is very good at doing calculation over huge quantities of data
  • R is very good to create AI

If you want to create an AI that is analysing Big data, you will need to learn both languages as ne will be used for the organisation of your data and the other one will be used to sort everything.

Conclusion

You can see that you have a lot of different choices when it comes to learning how to code. I don't want to manipulate you in any way when it comes to picking your new language even though I am really happy with JavaScript (see the name of this blog). I hope this post helped you find the proper coding language to learn. If you still don't know which one to chose, here is a summary with only 1 coding language each time:

  • Want to make a game: C++
  • Want to make an app:
    • Android: Java
    • iOS: Swift
    • hybrid: Ionic Framework (Angular)
  • Want to make a website: HTML + CSS + JavaScript
  • Want to make a program: C++
  • Want to do Data Science: Python
  • Want to do an AI: R
  • Want to do a bit of everything: JavaScript (you can literally do everything)

I know that this list might doesn't contain everything but it is meant to give a place to start for the beginners. More detailed posts will arrive soon to explain each option more into depth.

I hope you enjoyed learning about coding and I will see you next time!


Originally posted on Play With JavaScript. Steem blog powered by ENGRAVE.

Sort:  

Congratulations @mortak! You received a personal award!

Happy Birthday! - You are on the Steem blockchain for 1 year!

You can view your badges on your Steem Board and compare to others on the Steem Ranking

Vote for @Steemitboard as a witness to get one more award and increased upvotes!

Coin Marketplace

STEEM 0.19
TRX 0.15
JST 0.029
BTC 63209.62
ETH 2570.91
USDT 1.00
SBD 2.76