Survival kit – which programming language to learn

If you are learning your first programing language

For beginners I usually suggest python because it lets you focus on the thing you are building, the language itself won’t distract you too much. Also because the white space blocks force you to have good spacing. This is way more important than it seems to be at first.

Folks who teach C, they usually say that the compiler doesn’t really care about the spaces. This is true, however the programmers should care about spacing. This is step 1 of writing a readable code. Yes, readable code, pretty much like fiction. I will cover that in a different post.

Although I usually recommend python, some folks are getting the programming vibe with C. I don’t understand how this can happen, but does happen, so you might give it a try.

Really, just pick a language that you like to play with. Except for languages that have a reputation of being difficult, like javascript and C++.

C++ is just too much for beginners. C++ is a federation of four languages. If you are interested in C++, learn C first.

Javascript is, on the other hand, easy to get started with. All you need is a browser! Some parts of the language is truly elegant. However, there are a little too many wtfs included in the language. Here is a video about some of those: https://archive.org/details/wat_destroyallsoftware

The video starts with wtfs of ruby, so let’s talk about ruby a little. Ruby is centered around programmers productivity. In some sense ruby is like perl, but does not look that dirty. These languages lets you build stuff quickly, but maintaining them can be difficult. Experts can write maintainable code both in perl and ruby, but beginners usually don’t. This is why I don’t recommend it as a first language.

If you still can’t choose, take a look around on https://www.codecademy.com/ and experiment with some of the options. Soon you will find something that you can get started with.

These are also good resources: https://shop.learncodethehardway.org/ The main idea of the “hard way” is that beginner programmers must type all the stuff. I think it is a good idea. Yes, there will be the typos, and it takes a lot of time to find them. That’s the point. This is how you memorize the details.

By the way, beginners should do the same with answers found on Stack Overflow. We must understand the details the answer. We must also understand the question, we have to check whether it really solves our problems. I might write a post about that later.

How does a real programmer start?

Some folks start it with HTML and CSS; others start with SQL. Some folks say that HTML and CSS are not programming languages – well, they are not imperative programming languages. So what? Nor is SQL, although it is Turing-complete (i.e. you can program it to anything that it possible with programming languages).

A real programmer starts with learning any programming language. End of story. If someone tells you that you must learn C++ and start hacking the linux kernel, don’t listen to them.

If you are already learning

If you are already learning somewhere, either in a bootcamp or at a Computer Science major, you already have enough to learn. Try to keep up with the course. If you feel like, you are only scratching the surface, then build something in your free time. Programming is massively practical – you can learn it by doing.

So, really, which one should you learn?

When you are beginner, you should pick any language that has a friendly learning curve – for you. The language and its ecosystem must also run with a reasonable speed on your computer. I usually suggest python. C and java are also good candidates.

That being said, this series focuses on an imperative, general purpose programming language. SQL and HTML are also great choices, but I can’t guide you with those. You still might find some of these stuff useful.

Some folks might tell you that you are selling your soul, that you should follow your passion, or you are joining the dark side. Don’t listen to them.

When you are entering the job market, pick one language that has a good market in your area (or wherever you want to work). In Budapest, Hungary java has a great market. So does C#. If you are still unsure, you can talk to a recruiter (be nice to them), you can also look at job ads. You’ll see a pattern.

If you are interested in the startup scene, learn something that is being hyped by startups. Beware. Startups are difficult. They might make you work 50-60 hours a week. They can truly burn you out. Some of them are dysfunctional, still succeed somehow. Some of them have a healthy company culture, still fail due to market misfit / founder getting sick / bad luck.

What to do with the first professional language?

So, you picked your main language. Learn it deeply. It is important to learn one language deeply, so this is the one. It will help you to get through the job interviews. It will also save you some time when debugging. For java the most important books are the OCJP preparation kits and the most recent edition of Effective Java (https://www.amazon.com/Effective-Java-Joshua-Bloch/dp/0134685997). Probably there are similar for other languages as well.

Meanwhile you will have to learn a lot of auxiliary stuff: SQL, HTML, CSS, an application framework, version control, a unit testing library, a build system, and learn the business too. It’s a lot. Don’t worry, you can (and should) learn them step by step. We will cover the auxiliary stuff later.

Languages after the first

Once you are happy with your skillset, you can move on to learn another language. The Pragmatic Programmers (https://pragprog.com/titles/tpp20/the-pragmatic-programmer-20th-anniversary-edition/) suggests to learn a language per year. Yes, good idea, once you know the basics. There is another book, Seven Languages in Seven Weeks (https://pragprog.com/titles/btlang/seven-languages-in-seven-weeks/). This book, you know, teaches you (some parts of) seven languages in seven weeks. It covers many different approaches, and that will make it easy for you to pick up new languages.

About tamasrev

Java bugrammer, reader, writer. Father, sometimes mother.
This entry was posted in basics, programming and tagged , . Bookmark the permalink.

Leave a comment