Interested In Becoming A Programmer?

I found this site that lists the most popular languages. I know some of you are likely interested in pursuing a career in programming and thought this might help you understand popularity of languages to determine where to focus your education.

[Edit]
*Please read comments below for additional context. As noted this should not be used as your only consideration.

https://www.tiobe.com/tiobe-index/

2 Likes

There is also PYPL PopularitY of Programming Language index . In Tiobe ranking Visual Basic is higher than JavaScript and PHP which is rather odd. Also, C is much to high on that list. On PYPL you’ll find explanation about how both rankings are created.

2 Likes

It can be fine to check a few popularity rankings like this, but I don’t think either of those are particularly accurate and probably even less useful. Their methodologies and sources will inevitably determine the rankings.

PYPL

The more a language tutorial is searched, the more popular the language is assumed to be. It is a leading indicator. The raw data comes from Google Trends.

TIOBE

The ratings are based on the number of skilled engineers world-wide, courses and third party vendors. Popular search engines such as Google, Bing, Yahoo!, Wikipedia, Amazon, YouTube and Baidu are used to calculate the ratings.

“Becoming A Programmer” says very little about what your actual job will be, so the relative popularity of COBOL vs Scratch should not be a deciding factor in your career decision.

If you are interested in Open Source development, there are plenty of sites comparing GitHub repos. The most poppular seems to be GitHut

RedMonk goes a bit more into the details of their rankings and BrainHub explain more and also show some nice tables.

When it comes to lines of code being written, I suspect JavaScript has more than the next 3 languages combined, because JavaScript is everywhere and virtually every programmer is expected to know it.
It will be underrepresented in the stats, since few positions are exclusively for “JavaScript developers” and projects for Laravel, Drupal, Wordpress, Django, Ruby on Rails or any other web framework will be listed as PHP/Python/Ruby jobs, but you will probably spend an equal amount of time writing JavaScript.

There are definitely also a lot of lines of Python, Perl or Bash code written by sysadmins and devops that is not counted in those statistics.

I will always recommend new programmers start with JavaScript or Python, since they are relatively easy to learn and they are used absolutely everywhere. They are very versatile languages and you can use them in most IT related fields.

3 Likes

Thanks for adding some additional context. Once you learn one language the others will be much easier to understand. The important thing is to pick a language that you’ll enjoy learning. I believe understanding the trends in popularity can be a good piece of the puzzle but you’re right that you do need to look at other factors such as job openings in your area and other languages that compliment it.

I’d have to add that I think that Python is one of the best languages to learn for a beginner. It reads pretty close to English and can be used for basically anything these days (though in practice, it probably shouldn’t be). With easy to learn and understandable syntax, you can really get into learning deeper concepts and the underlying algorithms much quicker, which is really what you want when learning how to program. Also, it is one of the best languages out there for automating different parts of your system, and if you want to get into Linux packaging or development, chance is you’ll run into Python somewhere along the way. I find it is much easier to learn a language when you are actually putting it into practice doing something than just reading through and following tutorials. There are a million things you can apply Python to.

Of course, it is definitely not the end all be all by any means. Once you feel confident in the underlying concepts with Python, then I’d suggest moving to a lower level language like C, C++, or Rust in order to learn about memory management, compilation, and other concepts that Python abstracts away from the programmer.

Like you said, once you learn one language, it is much easier to pick up others because you will understand the underlying mechanisms. Programming languages are just tools in a toolbox–some are better than others for whatever particular job you are trying to accomplish. The trick is knowing and identifying when to use what tool for a job and, of course, the proper way to utilize said tool.

1 Like

So I have been looking into learning JavaScript or python. I keep getting the, Do you want to learn the front end or backend question. I’m here thinking how about both. I jumped on Udemy last night and bought a few programs on both. I think I;m going to start with JavaScript (start from the front-end)

For what it’s worth. I know Visual Basic fairly well, only because of MS Office. Perhaps I have made some poor choices in life. I have done SOME Javascripting for this thing I use called TiddlyWiki but very, very limited.

Python is what I am currently learning. I am interested in understanding the statement, “It [Python] reads pretty close to English and can be used for basically anything these days (though in practice, it probably shouldn’t be).”

Why shouldn’t it be? Total curiosity and looks like a great discussion point.

Well, as you probably know, Python is a dynamic and interpreted language. This is great for certain applications like scripting, gluing together difference pieces of software, and even backend web stuff (along with a ton of other perfectly fine use cases), however, for more computationally expensive tasks a compiled language is the way to go.

You can see this when you look at many popular scientific computing packages available for Python. Most of the time, they are actually implemented in a statically compiled language like C or C++ (and even Rust, now) and only use bindings to Python to implement the much friendlier user-facing API, which calls the underlying C/C++ functions (in fact, Python itself is written mostly in heavily optimized C, hence the main implementation is known as CPython).

Like I mentioned, Python is great for learning the basics of programming and understanding algorithms fundamentally without spending too much time trying to figure out proper syntax. However, it also abstracts away many important aspects of computer science like memory management and even important data structures to some extent with different standard library modules (looking at you “collections”).

