Why do I think you only need 3 or 4 programming languages? Because I think that with 4 different languages represents big enough array of programming techniques to complete (almost) any project. It’s not about the languages itself, but rather the way of thinking and working which helps us become better as software developers and cover large area of projects which you may encounter. But the main point of it is that it gives you wide array of skills, presumably enough to learn any other language and easily get you a job.

It may be hard to decide which programming language should you learn, especially if you’re a newbie. After all learning is an investment it takes some time and effort. Hopefully this article will give you some ideas and it’ll be easier for you to decide which one to pick.

4 types of programming languages

I think that it takes only 3-4 languages to do almost anything, though, depending on project you may only need to know one. With the four types listed below you should be able to complete large enerprise level applications as well as small ad-hoc apps, desktop, web, mobile, games and all of that on different platforms. Let’s see what kind of languages you should know in my opinion.

1) Statically typed languages like C# or Java

I find these good for large enterprise applications, projects which have complex domain model. Development using statically typed languages may sometimes be slower than dynamically typed languages, but in return you get type checking and compliations which sorts out a few issues. With this “familiy” of languages you focus more on types and object oriented programming.

You should know that you can build web, mobile, desktop applications as well as games using these group of languages (including C# and Java).

2) Dynamically typed languages like Javascript or PHP

While these can be used to build complex (and impressive) stuff. I think that it works well for building smaller (less complex) projects. Development seems to be faster and can become more error prone if you don’t pay attention.

You can also build almost anything using langauges from this group, particullary Javascript seems to able to build almost any type of software.

3) Structured query language (SQL) like T-SQL or PL/SQL

Performing database operations are different than regular programming. By learning SQL language you will get to know how to work on data sets and how do databases work. Writing stored procedures and triggers also falls into this category.

4) Specialized or domain specific language

This one is optional. In come cases it can be a big plus and it can lead you to thinking from completly different angle.  This can be a functional language, an assembly language, multicore/cluster specific, custom language designed for game engine. Key point here is that it gives you a different perspective “something new”.

As a side note, SQL technically would fall into this category, but I’ve separated it since I see it as a must have skill for all software developers (even if it’s only surface level knowledge).


When you pick your languages you also need to take into account all the things you can do with, all platforms it can run on and project requirements. I have outlined a few in this article, but if you’re just starting out you should just pick one which is most appealing to you and which follows your interests. For example if you want to make mobile applications pick a language (+platform/framework) which supports and then practice.

You can always learn another language later, it gets easier and faster once you already know another programming language.

Knowing a language is just the beginning, once you have some basic proficiency you will most likely have to dive into platforms and frameworks. Reading language books and memorizing syntax won’t get you very far. Thus you should learn by doing, do small projects and practice what you read. Focus primarily on ideas and concepts, then syntax will follow.

Keep in mind that programming languages are changing, so keeping up may require some time.

Read more

  1. https://stackoverflow.com/questions/125367/dynamic-type-languages-versus-static-type-languages