Hacker News new | past | comments | ask | show | jobs | submit login
How to choose what a programming language to learn first
7 points by pupontech 66 days ago | hide | past | favorite | 19 comments
Looking to pivot from IT into programming and super overwhelmed by the choices. How do I begin to choose a language so I can advance into tutorial hell erm learning.



Instead of picking the language first, decide what you want to create. Having a project you are interested in is key to learning. If you’re just doing a bunch of tutorials you don’t care about, with no way to apply them, it’s hard to stick with it. Any language can teach you the basics and those basics will be transferable to any language.

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 have friends or other people in your organisation that can help, consider choosing the language they use. Otherwise choose a general purpose language that has a longish history. I would say Python, JS/Node, C# would all be reasonable and maybe Java as well. Choosing anything more obscure or specific might limit you. Consider what you want to build and choose the right tool for the job.


Start with Python. Problem solved.

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.


Don't think about it too much. There are so many choices, that you'll end up trying to learn them all but master none. Start looking at the job descriptions for jobs you would like to get. Look at what they require for the jobs they post. Then look at the list of the most popular languages and decide by considering both the job descriptions and language popularity. Java and Python have been popular for a long time. You might want to start with those. The great advantage of learning those is that you'll get plenty of support online due to their popularity. Your initial goal is to understand how to put a program together that solves a problem. That's your most important goal at the start. I can tell you that no matter which you pick, you'll eventually wish you'd pick another. But the reality is that you can only pick one. Be a master at what you pick and you will get a job. So pick one and start.

Oh, pick a project too. Anything as long as it's challenging and it interests you.


What language would help you the most in your current role? The best projects are ones you actually need, and building scripts for work will teach you more than building a generic crud app.

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.


I'd advise you to NOT start with "what you want to do", cause you're likely not even sure. Take something that:

- 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.


Ask yourself what kind of project you want to work on, and go from there.

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


This mostly depends on what you want to do. Languages have their unique pros and cons so excel and are overrepresented in certain use cases.

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.


If you are going to apply for a programming job, I suggest you start by learning JavaScript. If you want to work on some personal projects, you can mention that. However, Python and JavaScript are always the top choices.


C#/.NET, then do JavaScript. When you finally build a big project, you’ll realize why statically typed languages matter, but also why the fluidity of prototypical languages are important


Pick whichever language you can get paid to learn. That is, is there any job assignment in your current role (or adjacent to it) where you can do some programming? What language do you need for it? Pick up the rudiments of that language on your own if you have to, and then get paid to use it (and thereby get better at it).

Getting paid to learn something that enhances your value is sweet if you can get it.


If you want to do any sort of app development (mobile, desktop, web) I'd chose Dart and Flutter.

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.


everything you need to know about modern programming - most languages are similar to C

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


There is idea answer, and then there is Python. I would have picked later!


Honestly, I'd choose the one that the most people I know use. That way you have access to plenty of readily-available expertise.

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.


Start with something simple, yet real: ruby, js


Go by alphabetical order.


Python and Javascript are probably the most beginner-friendly general-purpose programming languages to learn (while still being real languages in common professional use).

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).


Seconded. You can power an entire career solely on the backs of Python and JavaScript. (You might not want to, but you can.)




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: