DEV Community

LibertyImp
LibertyImp

Posted on

I've noticed my skills are very limited in every language I know

I was recently looking at some code I wrote a few months ago and realized that I haven't really improved much, I feel in every language that I'm familiar with I'm at about the same skill level.

Anyway my question is, Is it better to be well versed in many languages or is it better to know 1 or 2 languages very well? Thank you all in advance! 😁

Top comments (17)

Collapse
 
trollboy_j profile image
Jacko

I feel it is best to stick to 1 or 2 programming languages when it comes to object-oriented programming and well-versed in web development. That’s my opinion, though.

Collapse
 
leob profile image
leob

It's simple these days, you can never go wrong with Javascript, you can use it both frontend and backend, it's a safe bet.

Once you've mastered that you could pick up one other language e.g. a typical backend language like Python, PHP, Go, Rust etcetera. But I would say it isn't even strictly necessary.

Or if you want to expand your horizon beyond OO then try to pick up a functional programming (FP) language like Haskell, Clojure or Elixir, if you're in for an intellectual challenge.

Another option would be Flutter, if you're interested in mobile development.

But yeah, Javascript (maybe coupled with Typescript) is a no-brainer these days.

Collapse
 
sebring profile image
J. G. Sebring

A paradox indeed. As a beginner it might be good to kind of stick to one language but don't reject/shy away from others. As you say, one need experience in different languages to find the one you like, or love even. My somewhat lengthy post above describes different personas with different motivation, I think this is key. There is no right answer here.

Don't force yourself into learning a new language if you not really have the motivation. I know I don't learn much when unmotivated, it's all a pain and something that just needs to get done. Being motivated on the other hand is when you get that sense of flow and you pick up new things. Same goes the other way, don't force yourself into sticking to this one language just because it happened to be the one you know best now.

 
trollboy_j profile image
Jacko

That brings up another great point, it depends on what you want to specialize your programming skills in. I’m currently using C# and Unity, so I don’t know as much about all the frontend/backend stuff, but when I used to learn JavaScript for web dev, it was important to learn a lot of simple languages like HTML and CSS, but JavaScript was a little trickier. Basically, it was like 1-2 actual languages and 2 easy languages that made it work.

Essentially, it varies on what you want to major your skills for.

Collapse
 
trollboy_j profile image
Jacko

No, there’s not. I probably should’ve clarified that you should stick to 1-2 OOP languages after you get a feel for them. Not saying you should stick to that language your whole life, but the rate OOP is progressing is slower than today’s rapid web development. :)

Collapse
 
weeklytyped profile image
Weekly Typed

I absolutely think you should try multiple programming languages out and try to find one that you enjoy. Just don't treat it like something you have to figure out early on. Chances are you will have a long career. And what you think you like about a programming language today might change years from now.

Collapse
 
jcsvveiga profile image
João Veiga

“A jack of all trades is a master of none, but oftentimes better than a master of one.”

I've found in my career that it's better to have a basic to higher basic of some languages that I don't work with. By learning some Haskell, Erlang, Elixir or OCaml, I've found patterns and ideas that have helped me grow when writing code.

Now, I don't know at which stage of your journey you are but unless you are required to know more about language X or Y, you shouldn't fret too much about it. I find that most of the time, I'm using a small part of the language, and it's ok, we're not always doing completely new projects or parts of code. What I have found that is helpful is to watch people from streams or read books on patterns for the languages that I work with or am trying to work with.

Collapse
 
theroka profile image
theroka

First, keep you happy and motivated and stay curious!
Select a programming language to learn you feel comfortable with. Focus on fundamentals like types, arrays, maps, control structures and concepts like OOP, functional programming, clean code, testing, etc. Use them and repeat.

It will become easier to learn more programming languages. Later, you should select the best matching language/framework/toolchain to solve the specific problem.
Nevertheless, of course, you have your favorite languages, which you also like to use in side projects. Mine are JavaScript and Go.

Collapse
 
raddevus profile image
raddevus

