Bulbasaur, Squirtle, or Charmander? Or rather Java, C#, or perhaps Ruby? What should I choose in 2024.
Tags: learning, pokemon, java, javascript
Published: 2024-04-05 13:29:30

"Mateusz, I want to become a programmer! But... which language should I choose to start? Everyone I ask tells me something different." - I often have people come to me with this dilemma. Do you also want to start your programmer training? Then the answer to this question is just a Pokéball throw away!
You can get in the right mood by listening to [Original Pokemon Theme Singer Jason Paige In Studio Full Pokemon Theme Song](https://www.youtube.com/watch?v=fCkeLBGSINs&t=1s) and... let's get started!

![PokeBall Throw](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/4ll7baj0oo1qtud5k7u1.gif)

Remember how Ash Ketchum, the main character of the Pokémon series, wondered which Pokémon to choose: Charmander, Squirtle, or Bulbasaur?
Every Trainer starting their adventure faced this tough nut to crack.
Ultimately, to his and all the young viewers' surprise, his most loyal companion throughout all his adventures became the well-known Pikachu — an electric mouse.
However, Ash also caught other Pokémon along the way, as Pikachu was not effective against every opponent he encountered.
To fulfill his dream and become a Pokémon World Champion, the young boy had to select the right types of his Pokémon to beat the creatures of the trainers he had to battle against.


## A Programming Language is Like... a Pokémon!
Just like you, if you dream of becoming a programmer... It's true, right!? Then you must decide which programming language to choose in order to start the adventure!
Depending on their type, Pokémon were more or less effective in certain situations, and the same goes for technologies.
If in Pokémon games you need to cross to distant islands, you'll definitely need a water-type Pokémon to swim with (unfortunately, Pikachu probably won't manage to do that) — similarly, when choosing a language for mobile applications, you wouldn't pick one that's used for programming refrigerator controllers.


![Pokemon Shadows Not Effective](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/oqqzsmm0rnxt9t10931h.png)
On the screen, you can see that Pokémon of fire types are not very effective against water types.

If you're just setting off into the fascinating world of software development or looking to expand your skills, I'll tell you a bit about the applications of programming languages I've ever worked with during my professional career.

----

## I wanna be the very best…
**…like no one ever was!** This line from the opening song of the mentioned Anime accompanied me in my childhood. With this text in mind, I now give you a task for the next paragraphs of this post: Look for something that fascinates you! Do you already have an idea for an app? Or would you like to be able to code something like the next Facebook, or a computer game? As you go through different programming languages, "catch 'em all" won't necessarily be the best advice.

> Choose one language to start with, from which you indeed wanna be "the very best"! Focus on that one, which will be your priceless companion in the way to creating your dream application. Then, the future job as a programmer and the associated benefits (If you know what I mean 💵💵💵) will come on their own. As Mark Twain said: "Find a job you enjoy doing, and you will never have to work a day in your life".

Let me be like Professor Oak to Pokémon trainers for you. I'll introduce you to this world, showing sample applications and discussing employment opportunities. Everything will be based on my professional experience and mentoring other programmers.

----

### English
In the Pokémon world, there are "Legendary" creatures, encountering one can be quite surprising. English in this lineup might evoke similar emotions. After all, we were supposed to talk about programming! And that's exactly what we're doing... starting with the most important language for a programmer.


![Reshiram - legendary Pokemon](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/b8qgp8a377uin4l1j29i.png)

You don't necessarily have to be a British scholar. In most cases (if you won't work with English-native people) you don't even have to speak it so often. However, when writing code, you will certainly use it. So the most important are writing and reading skills. I assume you have them, because you understand this article :) Congratulations! 🎉 First step passed ✅.


### Java
This is the programming language that got me my first job, so I'll start with it here. Java is primarily used for the backend, which is the server-side part of an application.

The frontend is the part you see—the tip of the iceberg, while the backend is everything else. For example, Google's search "on the front" includes screens for entering a search phrase and displaying results—seemingly nothing complicated. However, it's on the backend where all the "magic" happens with indexing pages, databases, and suggesting the right results to you.

