If you want to make a website, start with HTML, CSS, and JS. If you want to make an iPhone app, start with Swift. If you want to make something for Windows, give C# a try. Knowing where you’re heading will narrow things down a lot.
While I had a Java and .Net class in college, I never used it after the class, didn’t have a project of my own, and forgot everything. Years later at work, I wanted to automate some stuff I had to do often, which led me to AutoHotKey. That was a painful way to learn, as the syntax and documentation were both difficult to deal with, but because I had a project I cared about, had quick results, and had reasons to keep adding more and improving it, I learned. Eventually I wanted to share some stuff with others and distributing a URL seemed easier than an exe, so I learned basic web dev. Then I needed some server side stuff, so I learned PHP, then needed something else and learned Python, and Ansible, and on and on… whatever I needed at the time. Was it “optimal”? No, but no path will be. You can only connect the dots looking back. The most important thing to keep moving forward is to have a reason to get excited about it. If you’re in tutorial hell, you’re probably heading in the wrong direction. Things are going to be hard at times. There will be a point where you’ll beat your head against the wall for hours, maybe days, because of a single brace that’s out of place. During these times, there needs to something you want that is worth going through the frustration.
If you're in Finland, this course online is free and grants university credit. If you're not, it's still the best tutorial I've found to date. https://programming-23.mooc.fi/
Python was the right choice when I started programming 15 years ago and it is even moreso the right choice today.
Oh, pick a project too. Anything as long as it's challenging and it interests you.
I think the most important thing is to pick one language and stick to it (and only it) for as long as possible. Say 3 years. Don’t learn a second until you can do everything in your first with total fluency. Don’t be a dilettante or a framework hopper. Better to learn 1 thing well than 10 things poorly.
Last piece of advice (and there’s tons of arguments against this, so just my opinion) but pick a scripting language first, either python or js. After mastering it, then pick a statically typed enterprise lang like c#, go, or java. You’ll go very far very fast with js or python, and once you finally hit mastery in those languages you’ll start to feel their limitations and the need for static types will be apparent.
- Is already a development environment vs a toy console. E.g. some popular framework for making apps. Learn to make apps and to work in structures/boilerplates you can't yet understand. Don't be afraid of how big it is, this all will be useful and much less scary in the end.
- Is immediately presentable to you and someone else, in an entertaining way. Back in the day it was "graphics", today it's web apps with svg, img and styled ui controls. Don't start with "interpreter in console". That semantic gap between console and real apps will demotivate you.
- Has most of its wheels invented. That means a big community, a large package repository, an infinite amount of tutorials for different libs and toolkits. Languages that have no wheels invented cannot drive, because everyone is busy reinventing.
- Isn't low level, has little legacy. If you're not a programmer yet, high level programming alone will overwhelm you for a while, the hardest part being "broad" not "deep" (you'll see). Jobs are also mostly "broad".
That's how you choose. Addressing the "overwhelmed" part: it's both deeper and shallower than you think. Deeper in that there's many decades of knowledge packed into what we have today, and there's still work to do. Shallower in that you're likely 10x overestimating what it takes to start making average apps you see. 98% of fights in programming are with stupidity of something rather than with trying to grasp something too smart.
You want to do web stuff? Learn Typescript + HTML + CSS
You want to do iOS apps? Swift
You want to do Android apps? Kotlin
You want to do AI stuff? Python
You want to do backend servers? Lots of options here, but Typescript, Python and Kotlin are well-supported on the backend too, so I'd go for one of those.
You want to do database work? SQL + whatever database you're interested in. If you don't know, go with Postgres.
You want to do games? Ask someone else, because I don't know lol
If you want a corporate IT job languages like Java are great because Java is an old, slow moving, battle-tested, statically typed language which leans into a lot of what you might look for in the corporate world.
On the other end of the spectrum you have languages like Python and PHP. PHP is a great language if you just want to bash out a website quickly and Python is great if you need to quickly hack together a script to process some data. These languages really excel when it comes to productivity, but at the cost of strict static typing and the maturity of the ecosystem. That's not to say they're bad and many companies and coders use them (including myself), but they tend to be used by smaller companies that are less risk-adverse (generally anyway).
You also have languages which are very closely tide to specific types of development. So if you want to do iOS development for example you'll probably want to learn Swift. Same is true of Kotlin if you want to do Android development.
So first I'd decide broadly what area you want to go into – do you want to focus on web development, app development, video games, AI, etc. Then once you have area in mind decide specifically what you'd like to focus on – eg backend web development or iOS games. At this point there will probably only be 1 to 3 decent languages to pick from.
If you have absolutely no idea what you want to do though I'd probably recommend learning Java, and specifically focusing on building Spring boot applications. I say that because Java is a great language if you just want to learn something in demand, with a reasonable amount of flexility in terms of what it can be used for. It will push you towards good practices such as static typing and object-orient programming.
Although the learning curve is much less severe, my personal opinion is that languages like Python and JavaScript are fairly bad first languages because it's so easy to write bad code if you don't know what you're doing.
Getting paid to learn something that enhances your value is sweet if you can get it.
This is what I'd do if I was starting again and knew what I know now. Darts a decent language and simple to learn.
so by learning one you can move on to learning the other, the difference is mainly in syntax.
If we talk about management, don’t look at the labor market, it won’t tell you whether this is relevant today, something else tomorrow. you must understand that if you choose one path, it may disappear in 3-4 years
it is important to choose in which area you will program, the programming language is a field of work, and not like German or French in real life
Different languages are better or worse for beginners, but among the set of languages that you're likely to be thinking of, I don't think those differences are very large. The biggest part of the learning curve isn't the language itself, it's the common set of skills you need regardless of the language you're writing in.
Learn to program first. Once you have that, learning additional languages as needed (or wanted) is much, much easier.
It kinda depends on what you want to do, though (if you know). Python is often used in the sciences and data sciences and ML/AI stuff. Javascript powers the Web (among with some desktop apps, unfortunately, but that's a different story).
Once you know one programming language, it's a lot easier to pick up your second, third, nth ones... the syntax of any particular language isn't as difficult to pick up as the basic logic systems (booleans, conditionals, loops, etc.) and architectural patterns, etc.
If you're not sure what you want to do with a career in "programming" just yet, maybe look up some articles or watch YouTube videos about "what does a _________ do?". Or feel free to discuss it here if you know what you kinda like or don't like?
Some industries have a "standard" language in common use. If you have some ideas of interests of the types of companies or projects you'd like to work on, that would help narrow down the choices. Some random examples:
* Python is common in science, data science, statistics, sometimes finance, some web dev backends, ML/AI, GIS (mapping), robotics, etc. Side note: I recently discovered a fun game that teaches you basic programming with a Python-like language: https://news.ycombinator.com/item?id=40719279
* Javascript is essential for web programming, no matter what other languages you use alongside it
* Games typically use C++ (especially with Unreal Engine) or C# (for Unity).
* Mobile app dev is usually Swift (for Apple stuff) or Java/Kotlin (for Android) or React Native/Javascript (for cross-platform teams that don't want to use platform-native languages)
If you have some ideas of things you like or don't like, share 'em with us :)
------------
Check out the StackOverflow annual developer survey to see what programming languages are currently most popular: https://survey.stackoverflow.co/2023/#section-most-popular-t... (TLDR it's Javascript/TypeScript, SQL, Python, Java, C#, C++, PHP, and then all the others).