It's a question that is evergreen, but especially prevalent at the turn of the year: what skills should I learn this year?
It's not just programming languages either, there are a slew of areas of life where skills are desirable but you wonder how to go about it or whether it's worth the effort.
And if there's anything I've learned it's not "should I learn it" but "how much does it cost to learn it?"
TL;DR - just set aside time to learn any that you feel curious about. It costs you little, and you gain so much from learning to think in different paradigms.
πΈ Cost of starting
(I know, I am digressing, bear with me ...)
Some skills are more expensive to pick up, and wondering whether you want to spend a lot without even knowing if you'll be sticking with it is a reasonable reason for pause.
For example, if you wanted to pick up a musical instrument skill, there's the outlay of buying or renting said instrument upfront. To learn piano, you need regular access to a piano for practice, and those things don't come cheap, and going all the way to a practice hall every time can quickly curb a beginner's enthusiasm; so it's fairly reasonable to um and ah about it. But if you wanted to pick up an instrument with a piano-layout keyboard (albeit limited), you could probably manage a melodica and see if the layout works for you - it's cheap, it's portable, and a lot of beginner piano theory and tutorials apply to it.
Conversely, there are skills which cost little to get started with - cooking certain types of foods if you already have a stove/oven, or take up drawing (pencils and eraser, and a stack of A4/letter paper is easy to come by), and then you can just scour youtube for a variety of tutorials - try drawing chibis to start with?.
Similarly there are many options and approaches for learning foreign spoken languages, ranging from free (apps and meetups) to pay-for (courses) or even specialization (degrees) which you can approach little by little as you find your feet.
Last year I took up foraging and fermenting, and whilst there was a little cost in books (I have many now) and jars (I just bought some more the other day), it was mostly a cheap outlay for a set of skills I take great joy from today. Mostly, gaining a reason and actual pleasure from heading out into the woods, even on a rainy day.
It's not just about computers - anything you can do to spend time away from the screen is immensely important for your continued good health to come back refreshed π²
π» What Programming Language?
But back to dev talk. What programming language is worth learning ?
I'll cut to the chase and answer this: β any you feel curious about β . If you can set aside 30min in any given day, or every other day, you'll get enough of a flavour of a language to decide whether you want to pursue it. Heck, dedicate an hour to the language and its base systems, and if you're already mad at it after that, just stop, and uninstall.
Because, with very few exceptions, getting started with a new programming language is near zero cost, in monetary expenses at least. Aside from the time you need to set aside, if you already program, you have the required equipment and skill to just launch into it.
Sure, it may pay to read up on the languages that have piqued your interest upfront, and once you've done that you will probably have a good idea which ones you do want to dedicate an hour to and which are already just outright not a fit for you.
And if you come away with a shortlist thinking "this one or that one or the other," I would wager that the obvious answer should be: all of them , in sequence.
βοΈ Narrowing Down
It also helps to know what kind of ballpark use case you are aiming for. My use case requirements are
- command line
- ideally, compiled
- preferably without external runtime requirements
My other use case (as a separate effort) is
- back end for simple websites/apps
- simple/minimal build and hosting requirements
- good standard library/reduce external dependencies
Last year I doubled-down on Zig, as idiosyncratic as it is to me coming from scripting languages (and very much because of it), and I am pursuing Go as well, as a nicer middle ground.
Between what I have experienced from C and Zig, I am not even considering C at this point anymore. Maybe later, but I do not see the benefit, given my language selection as it stands. I had a quick look at Kotlin from afar (perusing how-tos and videos, and simply reading a quick install guide) and decided I had no interest.
For web, PHP was also on the docket for a short moment, but I don't feel I want to go there yet; I feel more relevance looking first into Django and Flask before I return to PHP (I used to do php3 projects, way back when...). Gleam and Scala run on dedicated VMs and whilst in a production setting that's not a problem, I do want to make applications that can run on free-tier hosting, which PHP has had the advantage since the 90's ...
π¨ Mini-projects
Once you get past the first hour of each language, I reckon there will be some you'll think "nope, I'm done here" - and that's fine. That's the whole point of this in the end. After which you're left perhaps with one or two languages that remain contenders for Your Next Thing. What next?
One of the questions I've heard from a couple of friends repeatedly is, "how do you even choose a side project?" My take is, what's a thing you wish there was a program for? What's the simplest thing that program would do?
I live on the command line, so this question is usually easier for me, barring having to do more complex things (I don't (yet) do media processing, or have need to do rich GUI stuff). But I do often want to say organise and deduplicate a few reams of photos or MP3's (my backup drives are in disarray since forever and I need to wrangle them to sensibility...) , and I am often wishing websites would publish and list their content sensibly (web scraping and RSS feed corralling comes to mind).
Try to think, how would a command line program do 80% of what you need to do? Or for GUI projects, how would you get the thing done with a couple simple widgets and buttons? And take it from there.
Aim to scratch a particular itch π, reduce the feature set to minimum πͺ, and have at πͺ.
(As an example dump: I am currently trying to rewrite my bash-builder project (extending the lenker), I have a tarball-dependencies project inspired by Zig's build.zig.zon
file, did an /etc/os-release
reader for something simple, and pondered a PATH
management utility . For web stuff, I have a player registry I ideated once when thinking about cross-server stuff for Luanti, but I have yet to properly sit down to. All of which I will likely try revisiting in various languages as the need arises.)
π What languages for me this year?
If you really want to see a language list from some nobody on t'interweb, here's where I'm at - this year I intend to:
- Continue with Zig and Go - I want to gain familiarity with a systems programming language, and a systemsy language that still has some extra fluff.
- Reignite my Lua skills with Love2D, and maybe return a little bit to Luanti
- Get more hours into Django (yeah not a language, but furthering my Python mastery)
π Voila
It's a relatively low cost to entry to try out a programming language when you already have a computer and an Internet connection, and well worth sinking an hour or two each into multiple languages and trying to understand why they work the way they do, and what new ways of thinking they can bring to you.
It's not "should I try X or Y" but "I've tried X and I've tried Y - how much more time shall I spend on each?" β²οΈ
Top comments (18)
All these posts advertising the βbestβ programming languages or frameworks are missing the point. If youβre truly a programmer, youβd understand that programming is fundamentally about self-comprehension and logical adaptability. Itβs not about chasing trends but about mastering the ability to adapt to the language or tool that aligns with your projectβs needs or the way your logical mind works.
But can I just say though that honestly I could pseudo code and diagram the hell out of you even though when I get 17 between data and programming certificates to beef up the fact that I haven't worked in too long. But I don't remember the syntax again because that was two years ago and a little bit 3 years ago. But I can explain fundamentals I might need flash cards for the language we're talking about and they do have mostly similarities but some dissimilarities, but the worst part about programming is like if you actually understand just the basic and you understand data as well that's another basic and then there's for the people that want to torture themselves web pages that work on phones and computers and watches and God knows what but in the realtors who will make all the money the AI / ML but when it comes to programming I will I will suit a code rings around those people. It doesn't really help in real life though because it's like I also understand the core of most languages but don't say anything in the French to me or pretty much anything other than English but languages that we speak are harder.
You have in programming functions you have objects you have your variables which you usually get to choose what you want to call them as long as you comment them for the next person, you have if then, that is probably the biggest thing right there because you can object orient and procedurally and dynamically all the same with your if then's. But it was one thing when it was like okay you have your c, C Plus Plus, your VB.net, if you're an older person cobal, And I'm talking about 25 years ago 20 years ago on that one, You can make your web page out of HTML or once upon a Time drag and drop instead of CSS and it's still a great and JavaScript which I kind of rather put as much as I can on the back end of of another language which most people will disagree with me But JavaScript breaks too easy but that doesn't mean I need to use PHP either which is an ahole, But CSS also is. Because I used to be able to like put my graphic in this space and make my tables by dragging and whatever now I need to know my pixels I don't care I want to make something that works.
And I can't do the artistic part but I can absolutely tell you when it doesn't look right and this is what needs to change so I knew the programming the data but the problem is is that even with all the packages because she says is not a package it's a python is a psychotic amount of packages and you have to remember which one you're using all the time all the freaking time and python's not one of the hard ones.
The only thing I can say is that I do long for the day when you can do pretty much everything other than the machine learning in the AI and the web 3 some of that stuff but the language included all the packages without you having to get them and know which one is the right one and how long it will be before it's obsolete.
I really like programming when I'm like in a free environment but now you have to like learn what feels like Duolingo except it's teralingo Just never ending insanity And as soon as you learn something and you feel strong in the vast canyon of too much, it's going to get changed on you. I love creativity but too much especially when at the same time half the people are in the old thing half of people are trying to do AI and ML and they're both going to change over time and their relationships together will too
Do you ever feel like you're considering what you're going to try next rather than actually doing because who the hell knows? The only things are easy to retain are the ones that you're working with at the moment and if you're not working how many side projects how many even creatives ideas can you come up with for mock products. I can copy a million but they all exist so how much is actually teaching me? I feel like that's a problem
I'm studying x86 & ARM with Excel VBA and Make on count of a similar mindset. Thx>>
I am just wondering why you didn't like typescript?
Learn a C-based language like PHP or C# and Python.
** Why?** Most modern languages are very similar in design and structure. In addition, most are OOP-based, thus learning one C language means you can easily adapt to PHP, TypeScript, Zig, Java even Golang, etc...
Python: The world is moving towards agents and machine learning, plus if you ever work in a Linux environment, Python is convenient (Plus there's also Django). Furthermore, understanding Python makes it very easy to learn another BASIC language like Ruby.
Once you pick a language, just become a master in it. Learn and practice as much as you can for a solid 3 years, thereafter you'll find moving between languages is a breeze and language isn't as important anymore.
What's more important is learning the engineering concepts behind the type of applications you are building.
I would look for a functional language like Erlang or F#. To familiarise you more with the functional programming mindset.
Language like Python has functional features, but being restricted to that mindset makes you think how to improve code in other languages.
I used Clojure to check out functional programming because at the time I was learning Java. And it was one of the hot new languages.
Yeah so thanks all for the comments. Looking back at the post, I really did digress a lot and include some pointless digs. Removed the most egregious ones. I can only apologize.
The point of the article is, don't ponder silly questions like "go vs python" or "rust vs zig". If you're toying with one or the other, explore both.
You should learn Python. It is so powerful and using the DiscoForge module you can make Discord bots really quickly
Scala 3
Oh god this article is so badly written. The author seemed to have spent more time writing articles than actual programs and seemed to have written this garbage using some ai tool
Well you should learn programming languages nso that you can learn different ways of thinking. So let me spend some time educating you
Him. I'm not trolling you but if you want to go in to COBOL? Its 2025. In 2004 on my first jobs even then I would ask... COBOL? You know there are other things? I am not necessarily knocking you, but COBOL: I feel like this is a language that will persist only because IT HAS for too long. But I'll bet AI can do it for you while leaning newer things. Going for OOP, and sometimes put logic, even newer procedural (I mean any language can be MADE to be procedural and once in a while it's the easiest path)... But if I am striving for Cobal in 2025 I understand it's benefits I understand it matters but it doesn't I'm not looking for a new career there. I like to go with something from this decade which ends up being machine learning and AI which I hadn't worked in a while so I did some Harvard and Google certificates on Python and r and BigQuery and the easiest part was SQL since I worked heavily in that and also I had to work in PHP which by the way is not a great web program language And my personal experience because it's just you iffy. It doesn't always want to work. It's kind of like when you look for an open source program and it's supposed to work on I'll ask you all databases but oh we're having problems with MS-SQL and only your boss will allow that rather than the free at the time mySQL WHICH WOULD HAVE WORKED JUST FINE. I truly have stupid project managers in my past in which I'd go but it's free which is exactly what you want if you want me to find an open source program that we can then play with a lot to meet our needs rather than pay freaking zen desk or something. I say or something because you just kept saying no he's not know the unknown of the like very slight syntax changes oh mySQL versus MS-SQL. But I was made to look bad because I couldn't fix it even though there were 100 people working on that project and all over the internet but I am my own and then there's too many people making stuff up like me I found out like 3 years later that it finally worked with MS-SQLM. BUT I JUST LOVE THE PART WHERE THEY WERE LIKE YEAH WE WANT THIS TYPE OF SOCCER PRODUCTS AND WE WANTED TO BE FREE BUT WE DO PAY FOR MICROSOFT AND EVEN THOUGH IT DOESN'T WORK IN THIS CASE MAKE IT WORK RATHER THAN USE WHAT WAS THEN FREE WHICH WORKS WITH THE FREE SOFTWARE AND THEN I LOOK BAD WHEN IT'S NOT ME.
I didn't mean to shout all that I just don't feel like retyping it because my cap stock was on. They really could include a take all the caps to under like they have with just easy copy and paste.
My favorite thing to do was I remember once I was on a job where it was a health care company being bought out by a much larger health care company and it was at a time where there was no tool to just click a button and turn access 97 data into SQL 2000 data or something of their nature. And I searched high and low for any easy products that don't cost much considering how much the money the company made and I tried a couple phase which wouldn't let me actually save the stuff but it would show me what it would look like in the transfer. And it didn't work. And I looked up all these articles and everyone was like it's just not there yet because of all the different data types they use that are the same but not always the same different and don't go in the right way from access to SQL and I wrote and I should have sold since I beat whoever actually got that going but I was working under a company so my work is at work, but I rode because it was just data types it was just you know You really have to feed in information back then to get it right kind of like what I worked for another company that was a skincare company a high-end one, that had QVC orders every day and they hired me on the basis that I knew HTML VB.net which is my favorite because again you can just make buttons and then double click it and write your little function in the middle of all the buttons so you don't actually have to write the code to make the button and I am really surprised that that is not so prevalent anymore
Do you really want to pick out how many pixels everything should be? Or can you just drag button onto screen double click it when you click it this is the function? I love to vb.net because it was just so freaking easy but alas I had to write one of the most seriously ridiculous at the time now it does it so but to get that access stuff to an SQL database with all the conversions of the data type that were proper and then they already had an access front end which is kind of like VB.net with the dragging of the buttons in the windows and all of that and I had to go in and decouple everything and recouple it with the more robust database but it was so easy cuz it was just double click on a button there's my function but honestly I spent a couple months really looking for anything to do it for me before I decided to do it myself and I really wish that could have been my software because if someone I don't know why no one had it but if no one could do it that easily back then I was doing really well.
But to the main problem why do you are you where do you How do I put this, COBOL is something special but But for another time and place. You just look at legacy jobs? Or is there something I need to know?
100%
though it's also worth learning more than one of each since every language is written with a specific domain in mind these days especially. It's always worth learning new technologies regardless of if you plan to use them at all because it helps you get a different perspective on various design philosophies.
Great point
You should learn Ruby in 2025
I don't understand what's 'unwieldy' about rust.
Install:
curl --proto '=https' --tlsv1.2 -sSf sh.rustup.rs | sh
Use:
Cargo new hellorust
Write some code
Cargo build
Cargo run
Some comments may only be visible to logged-in visitors. Sign in to view all comments.