To grasp the basics of the language, I found the following book very helpful: [Java: The Complete Reference](https://amzn.to/4aNCGxX)

![Programming IceBerg Backend/Frontend](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/qpq4mfq50mzxzmnwecco.jpeg)

Once you've built a solid foundation, the next step might be to familiarize yourself with [Spring Boot](https://spring.io/) framework — a tool that simplifies the creation of the mentioned backend.
Java has another important appliance — you can use it to develop Android mobile apps, but more on that shortly.
The language has also been continuously evolving for some time. For years, the latest version was 8 (until 2017), but as I write this article, the latest version is 21, and the language is still being regularly improved.
Given the great number of job offers, it's a very good choice for start in the IT industry.


### Kotlin

If it weren't Kotlin, Java would have faded into oblivion for me a long time ago. Kotlin is my favorite language, which I use for both backend and mobile applications. The principle is simple: with Kotlin, you can do everything you can in Java and more! Mostly recognized in pair with Android, because Google chose Kotlin as the official language for developing applications on this platform (previously, it was Java). It's worth knowing the basics of Java to understand "what's happening under-the-hood", as Kotlin can be seen as an evolution of Java (they are based on the same technology and are executed using the JVM - Java Virtual Machine).

![KotlinJavaEvolution](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ejw73tvgcmc003nqxc5w.png)

Creating mobile apps gave me a great motivation for programming, because I was finally making "something even my mom could see" instead of just displaying text on the screen.
Maybe it will be the same for you?

If so, it's worth checking out the Udacity platform.
You'll find many high-quality free courses (prepared, among others, by Google) on entry-level like this:
[Developing Android Apps with Kotlin](https://www.udacity.com/course/developing-android-apps-with-kotlin--ud9012).
Even if you choose a different programming language, it's still worth exploring this e-learning platform.

Once you understand what's possible with a given programming language, think about what kind of app you could make for yourself, and just look for materials that will help you achieve the goal.
When I was learning Android, along with a group of friends, we often played a well-known party game - [Mafia](https://en.wikipedia.org/wiki/Mafia_(party_game)).
So, I decided to make an app that simplified leading the game by game master and understanding of its complex rules.
Find anything that brings you joy; it doesn't have to be the next Instagram right away.

In terms of job offers, as of writing this article, Java still leads compared to Kotlin.
However, if you want to be an Android developer, it's certainly the right path, but not the only one...


### Dart (Flutter)
So, we're smoothly moving on to Flutter, another technology from Google. With this tool, using the Dart language, you'll be able to write applications that run on both Android and iOS. It's also possible to write applications for web browsers and computers. This is a very good choice for companies that don't have the money for two teams of developers but want to have apps in both the AppStore and Google Play. However, from the perspective of a beginner programmer, it's hard to find employment. Usually, if someone already knows how to write native apps for Android or iOS, only then do they expand their knowledge and getting familiar with Flutter. Flutter also has its limitations, and sometimes you may need to write a piece of code in Kotlin (Android) or Swift (iOS). You can find many good tutorials on the official [Flutter.dev](Flutter.dev) website.

### C++
Did you have C++ or Pascal in school? I'm sorry to disappoint you... but it had little to do with professional programming. Certainly, this is not an argument to continue learning in these languages. I only encountered this language in high school and at university, so I won't elaborate much. C++ might be a good choice, for example, if you want to make computer games using Unreal Engine. However, to do this professionally, you really need to be an expert. You will hardly find offers for a Junior C++ Developer.

I recently mentored someone looking for employment in C++. When they came to me, they had already spent several months on unsuccessful job hunting. Eventually, I suggested switching to C#, which turned out to be a bullseye in terms of getting their first job.

### C# (.NET)
The previously mentioned C# is a very good language for entering the industry.
Especially if we're talking about the backend of web applications, where we can use the .NET Core framework.
Indeed, you can also create the frontend (the visual part) using Blazor technology, but I've never seen it applied in real production applications.
The C# great advantage is the consistency of the technologies and approaches used. Most are from Microsoft, so you don't have to scout half of the internet, before deciding how to accomplish a given task.
Some programmers also used to make mobile applications with the Xamarin platform, but I haven't known anyone who programs in it for a long time.
Nowadays, the new approach for phones and tablets from Microsoft is [.NET MAUI](https://dotnet.microsoft.com/en-us/apps/maui), although here too, we won't find many job offers.

There are a lot of job offers for .NET developers, almost as many as for Java.
In the index of the most popular programming languages, which you can find [HERE](https://www.tiobe.com/tiobe-index/), it was C# that saw the biggest growth in 2023. I also programming in this language over a year, because company which I joined, have been already using it before.

### JavaScript (+ HTML/CSS)
Do you want even your mom to understand what you do at work? Then stepping into the world of frontend development is an excellent choice! You'll be responsible for what users see in applications. It's important to have an aesthetic sense and distinguish more colors than just red, green, and blue.

Here, the choice is obvious — you must master JavaScript as well as HTML and CSS (as a curiosity: these last two do not meet the definition of a “programming language”). HTML describes the structure of the page — where everything is located. CSS is used for styling, and JavaScript adds interactivity (e.g., what should happen after clicking a button).

![CSS HTML Containers](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/erfpghr6e05mkm1miksa.png)

You can start learning with free courses on [freeCodeCamp.org](https://www.freecodecamp.org/learn/javascript-algorithms-and-data-structures/#basic-javascript).

Once you're familiar with the basics of JavaScript, mastering one of the frameworks will be necessary in order to develop larger web applications.
This is a must to become a Junior Frontend Developer.
Currently, the most popular is React. I've learned the basics from this course: [React - The Complete Guide 2024 (incl. React Router & Redux)](https://www.udemy.com/course/react-the-complete-guide-incl-redux/).

It's also good to know the basics of UI/UX Design and a design interface program like Figma.
You will have to work with UI/UX Designers - specialists in this field.
One person I mentored even discovered a stronger pull towards design than coding and became a Designer instead of a Frontend Developer, which I'm very happy about that she found her way to the industry.
This is what individual mentoring offers — the opportunity to find what is inside you and turn it into a job you'll love.

JavaScript can be useful in a variety kinds of applications.
You can certainly also use it for Backend — then you would apply Node.js.
A mobile application? With something like React Native, it's also possible. Let's use Electron - and you will make a desktop application!
Having JavaScript in your toolkit is almost like having a Pokemon of every type in your team.
Unlike C#, it's hard to find any standards here. You will find a multitude of different solutions for everything.
Recalling a famous saying in the programming world: "by the time you read this article, surely some new JavaScript framework has been released".

Since we're on the subject of Pokemon, I'll show you two applications created by developers after about 2 months of intensive learning with a mentor. You can see them here:
- [Pokemon Fight](https://lukaszdutka.github.io/CodersCamp2020.Project.TypeScript.pokemonfight/) 
- [Pokemon Quiz](https://lukaszdutka.github.io/CodersCamp2020.Project.JavaScript.pokemonquiz/)

They were made by participants of CodersCamp — the largest web programming course in Poland, which I was organizing.
This will give you an idea of what's possible and what to expect from yourself at the beginning.

There are definitely the most offers in JavaScript from all programming languages, but you need to read carefully to know exactly whether it's about backend/frontend, or maybe both at once (programmers who can handle them are termed Full-Stack Developers).

![JavaScriptHamHamster](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/triasnozl4bs4xni3721.png)

### Python

I haven't had much to do with Python and I am not a huge fan of this language. If you want to create web applications, then in my opinion, the ones discussed above are a better choice, and you will find more job offers in them. However… if you want to engage in Machine Learning or enter the world of Artificial Intelligence, Python will be the best choice.

Is mathematics needed in programming? Usually, my answer is: NO, beyond the complete basics. However, I can't imagine going into AI if you'r not strong in math — of course, everything can be learned :) It's a huge difference between developing AI solutions by yourself and using already prepared libraries (such as TensorFlow) or integrating with ChatGPT — here most of the work is done for you, and you can achieve this in most of the mentioned languages.

### Ruby

I left this language for the end of this article.
Though, in reality, it was the first programming language I use in my life (when I was 13), and I didn't even know it at the time!
How is that possible? During scrolling this article you may noticed several screenshots from Pokemon games.
However, these were not from any of the official Nintendo console productions, but my own game! The developing of the game is where I actually started my programming journey.
That's why the question "how to start programming" will always be associated with Pokemon for me.

As a small child, I dreamed of making my own Pokemon game.
I remember my brother playing Pokemons on the GameBoy when I was in elementary school and I drew on paper what cities and trainers I would make in my own game.
When I was in junior high school, I realized that I could actually do it!
And so, through various forums and chatting with different people on the Internet, I entered the world of [RPG Maker XP](https://www.rpgmakerweb.com/products/rpg-maker-xp).

That's how I met Ruby, despite that my Pokedex knew nothing about it.
It was hidden under the enigmatic abbreviation RGSS, which stands for Ruby Game Scripting System used in th RPG Maker.
And I started writing scripts dedicated for RPG Maker XP (a program that simplified creating 2D RPG games).

If you want to make a living from programming and don't have much free time, I wouldn't recommend such "fun".
Unless you want to do it just as a hobby or get your children interested in programming — it can be a really good start.
Such an activity also greatly develops graphic skills or storytelling abilities. For inspiration, below are two maps from the mentioned game.


![The biggest City in my Pokemon Game](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/oymbitjofminjb0dae4h.png)

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/m9k0oefgkbh166efc7zn.png)

Of course the Ruby itself is not only a language for RPG Maker, but its applications are very broad (mostly backend).
Many well-known companies use this technology. It allows fast application development, so it's said to be great for startups, where time to market is crucial.
I haven't used it much in the past, but now I'm faimilarize myself with RailsEventStore - the Ruby technology supporting Event Sourcing (this approach for storing data is my expertise area).
However, finding a job in this technology can be challenging.
As Andrzej Krzywda, the CEO of Arkency (a company specializing in Ruby) says, it's a community where jobs are primarily found through referrals instead of posting on job boards.

## Sooo, how to choose?
So, have you settled on your dream Bulbasaur?
Or does it seem like an unexpected Pikachu is the choice?
As you can see, programming languages often have similar applications.
For Android apps, you could use Kotlin or Flutter,
while for the Backend, you might choose Java/Kotlin/C#/JavaScript.

So, how do you make this decision?
Backend or frontend?
Would you prefer to play around with graphics, or do you wave the white flag when the conversation turns to colors?
Maybe you'd rather dive into algorithms/business logic and work on databases?
Or perhaps games? Have you recently seen an app and thought: “I wish I could make something like that!”.
Or maybe you're very good at math, algorithms and would like to use that in AI?

You'll have to answer that yourself or with the help of a mentor!

## Arm in arm, we'll win the fight
At the beginning of your programming journey, it's worthwhile to rely on someone more exprienced in order to not wasting precious time. 
I learned by myself, so surely you can too!
However, maybe you have a friend who is a programmer who could help you? Ash didn't travel through the world of Pokémon alone but was almost from the very start accompanied by Misty and Brock.
Even the evil Team Rocket didn't act alone.
Though, of course, everyone has their preferred style of learning, and maybe you'll grow better studying alone.

## The power that's inside
Whether you start the journey alone or with someone, the principle of learning remains the same:

1. Learn the basics of the programming language (simply how to write in it, what constructions to use — to express what you want).
2. Find a tutorial on making an application from A to Z and do exactly what the instructor does. Don't skip any part, but you can introduce your modifications, check what happens when you change something.
3. Based on the knowledge from points 1 and 2, code an application according to your own idea (as I did, which you can find in the article) and learn what's necessary to achieve your goal.

You can start with the simplest project and then gradually increase the level of difficulty while building your portfolio.
Such a set of completed applications will be invaluable when looking for your first job! It's the most advantage in your future resume, when you don't have commercial experience.

So, do you already know what application you'll make?
You can share your ideas and dilemmas in the comments below.
Good luck 🤞!

-----

📧 I encourage you to join my [mailing list](subscribepage.io/mateusznowak). Here you will find more content like this and also have opportunity to learn with me :)