Skip to content
loading...

What programming language I should focus on?

twitter logo github logo ・1 min read  

i am 16 years old and i am programing for 4 years i started with arduino then moved to python, i loved python and learned pygame and django and other libs, i always wanted to earn money from coding but i don't know how? the problem is that i spend the whole day coding and coding and learning new frameworks and now i know python nodejs nwjs django android arduino html css, js so can someone tell me what language or framework i should focus on it and how to earn money with it, i want to be a programmer when i grow up.

twitter logo DISCUSS (13)
markdown guide
 

While I mean this in no way to discourage you, right now I would say to practice more (even experts practice) and make things that you really enjoy programming. On the other hand, if you really want to try and make money, you can look for interships/jobs in your area, freelance on social media, or even apply for AdSense if you have a website.

 

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.

 

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.

 

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.

 

I know this isn't directly helping you with your question because it's not
not a programming language, but don't forget to develop your social skills while you're still learning everything else! Programming is (usually) an activity you will be doing with other people; either face-to-face or via a bug report or email or a forum or Twitter...

I didn't really start developing these skills in a healthy way until I was in my late 20s and this has turned out to be true for a surprisingly large number of people I meet.

Understand the difference between insulting someone's work and criticizing it. Understand how to tell someone they did something incorrectly without shaming them. The way you talk to other people matters, even when you're in a field where people like to pretend the only thing that matters is how well you code.

Edit: And I don't mean that you have to be outgoing and the life of the party. You can still be shy or socially awkward and still be someone who communicates in an empathetic way.

 

Any of these languages and frameworks can be used to get you a great job. So you are on a good way, but put mathematics and computer science on your list, try to use them in your projects (write fractal generators, vector graphic animations...), because after a certain level these will make you a more efficient programmer, and not the sixteenth framework in your resume.

At the beginning it is useful to learn a vast variety of concepts and techs, play around, but later you should choose some specializations, but keep up a strong at least intuitive understanding about the general concepts of programming and mathematics.

 

If you want to learn something that will eventually land you in a job in no time, learn web development: Ruby, Ruby on Rails, JavaScript and React (or Vue). You may want to learn PHP and Laravel instead of Ruby but, believe me, you will get more joy in life if you find a job in a Rails shop.

I you want to become a better developer, I would recommend you to have a look to Haskell. You will probably never use it professionally, but it will change the way you think about code. I did this course and I really loved it:

edx.org/course/introduction-functi...

Mobile development is interesting as well and the new languages they developed (Swift and Kotlin) are really good.

If you are interested in low level programming, you may want to try Rust.

Lastly, if one day you want to develop video-games, you will have to learn C++.

In any case, don't worry too much about the languages themselves. What you need to do is to learn how to program. That means: design patterns, how to have a tidy codebase, how to organize the code in meaningful abstraction layers, etc. This is the most important. The syntax of a language is something that you can pick up fast once you are an experienced programmer.

 

You may want to learn PHP and Laravel instead of Ruby but, believe me, you will get more joy in life if you find a job in a Rails shop.
This is purely opinionated. I started with php and know it very well. It's not my favorite lanuage anymore but I still use it at my day job along with node. I've tried Ruby multiple times and I've never liked it. I'm a python guy, which I learned after Ruby. I would not be happy in a rails shop.

I do however think that learning a functional language can drastically improve how you think of code architecture. I learned erlang. Which appealed to me more than Haskell. But wither would be fine.

 

This is purely opinionated.

Yes, sure, that's because I was giving my opinion. ;)

 

In my experience, there a few things all good programmers do, or have done:

  • Always allocate time to learn something new.
  • Don't reinvent the wheel. If you want to make a deep impact, build on the shoulders of Giants before you and improve things. New and unique ideas are rare and don't always succeed.
  • Try new and unique ideas. They will likely not come to fruition, but it's more of a learning experience than anything else.
  • Soft skills.probably one of the most important things to pick up. Learn how to communicate ideas like people are 5 to fellow programmers, designers, or sales. Learn to write well and convey ideas. Learn the difference between different software design patterns. Why we change over time. Waterfall vs agile is a good example.
  • Community. Whether working on open or closed source, invest in you local and online community. Go to local meetups or events. Network. Join online communities where you can learn from others, and teach.
  • Teach. Learn to teach what you learn along the way. A great way to do this is to blog about it. Take what you have learned, and package it up as a small tutorial or article. It will help many skills tondo so and you will learn much more. The more you learn, the less you know.

As for learning languages. Just learn ones that look interesting. Over time you will learn what kind of languages and what styles you like. Find one, and learn it well. Build something in it that you can use in day to day life. A tool or something. Post it on GitHub or gitlab. Share it. Make something else. The more things you make the better you will get. Learn to hone your skills and be a master. Once you master it, you will start enjoying it more and be recognized for your abilities. Which helps when you network.

The point is to just pick one and learn it and go.

At some point I would also suggest learning a low level language. A long time ago I learned C# while at work and I had a far better understanding on how things work. Currently my favorite is Rust. I loved erlang too. I've also used node, python, php, and a couple others.

This article also has great advice on skill mastery, happiness, and more.

 

Check the job listings. Look for jobs you want to do (Real-time telemetry and tuning for Moto GP bikes? Automated stock trading? Games? Security research? Prosthetics and implanted devices?) and see what languages and tools they're using.

 

I didn't read this in the comments here, but my advice would be to read a book. Not just 'a book', but a particular one. I am a programmer and I already was for over 10 years when I read 'Code Complete' by Steve mcConnell. It was a delight to read and I can recommend it to you. It will give you extra insight in what to do while coding and what not.

 

EmojiCode (emojicode.org) it's the language of the future ;)

Classic DEV Post from Mar 28

Programming Resources for Kids

For those of you with children at home during these “interesting” times that are teaching programming...

mohammedgqudah profile image
fullstack web developer living in Jordan. Discord: Hyper#3519

dev.to now has dark theme. 🌝

Go to the "misc" section of your settings and select night theme

(You can also change font to sans serif, which a lot of folks prefer.) 💖