What language should I start with? What’s the easiest language to learn? How can I learn as fast as possible?.

Core Computer Science/Software Engineering
If you’re not sure what kind of field you are interested in you may be better off with a structured, generalized course. The three courses below, cs50, OSSU-CS, and TeachYourselfCS, mimic and follow the path of a computer science degree. The contents will mostly align with courses that you would find in University and they can be a great way to introduce yourself to programming.
• CS50 – https://cs50.harvard.edu/x/2022/
• OSSU-CS – https://github.com/ossu/computer-science
• TeachYourselfCS – https://teachyourselfcs.com/

Spoonfeeding and how to learn
Spoonfeeding is the act of giving someone a direct and complete answer to a question. Generally speaking, this doesn’t have a positive effect on learning. It is important for people to draw the connections from question to answer instead of skipping right to the answer. It’ll help you with future problems. TPH does not condone spoonfeeding. So as a helper, do not give direct answers. As a question asker, make sure you have demonstrated what you currently think. Show people what you have tried, what hasn’t worked, and what issues you are having.

People learn things in different ways. Our programming resources generally cover all the bases: books, videos, courses, and tutorials. But ultimately the best way for you to improve is to practice implementing the knowledge you learn.

Please note, that the resources and suggestions made below are not exhaustive lists.

Web development

Web development is a very common first path for people. It can be split into frontend development, backend development, quality assurance, ui/ux design, data management, and development operations (DevOps).

Frontend development consists of taking a design and implementing it. To get started with this, you’d be well placed to start learning HTML, css, and javascript (not to be confused with java). These 3 languages are the powerhouse of the Web. Once you’re comfortable with these languages you can start to explore frameworks like React, Vue, Angular, and Svelte as well as a language called Typescript. There are also possibilities to build web frontends with other languages that use a mix of HTML and that specific language. E.g. Java with JSP, C# with Blazor, and Python with PyScript.

Backend development consists of creating the behind the scenes services that drive the content you see on the Web. When you login to a website, your credentials are validated by a backend service. When you load your discord messages, a backend service will decide which messages to send to you. The languages used in these services vary greatly. You really can’t go too wrong in what you pick here. PHP, Javascript, C++, Java, Python, Rust, C#, Kotlin are all used among backend services. Most of these languages also have several common frameworks that you’ll probably want to learn if you’re going to get into them.

Resources
Frontend –
html-css, javascript, typescript
Backend – javascript, typescript, java, python, rust, c-sharp, kotlin, php

Mobile app development

The mobile world has two operating systems. Android and iOS. It is entirely possible to be an OS-exclusive developer as well as one that develops for both! Android development is primarily done in Kotlin, with java generally being used in legacy projects. iOS development is primarily done in Swift, with legacy projects commonly written in Objective-C. For cross-platform development, you could look into something like react native or the flutter framework which is written with the Dart language.

Sometimes in mobile development, you may also need some kind of backend to manage things like user logins and player vs player competitive statistics. See the ‘backend’ part in the Web Development section above for info.

Resources
mobiledev, kotlin, dart, javascript

Embedded systems development

Embedded systems development generally involves programming software on small or large non-computer devices. These typically run either with no operating systems or use specific embedded operating systems. Embedded systems cover a wide range of products. Cars, ATMs, medical equipment, smart home devices, and more.

Some of the more commonly used languages in Embedded Systems are C, Assembly, C++, and Java. Though you can often see other languages being used too, such as Python, Rust, JavaScript, and ADA.

Resources
c-lang, assembly, cpp, java, python, javascript, rust

Data science & Machine learning

Data science focuses on analyzing and understanding data sets in order to determine what can be usefully extracted for business operations. Python, R, SQL, Java, Julia, Scala, C++, JavaScript, and Matlab are all rather common languages in the Data Science field, with Python being the most common of all.

Machine Learning focuses on taking extracted data and using it to build models that can learn from data and also predict future data. Python, R, C++, Java, JavaScript, Julia, Scala, and Matlab are all common languages in Machine Learning. You’ll see that there is a fairly close overlap between the two fields with Python again being the most common. Libraries such as TensorFlow and PyTorch are also amongst the most commonly used tools.

Resources
python, sql-and-databases, java, cpp, javascript, ai-and-ml

Game Dev

When it comes to Game Development you’ve got quite a lot of choices to make, the first starting with whether or not you want to make your own game engine or use an existing one.
Unreal Engine, Unity, Godot Engine, and Game Maker are the most common tools used. Unreal Engine uses a proprietary ‘Blueprint’ visual programming system alongside C++. Unity uses C# as well as Bolt, a visual programming system much like Unreal Blueprints. The Godot Engine uses a proprietary GDScript, but also has support for C++ and C#. Game Maker uses it’s own Game Maker Language.


If you want to go down the route of making your own game engine, your options are almost limitless. Most languages can be used to make games, including terminal, 2D, and 3D games. C++, Python, Java, C#, Go, Rust, JavaScript would all be well suited depending on exactly what you want to do.

Resources
gamedev, cpp, java, c-sharp, python, go, rust, javascript

Summary
Don’t forget there are other fields that will have different common languages. Do your research to help you get on the right path for you!