Wanna learn to code? Here's some advice!
As someone who went through the process myself, I thought it would be helpful to post some advice on learning how to code. When picking up a new skill, the first difficuilty might already be figuring out where exactly to start - especially when you didn't have the opportunity to ask someone who is already experienced. So, here are some things I would pay attention to if I had to start over.
1) What technology to start with
Since there is a variety of possible coding languages as well as use cases, the first question you'll have to answer for yourself is what you want to start with. Unless you have plans for learning towards a specific kind of professional position, this question is not as important as you might think. Pick something that is going to interest you. Ask yourself what you want to do later on. Do you want to develop websites or web apps? Do you want to start out with some simple scripting? Do you want a tool to develop mobile apps or graphical desktop applications?
Once you know what you want to do, you can pick a language. Research what's relevant for the field of your choice and start at a single point. If you want to learn web development for example, you can start with HTML and learn to style your webpages with CSS. If you want to be able to try desktop programs aswell as Android apps, maybe Java is the right place to start. Do your own research and find out what interests you.
Don't worry too much about changing your mind concerning your goals later and don't be discouraged from starting with something that looks difficuilt. My first language was C++, which I don't use anymore. It is a complicated language for beginners in my opinion, but learning the basics of it allowed me to get into other technologies that are more relevant for me later on. In the end, no programming language is too hard to learn. It is all made by humans and for humans. Once you know a language, your knowledge is going to transfer to other technologies you want to learn. Of course it is going to transfer better or worse depending on the technologies, but you're likely going to come across similar setup processes for your development tools, similar sets of basic language instructions and so on.
2) You don't need to spend money to learn
While things like paid online courses or books can be helpful, especially when you want some high-quality guidance on a more exotic and complicated topic, they are not a requirement for learning. You can just go to Youtube, find a tutorial series on the language or concept of your choice and code along. As someone who had a C++ book early on, I would say that it didn't help me as much as I probably expected. There is plenty of free material and information out there on the internet about any popular and proven programming language.
3) Learn with projects
Don't necessarily try to 'learn the entire language'. I don't know if anyone really knows the entire language with all ins-and-outs when we are talking about, lets say, Java. I recommend learning by Projects. Set goals that you want to achieve, find out what you need to achieve them and learn those things. For example, your very first goal is probably going to be a 'Hello World' program. That's a program that simply displays the words 'Hello World!' on your screen. Then, your next step is probably to make a calculator that lets you add two numbers and displays the result. Then, you can extend that calculator by the other basic mathematical operations subtraction, multiplication and addition. Then, you might experiment with writing data into a file.
Those basics enable you to move on to bigger goals like a graphical Tic-Tac-Toe game. You'll need some sort of library or framework that allows you to make a graphical user interface for that. You can find one, learn it and use it. After a project of such complexity, you probably have a pretty good understanding of how the inner workings of a program lead to what the user sees on their screen. I am a big fan of this project-based approach because it requires you to do a requirement analysis and figure out what you need, aswell as giving the single steps (such as learning the basics of graphical user interfaces or databases) a purpose. Finishing the small tasks behind your project will be a motivating and educational experience.