Pick a Language and Stop Agonising Over It
The 'which programming language should I learn first' question has eaten more beginner momentum than any actual programming ever could. Here is the answer, and why the answer barely matters.
Every beginner asks it, usually before writing a single line of code: which programming language should I learn first? The question feels enormous, like choosing a spouse or a tattoo. It is not. It is closer to choosing which gym to join. The best one is the one you will actually turn up to, and the worst mistake is spending so long comparing them that you never work out at all.
Let me save you the months of forum-lurking.
Why the first language barely matters
Here is the thing nobody tells the anxious beginner: programming languages are about 80% the same ideas wearing different clothes. Variables, loops, conditionals, functions, data structures, the discipline of breaking a problem into small pieces - these exist in every language, and these are what you are actually learning when you learn to program. The syntax, the specific words and punctuation, is the easy, disposable layer on top.
I have written production code in maybe a dozen languages. Learning the second one took a fraction of the time the first one did. The third was almost free. Because after the first, you are not learning to program anymore - you already know how to program - you are just learning a new dialect. The concepts transfer. This is why experienced developers are relaxed about languages: they know the thing that took real effort, the mental model of how programs work, is portable.
So the pressure you feel to pick correctly is misplaced. You are not locking yourself in. You are choosing your first dialect, and you will pick up others later almost by accident.
The actual recommendation
Fine, you want a name. Here it is: start with Python, or start with JavaScript. That is the whole recommendation. Pick one of those two and go.
Python if you want the gentlest possible on-ramp. The syntax reads almost like English, it stays out of your way while you are learning to think, and it is genuinely useful for an enormous range of real work - web backends, automation, data, scripting, AI. It is very hard to be angry at Python. It is a wonderful first language and a perfectly good twentieth one.
JavaScript if you are excited by the web and want to see things move on a screen quickly. Every website runs it, it is the only language that runs natively in the browser, and the feedback loop is intoxicating: change a line, refresh, watch the button turn blue. It has more sharp edges than Python and some genuinely weird historical baggage, but the motivation of building visible things can carry a beginner a long way.
If you cannot decide between the two, flip a coin. I am not being flippant. The coin is a better decision-maker here than another week of research, because either choice is correct and the week is not.
The languages to not start with
A short, opinionated list of first languages to avoid, and why. C or C++ first will teach you enormous amounts and also make you fight the language while you are still trying to learn to think - manual memory management is a brutal thing to juggle alongside your very first loop. Learn it later, when you want to understand what the machine is really doing. Rust is superb and also famously demanding; its strictness is a gift to people who already know why the rules exist and a wall to people who do not. Whatever is trending on social media this month - the hot new language everyone is breathless about - has a tiny job market and thin learning resources. Chase novelty later, from a position of strength.
None of these are bad languages. They are bad first languages, which is a completely different claim.
Where AI fits in
You will be learning to code in an era where an AI assistant can write a chunk of it for you, and I am not going to pretend that away. Used well, it is a phenomenal tutor - ask it to explain an error, to show you three ways to write a loop, to review your code and tell you what is clumsy. Used badly, it becomes a crutch that types the answer while your own understanding stays at zero, and you end up unable to build the second thing because you never actually learned the first.
The rule for a beginner is simple and strict: use AI to explain, not to replace. Write the code yourself, struggle with it yourself, and then ask the machine why it broke or how a professional would tidy it. The struggle is not an inefficiency to be optimised away. The struggle is the learning. There are no shortcuts through the part where your brain physically rewires itself to think like a programmer, and outsourcing it just means paying the bill later, with interest.
Now go
Choose Python or JavaScript in the next five minutes. Find a well-reviewed free course or the official tutorial. Write the traditional first program that prints "hello, world" to the screen. It will feel trivial and slightly silly. Do it anyway - it is a genuine milestone, the first time you made a computer do exactly what you told it.
Then keep going, because the next post is about the skill that outlasts every language you will ever learn: teaching yourself. Get that one right and the language question never troubles you again.
Jako Heiberg
Software developer with 40+ years of building things that work. Full-stack, FastAPI, React. Based in Cape Town, working remotely, worldwide.