DEV Community

Cover image for How many programming languages should a person know?
Shivali Pandey
Shivali Pandey

Posted on

How many programming languages should a person know?

Top comments (10)

Collapse
 
ben profile image
Ben Halpern

I wonder if this is a branch from my post today?

This is definitely a "no right answer" thing, but I'd say it shouldn't just be one. My gut feeling is that 3 is a good solid minimum to give you perspective on programming in general vs just the one language you learned.

I don't think you need it all at once, but if you know JavaScript, consider — just for example — maybe Python and Swift as a couple to get the hang of to give you more context.

Some people love learning a lot of languages, some stick to just a few.

Collapse
 
ajshivali profile image
Shivali Pandey

I have heard many people say that one should focus on learning as many languages as possible and hence this question arised in my mind that how much would be enough. Thanks a lot for sharing your thoughts.

Collapse
 
ingosteinke profile image
Ingo Steinke, web developer • Edited

Focus vs. as many as possible seems contradictory to me. I would rather focus than diversify too much. Yes, it is a benefit to learn more than one language, and you will inevitably have to do so anyway. Some languages have a lot in common (like C, C++, C#, Java, JavaScript, CSS and many others use similar glyphs like curly braces / brackets, semicolon etc) while some differ not only in style and syntax but also conceptually (imperative vs. descriptive, compiled vs. interpreted, static vs. dynamic typing etc).

Another aspect to consider when we "know" a language? You can start learning a few aspects of many things to give you a broad perspective, and later specialize in the details of only a few things. @aspittel describes this strategy as "T-Shape your knowledge" in her book What I Wish I Knew Before I Learned To Code.

Collapse
 
abhinav1217 profile image
Abhinav Kulshreshtha • Edited

I will drop a link to another comment I posted on another post similar to this. It has some more explanation. dev.to/abhinav1217/comment/1j8kb

tldr;
You would want to have a good understanding on at least one language on all of following topics

  1. Strict Structured Language preferably compiled and OOP, To gain understanding of large project architecture and maintenance ( Java, C#, etc)

  2. Scripting Language to automate daily and tiny tasks with simple command line scripts ( Python, JS, Bash scripts )

  3. SQL . Even if you end up using nosql solution like firebase, having understanding of database relations is important.

  4. HTML+CSS+JS ( Not a Framework but pure languages ) because web is important.

Collapse
 
jonrandy profile image
Jon Randy 🎖️

It doesn't matter. If you learn and really understand the underlying concepts, how they are expressed from language to language becomes entirely irrelevant - you will pick up new languages easily

Collapse
 
ashutosh049 profile image
ashutosh049

IMHO and as per my expertise of 7 years into backend dev, you never need to be jack of all traits. You must be well versed with 1 low level language and rest would be just added flavours.

Collapse
 
ajshivali profile image
Shivali Pandey

As there is a lot of competition in the industry, what would you suggest to learn to be on a better level.

Collapse
 
ashutosh049 profile image
ashutosh049 • Edited

First you need to get your hands dirty with any statically-typed languages like java and then you're good to go with dynamically-typed languages like groovy.

For me I would have gone by Java (a biased opinion) and maybe C++ because these would have let you play with the way in which transformation script errors are handled, and how it is different from the way Groovy handles errors. This will also help you interpret errors created by your transformation script.

// Java example
int var;
var = 5;
Enter fullscreen mode Exit fullscreen mode
// Groovy example
var = 5
Enter fullscreen mode Exit fullscreen mode

Java is statically-typed, so it expects its variables to be declared before they can be assigned values. Groovy is dynamically-typed and determines its variables' data types based on their values, so declaring is not required.

Dynamically-typed languages are more flexible and can save you time and space when writing scripts. However, this can lead to issues at runtime.

The point here is if you are good and played enough with dynamically types languages and can determine the pit-falls in early stage you can jump off to some more expert level languages like Golang, as it do not have any error handling and it assumes that you know what you are doing!

To sum it up and to answer your question, choose Java or C++ !

Backend:

  1. Java & Go
  2. Java & Python
  3. C++ & Go
  4. C++ & Python

Full Stack/MEAN/MERN: I do not have relevant skills to comment about this but I can suggest any backend + react would be best choice.

Thread Thread
 
ingosteinke profile image
Ingo Steinke, web developer

Why would anyone still use Java in the backend? And why would React be a choice in the frontend? React isn't even a language, but it adds so much proprietary concepts on top of JavaScript, I would definitely not recommend it as a first thing to learn as a web developer.

Java is still a good language to learn, due to its strictness, static typing and class inheritance, but then you can do that in most modern languages, like PHP 7 / 8. Even JavaScript has improved a lot, but it might benefit coding style and understanding to start with TypeScript or at least use proper JSDoc annotations.

I found SQL a valuable learning experience, as it has a very distinct syntax quite different from most other languages used these days, so you have to think differently and express many things in very short command lines.

CSS is another example for thinking differently, because you have to describe a set of rules instead of imperative do-this-then-do-that commands.

Students should be aware of concepts behind the practical examples, not only the concept of specific programming languages, but also general concepts like Design Patterns that are useful in many different languages.

Collapse
 
azlan_syed profile image
Azlan-Syed

I have a very good answer

the guy who wants to learn to code and program should learn the languages he wants to learn because many languages have their different pros like we can say python is a
very easy language for people starting to program and it has a very familiar syntax so
and C# is used in game dev with unity but remember learning alot of languages is not a problem but learning alot of them in one time is a problem