Best Programming Language (and Tutorials) for Beginners

Which programming language to learn or which one to learn next is one of the eternal struggles of being a developer. For beginners there is a myriadic jungle of choices and every developer they know tells them something different.

The key to learning your first language or which language to recommend to beginners actually is not the language itself, but which path they're going to take. There is a lot of opinion on which language somebody should learn first, so here's mine.

Start with the basics

If you want to learn programming, start with basic courses that work well for you. Pick a language that you can install without too much trouble on the computer you're currently using so you can practise on your own little projects apart from only courses.

If you have a very specific purpose that you want to learn programming for, like making your own WordPress theme the languages you should learn are:

  • HTML & CSS (only markup, not programming)
  • PHP (see the list of basics below)
  • SQL (maybe)

Phew! That's four languages already! HTML is great to know in many situations, but it's only a markup language, it doesn't do anything.

Learning any programming language need to start with the basic things like:

  • variables
  • basic math in the language
  • input/output by the user and how to work with it
  • control flow (if/else)
  • loops (for/foreach/while)
  • arrays (also hashes/maps/slices)
  • functions (also methods if part of a class)
  • more complex structures (objects/structs/interfaces)
  • classes (or libraries)

Now that's a ton of words, but if you don't just follow a course, but you work on your own little scripts, you'll better understand the need for the different things. If you work without objects in JavaScript for example, you'll get annoyed with passing many variables to a function and only getting back one from a return. That will make the use of objects attractive to you.

No matter if you pick

  • C (or C#/C++)
  • Go
  • JavaScript
  • PHP
  • Python
  • Ruby
  • Elixir
  • (insert many more here)

You'll have to learn the basics and that's a good thing. These simple principles will remain throughout most programming languages.

Also I recommend you learn how to use the command line of your operating system, it'll be important to run your programs and to do other related things like using git or package managers.

What's a strongly typed language anyway?

Strongly typed languages force you to state clearly what value a variable will have. If you have something like a program that keeps a count of a cash register, you'll need to tell the program that the amount variable will be some kind of number, not a line of text, also not any number. It should optimally be a floating point number that supports giving somebody 0.31 Euros back without just rounding it down to 0 Euros (that's the sort of things that makes customers very angry).

As these languages may seem pretty stupid at first, they actually are just more explicit. They require you to be very clear about what you're doing which can be agonizing at times, but it can be very good training to get that in from the start. Other languages just hide away from you that they do the same thing behind the scenes.

Don't learn a framework first

Learning a framework first can often be a mistake. If it gets you into coding, it's still good enough. It can be an obstacle for learning though, because the framework takes work away from you. It hides what it really does in order to be as convenient to you as possible. jQuery is a frequently used example in the JavaScript world.

Learning a framework is a little bit like learning to drive one type of car, but you optimally would like to be able to drive all cars that are street legal in your country.

Yes, yes there are many languages that are very popular. Some are rising, some declining. It also depends on what you want to do. Also have a look at the Tiobe Index if you want some more statistical numbers.

Are you going to become a data scientist and you'll never write the frontend of a website? Maybe have a look at python or R.

Are you going to make websites beautiful and great to use for millions of people? JavaScript, HTML and CSS are a must.

Are you going to write Linux Kernel modules for a printer manufacturer? C would be a good pick.

Do you want a high job security when finishing your education? JavaScript, PHP and C#/.net are widely spread in the industry.

Most importantly your ability to learn new things will be sure to get you jobs consistently, so don't bother too much with which programming language you learn first. My first little programs were in Python, Ruby and Bash, now I write JavaScript, PHP and Go at work and at home and you know what? I still fix things in Python and Bash things that still are around. Your first language doesn't matter.

I'm even more confused now. What should I learn?

Anything! Just pick your first one and get going!

I have listed a couple of the most frequently used below with some thoughts on how beginner friendly they are or how much you learn from them.

JavaScript / Node.js

Well, JavaScript is very popular right now because browsers run it so you obviously need it for websites. Also you can run it for the backend with node.js. A huge community has provided many modules to connect to services, devices like drones and robots and everything you can imagine through NPM.

The downside I see for beginners is that there are many different styles to write asynchronous code with callbacks, promises and async/await. It's hard to find consistent patterns for beginners, especially if you don't follow one learning resource. Projects you meet in the wild could also use a completely different style.

Best Beginner JavaScript Tutorials

Go(lang)

Spun out of Google, Go has received many high remarks for language quality, consistency and performance. It's a strongly typed language and actually there is not a ton of examples on how to do many things yet. It's of great educational value, so in my eyes a great first language if you hold on long enough.

The community is very helpful and the first great books that cover the basics are out.

Best Go Beginner Tutorials

PHP

If you want to get into WordPress, Drupal or any of the many other things built with PHP, I can't blame you. There are a lot of learning resources available, often in conjunction with (My)SQL which also teaches the use of relational databases.

It's very beginner friendly because MAMP/XAMPP are available for Windows and MacOS and require no command line skills to be up and running coding with PHP.

Drawbacks for beginners are that the usual PHP file or project is executed per request / page access when accessed through a webserver and not simply run on its own even though you can do that too.

Best Beginner PHP Tutorials

C# / .net

Caution, we're entering Microsofts Enterprise domain. Even though they open source the language core and open source alternative compilers exist, the full potential is only unlocked with costly software licenses. May be great for learning with its type system, but I've never dug into it a lot apart from my teaching and debugging with students.

Ruby

Major web projects still run Ruby on Rails like GitLab! It doesn't receive the same attention and it doesn't deliver the same performance, but the language syntax is beginner friendly and very easy to read.

It's a very nice beginner language and a ton of learning resources are available.

Java

If you want to develop enterprise stuff, Apps for Android or mod Minecraft ;), Java is probably is a good choice for you. By the numbers it's still a very popular language, but not always held in high regard in the developer community.

Best Java Beginner Tutorials

C / C++

I remember doing some of my first tutorials on the web with C and the first programming book I bought was about C++. They are both strongly typed and get you very low level (read hard) access to things like memory or graphics card. If you want to be a hard core operating system or game developer, these are probably for you. Great, but painful educational value ;)

Best C / C++ Tutorials

Python

Drawbacks of Python are that it's not a major player in the web industry any more, at least not when you look at github stars or web framework popularity. It has a very expressive syntax though and is very pleasant to learn for English speakers.

Best Python Beginner Tutorials

Summary

I hope this post did indeed help a little bit to make the choice for you a bit easier. Do you have any suggestions I should add for beginner friendly languages and tutorials? Let me know in a comment or tweet!

Thank you for reading! If you have any comments, additions or questions, please tweet or toot them at me!