I have found that the best thing is to attempt to build a usable product. The product can be extremely small but should satisfy some user requirements. If you focus on doing that and using some technology that you can easily share (deploy) to users, I believe you will find that you use the right mix of languages.
As an example, I wanted to turn the 31 Core Business Competencies document into an app.
I wanted to be able to deploy it easily to users so I chose to build it as a web app (they only need a browser this way). You can try it at : newlibre.com/coreco/. I also made it so you can try it out with no need to login in anything.
I built it using HTML, CSS (along with Bootstrap), JavaScript and a bit of Firebase. Soon I will change it so it saves data to IndexedDB instead (but I still need to learn it. See how that setting a goal of a usable product leads you through the technology and languages you need to learn?
Well, that's what I do anyways, because otherwise learning languages doesn't hold my attention. Just an idea. Good luck.

Collapse
 
sebring profile image
J. G. Sebring

TL/DR - Your responsibility is to keep yourself motivated and happy! Do what motivates you most.

~
I'd say there is no really right or wrong here as it depends on personality. Some people seem to enjoy to explore new languages and it what's keeps 'em ticking, while others kind of dwell deep into one language and that's what's makes them happy.

This is of course not binary, and it might change over time - ask yourself, where are you on this scale - and embrace it.

I'm personally very driven towards what's makes me happy, not necessarily what's best for my career. Having that said, it's not the same as ignoring my career. I try to steer my career towards what motivates me and makes me happy, rather than (trying) to mold myself towards a successful career pattern.

Feel free to explore different languages but remember to not beat yourself up that you don't really master any of them (in each language you learn, you will meet people who are better because they focus on that single language, it is important to accept that). You'll get very good with architecture, algorithms, patterns and so on. Jack-of-all trades, working as consultant maybe, when I did I had used of many different languages as php/sql/java/jsp/web/android/python.

Feel free to dig deep into this one language you love and ignore the other, find a job where this is exactly what they want - work at a company having a product in whatever the language it is and they'll love you. I do now as 100% frontend engineer as I come to the conclusion that javascript is the language that I love most.

Maybe you'll end up as a cloud ops/devops specialist, realizing that it wasn't necessarily the actual programming that rocked you boat but managing servers, certificates, security and so on.

Collapse
 
baselakasha profile image
Basel Akasha

You need to master programming, not programming languages.

Programming is not about the language you use, programming is a concept. As a beginner, you need to focus on learning programming, not programming languages. So focus on one language and apply the concepts using it. I am talking about concepts like OOP, Design Patterns, Clean Code, etc... or even the fundamentals of programming that exist in nearly every language, like the variables, arrays, loops, conditions, etc.

Something that a lot of programmers ignore is writing, I am not talking about writing code, I am talking about writing about the code. Before you start coding your program, try to write a little requirement document which states what the program is going to do, what input it's going to take, what outputs it's going to give and how it's going to process the data. You can also try to make a design for your program before you start. A user interfaces design if you are using one. And a flowchart about how the program is going to behave. The most important thing is that you write a reflection about what you have done after you finish coding. A reflection which justifies your way of implementation, the changes you made on the design after you started coding, strength and weaknesses of the program and what can be improved.

Collapse
 
kingsleyijomah profile image
Kingsley Ijomah

Spend time on one language, know it very well, read other peoples code constantly, ask questions such as ( how can I improve this? ), develop deeper critical thinking, never rush to finish coding, but do it so you would be proud of it. Be active on code-reviews, learn from others when they correct your code, seek they "why" and own it.

Then give yourself time to shine. Btw you asked a perfect question!

Collapse
 
leob profile image
leob

One or two, no more!

Don't fall into the trap of wanting to learn a dozen languages. Learn one or two languages (maybe just one even) inside out, and do something practical with it.

Collapse
 
hjorthbjorn profile image
Björn Hjorth • Edited

Personally I have dabbled in everything between C++ to Javascript and they all have there quirks and joys and for sure having knowledge in multiple languages does give me an insight as a developer that is good to have, but with that said I would argue that you should think what you want to create more and not focus on the languages.

Web developer? get a backend-language (PHP, C#, Node) and javascript
iOS developer? learn Swift and some understanding of Objective-C
Android developer? Java and Kotlin
Game Developer? C# for Unity or C++ for Unreal etc.
And so on...

Focus on what you want to work with or make and start there.

Collapse
 
habereder profile image
Raphael Habereder • Edited

If I have learned one thing it's: "Pick something, and become very good at it. If you have your niche secured, branch out".
Being a jack of all trades is hard, I've been doing that balancing act for close to 15 years now.
I can code in python, ruby, go and java at an advanced level without problems, a little bit of javascript I can do too. But I'd be stupid to say I am better than someone that spent the same amount of time focusing on one of those languages.

If you can live with the fact that experts/specialists will almost always be considered first when selecting candidates for a position/project, it's still a viable way to spend your career.
That is why you should become very good at one language, to secure your position in the market, before you branch out into more languages.

If there is one thing the Generalist/All-Rounder has over a Specialist, it's the variety in his work.