Im interested in learning programming but there are so many diffrent programming languages and guides that I feel overwhelmed and dont know where or how to start. any useful advice is appreciated.
You are starting a journey which is not short, that will be full of amazing things but also frustration. You also mentioned in a post that you want to create a videogame like EU4 and HOI4. I think that is a good goal to have, but also a quite ambitious one.
In my view, you should focus on finding a way to learn programming that keeps you motivated and prevents you from quitting early in the process. Choices of programming languages, technologies, platforms and things with fancy names should be done with that in mind.
So, how to learn programming? I think that you should…
- Find some materials you find yourself comfortable with. Those materials might be reference books, video tutorials, guides, online courses or anything else. You need to find what you like to use as a reference.
- Start making things as early as possible, and complete them as often as possible. In other words: start simple, small projects that you can complete and start them often, don’t wait until you can implement a quicksort to write something you are interested in writing. Maybe even don’t write a quicksort at all. Focus on doing stuff that interests you while making you learn.
- Find humans that you are comfortable with to share your progress with, ask and learn from. This community may very well be that group of humans, but you can think of others too. Maybe some friend, maybe someone you know online. This is useful because other people can make your learning process faster and, importantly, less frustrating. Other people can also help you with the two previous points in this list: finding materials and giving some ideas for new activities or projects.
So, where exactly to start learning? I think that you could… (different options)
- Start learning a programming language, such as Python. Python in particular is easy to learn, very powerful, well supported and has huge community. It will help you learn programming and it will be useful after you have learned. Other languages can also be okay, for instance C#, which is maybe slightly more difficult than Python but it’s a good choice for game development.
- Start learning a game engine, such as Godot. This way you will need to learn the game engine AND programming in order to do anything, and that’s maybe a little too ambitious, but it is more pragmatic.
- Find a community, school or similar that can guide you through the learning process and stick to it. I am talking about sites such as https://www.freecodecamp.org, https://exercism.org/ or https://www.theodinproject.com/. I am not recommending any of these in particular because I have no experience with them, just mentioning them so that you know what I am talking about. These communities usually have a plethora of challenges or guided exercises that walk you through learning how to program.
There are many options, and you will hear a lot of recommendations of what worked for other people. That is fine, but you need to find what works for you 🙂
Thank you for the large ammount of advice shared!
No problem 🙂
Interestingly enough, these days I have been thinking about resuming my experiments within game development. It’s not a field I am super experienced in, but just for the sake of knowledge sharing…
I started a small project in MonoGame with C#. It is a low~ish level framework, just as I wanted, because I wanted to avoid learning a full-blown engine (such as Godot, which I tried before going with MonoGame). Not that I am recommending this particular track for your situation, though, but based on what I am doing in MonoGame, I think it could be a good way for you (if you chose this track) to be pragmatic (making something) while still forcing you to learn programming. The framework still takes care of some things such as the game loop.
I also created an account in Exercism, one of the communities I mentioned before, because I wanted to mentor someone and they offered this posibility. Whereas I didn’t find exactly what I was looking for, I found the website to be quite pleasant to use, so I am slightly more inclined towards recommending that you consider using it 🙂
Exercism is really nice to learn a language without getting overwhelmed, and also trains you into the kind of coding challenges that are asked on job interviews. I also want to mention codingame.com which is a bit more advanced and has very game like problems (mostly AI stuff) that you can solve in a fun environment
I like learning through games, because it helps keep me engaged. BitBurner is a free incremental JavaScript programming game that I enjoyed. It even has a coding puzzle element similar to games on codin game.com, which has a bunch of free games/puzzles in several languages.
These games didn’t necessarily walk me through programming concepts, but got me comfortable with reading documentation and a offered a sandbox to experiment in. YMMV.
The most important thing is to start. Which language you pick is less important, once you grasp a concept you can just google how the syntax is for another language.
I made the mistake of being too brainy - thinking too much about how to start correctly and which language to pick. I ended up waffling around with some python here, some javascript there, and some c# as well. In hindsight I think just startingin any language and trying to |ake projects instead of looking for the perfect course and combination would have helped much more.
I personally like w3schools a lot, they have very concise courses for a lot of languages, and also a reference for most of them so if you don’t want to follow a course you can just look up things real quick and see what happens.
If you are starting to program start with python
I came here to say this.
If you don’t know what you want or why, start with Python.
Python is a full featured language with a helpful community, loads of great libraries, and is used in anything from automation scripts to games to data modelling & crunching as well as apps.
One of the best things about Python is how helpful and applicable the online documentation and community culture are.
Why do you want to learn programming? What do you want to make with it?
Find something you want to make, then learn the language used to make it.
If you just want to “learn” you’re going to be directionless. Give yourself a direction. An end goal.
My ultimate goal when i learn programming is creating a modable FOSS hoi4/eu4 like game because i like the genere but hate the dlc policy.
Id consider learning the base programming language of whatever engine you plan to use, unless you plan on building the engine from scratch.
For example, Unity uses C#, with some C++(as the engine itself uses it, the C# is what the end user uses), while Unreal engine is entirely C++
C# is easier than C++, but learning C++ will teach more concepts. I learned C++ first, built a 2D game engine with sfml, then I learned C#, and use Unity for almost all my projects now
University of Helsinki mooc.fi course is free, really good, and doesn’t require any prior knowledge to start. Current year’s version uses Python (there is also a Java version), but what I liked the most about it is that it’s essentially an Uni course, and as such it focuses on teaching the programming concepts rather than using a specific language.
Lots of great options! Udemy has some great classes. Edx is also fantastic and has professors and is structured like college classes (https://www.edx.org/learn/computer-science ) Take the basics of computer science and then think about what you want to do. Do you want to do web dev? Backend systems? Enterprise applications? Scripting for system admin? Hardware? Gaming?
Either way learn the basic principles and then pick something that fits your interests. In college a lot of us learned Java or C++ and from there branched out to other languages pretty easily.
If you just want to learn a language then grab the intro to whatever language you want from Udemy.
Comp sci isn’t that necessary for some languages but does help build a great foundation on understanding how and why languages work along with some core competencies for discrete alg, understanding larger algos for data modeling, etc. again not necessary and some of the best engineers I worked with don’t have comp sci backgrounds.
If you want to make games, start with a text based adventure game, something like Zork. Learn as you go, you will need console IO and data structures to represent game state, puzzles, levels. Then make a 2D game. After that you will probably be proficient enough to make anything you want.