DEV Community

[Comment from a deleted post]
Collapse
 
codemouse92 profile image
Jason C. McDonald • Edited

My best advice: don't focus on a language.

Every language will sooner or later be "out of vogue"; every framework will be unfashionable; every technology will be "ancient". You can spend your whole career trying to learn the "right" languages, and you'll always be wrong sooner or later.

Instead, you should focus on developing your coding skills. Find languages you like - Python is a great one if you already know it - and then pour most of your energy into absolutely mastering your chosen languages.

Meanwhile, branch out and learn any language that looks interesting to you. Disregard the hype! If you try Go and dislike it, don't waste your time with it, no matter how popular it is. Regardless how much you learn about a language you hate, you will still hate working with it! Sure, it may pay well, but there are few worse situations than getting paid well to do something you hate.

Conversely, if you discover you like FORTRAN, Assembly, ADA, or some other strange "ancient" language like that, by all means embrace it! Even if you never use it in the real world, you will still learn things about computers and programming that will translate to more common languages.

The point of learning multiple languages should be to acquire general coding skills. Learn to be flexible. Be able to switch between paradigms and approaches. Gain language-agnostic mastery of design patterns and algorithms. Learn different ways of solving problems.

In short, don't waste your time chasing the most popular or profitable languages or platforms. Master programming itself, so you can learn and thrive in any language you need to work in. Try lots of things, embrace the stuff you like, and you'll go much farther than the fad-chasers.

Collapse
 
jballanc profile image
Joshua Ballanco • Edited

I Agree with this sentiment completely. Since you've already started with Python, you may as well continue with it and work on increasingly challenging problems. Can you build a CMS (Content Management System) web app? Great! Now try building an API driven SPA (Single-Page App). After you can do that, try building something real-time, like a Web-Sockets driven chat app. Once you can do chat with web-sockets, try doing it with ZeroMQ instead. How about bare TCP Sockets?

Python is a general-purpose enough language that you can take advantage of it to explore the "full stack" of technologies that make modern computers run. Then, once you've spent some time on that deep dive, branch out but don't focus on specific languages. Rather, try and cover as many different programming paradigms as you can. As a quick list, you should probably at least try:

  • Statically-typed Class-based Obeject-Oriented Programming (e.g. Java, C++, C#, Swift, Kotlin)
  • Dynamically-typed Class-based OOP (e.g. Ruby, Python, Smalltalk)
  • Prototype-based OOP (e.g. JavaScript, Lua, Self, Io)
  • Statically-typed Functional Programming (e.g. OCaml, Haskell, F#)
  • Dynamically-typed FP (e.g. LISP, Scheme, Clojure, Julia)
  • Declarative/Logic Programming (e.g. Prolog)
  • Stack-based Programming (e.g. Forth)

If you can master that list, then there's not a programming job in the world you couldn't apply for. Finally...

Conversely, if you discover you like FORTRAN, Assembly, ADA, or some other strange "ancient" language like that, by all means embrace it!

COBOL was a horrible language that nobody liked using, but everyone did because "Corporate America™" said they should. As soon as there were alternatives, most programmers abandoned COBOL completely. You know who didn't? All the banks and Wall street firms whose day-to-day operations depended on systems written in COBOL! As a consequence, some of the highest-paid programming positions today are for experienced, competent COBOL programmers who can maintain and update all those critical systems developed decades ago.

All that's to say, if you chase the "next big language", you'll be chasing it your entire life. If you hone you core skills as a developer, you'll never be out of work.

Collapse
 
codemouse92 profile image
Jason C. McDonald • Edited

Great additional thoughts, Joshua! Also, nice list.

Only one word of caution I should have mentioned earlier: be careful not to become overly dependent on standard libraries to do all the heavy lifting for you. This is a trap one can easily fall into, especially with "let us do it all for you" languages like Java, C#, and Javascript. While there's nothing wrong with using a standard library implementation of, say, a linked list, you should also learn how to build one yourself.

In short, aim to have at least a basic understanding of any "abstraction" you use. You don't have to learn this all at once, but plan to make time to learn it sooner rather than later.