In addition, as multi-core systems become the norm, Python is running into a major problems due to the Global Interpreter Lock (GIL), which only allows one thread to hold control of the Python interpreter at a time.

Of course with the Python community being so enthusiastic, vibrant, diverse, and especially creative, they have come up with libraries that can make the language much faster (Numba, Cython) and even fix some of the distributed programming issues (Dask). Also, the inclusion of optional type hinting is great and will help with figuring out what data moves where in a program, especially large ones.

Trust me, I’m definitely not hating on Python at all, it is by far the language I use the most day to day and I’m happy to write in a pleasant language. Basically, what I was saying is that the Python community tries to build modules to make Python an end-all-be-all programming language, which just can’t happen. There are always going to be tradeoffs to programming languages (at least in the current day).

Idk, just my scattered thoughts, YMMV :man_shrugging:

1 Like

That makes total sense and I am glad you took the time to respond. Since most of what I intend on doing is not computationally heavy, it seems to fit the bill but if I run into problems, I am thinking I can go back to C.

Thanks!

This has consistently been my problem with learning a language. If I don’t have a legitimate reason to do so there’s no point. It’s interesting to learn the basics but I won’t go any further and never retain what I have learned. I suspect that’s a common thing.

Would you (or anyone else) say that having an interest in an open source project, learning what languages they use and then learning one of those is a good idea? Even with Python being so universal, I am struggling to find a good reason to learn it. Maybe if there was an existing project I could jump into I’d be more inclined to go deeper. I’m not sure I can handle another sample todo list type tutorial at this point. :smile:

1 Like

Would you (or anyone else) say that having an interest in an open source project, learning what languages they use and then learning one of those is a good idea? Even with Python being so universal, I am struggling to find a good reason to learn it. Maybe if there was an existing project I could jump into I’d be more inclined to go deeper. I’m not sure I can handle another sample todo list type tutorial at this point.

Absolutely, this is by far the most productive way to not only learn a language, but learn how to actually work with it in a production setting, learn how major projects are structured, and learn how the language is utilized and written in the real world. In addition, you will have your code reviewed by experienced programmers, which is often extremely helpful feedback and will force you to progress much faster.

If you are not yet comfortable with having your code reviewed out in the open, there are other options as well. Basically, the best way is to find a project you like and try to modify it for your own use case. For Python, I would highly recommend looking at ARM devices like the Raspberry Pi (will have the most documentation and help available) or something like the ROCKPro64 from PINE64 if you want to support companies heavily involved in the Linux community. These devices are usually within the small budget allocated for a pet project.

Try to find a tedious task in your life that you would like to automate in some way and can actually be accomplished with a SBC. You can find plenty of ideas all over the Internet if you can’t come up with something on your own. Then, look at how other people approached the problem/project you’re working on. Start skimming their source code and go back and forth between it and the appropriate documentation to figure out what each piece of the code does.

Once you’re familiar with how the project works, clone the source code using a version control system like git (with web-based front ends like GitLab or GitHub) and start playing around with altering that code to accomplish your particular wants/needs for your project. Iterate often and test results at every stage (super important to understand what you are changing and how it helps or hurts). Ask questions on dedicated forums if you get stuck and provide as much detail as you can about what you have and where you are trying to go. Research, research, research.

If you’re unfamiliar with git, try out a GUI git client like GitKraken to learn how everything works together. It becomes much easier visualizing how the system works with actual visual representations of the structure of your project/code. Learn what GitKraken is doing behind the scenes (what commands it is calling as you click buttons). Once you have that down, transitioning to the command line is likely going to improve your efficiency (as it usually does with most common tasks).

And, if that doesn’t sound like something you want to do, there are some (few and far between) good resources out there to help learn a language in a project-oriented way, which can be applied to your everyday life. One of the most helpful resources that I used when I started learning Python was a book called “Automate the Boring Stuff with Python”. Now, quite a bit of my workflow at my job is completely automated by building upon the foundations taught in this book and diving deeper myself through research and actually trying things out in my spare time. The Internet is your best friend if you are going into programming.

Most of all, find a way to stay motivated. Programming, especially in the beginning, can be frustrating, time-consuming, and make you feel like you don’t have the skills to accomplish it. Spoiler alert: YOU DO. Just like anything in life, programming takes dedication, determination, and practice to become skilled at.

Also, if you do not enjoy going through the growing pains, spending inordinate amounts of time researching, and physically doing the work, it might just not be the thing for you, and that’s okay. A lot of people decide to start programming in order to get a more lucrative or glamorous career in the tech industry. While this is certainly possible, I would highly recommend that you at least have some sort of passion or end goal in mind outside of making money and getting to wear sweatpants to work. Working in a field that you hate just to increase your pay is likely going to have other, detrimental effects on your life. In short, make sure that you love what you’re doing.

Well, that came out a lot longer than I anticipated. I hope it can at least be helpful to someone out there!

4 Likes