I taught myself computer programming before AI became mainstream, and I still elect to avoid using AI tools because I know they can be unreliable or introduce security vulnerabilities if their output is not inspected closely. Often the process of auditing AI code offsets any productivity gains it provides, so I commend you for your desire to actually learn how to code.
Every programmer's journey will be different, and what works for one person may not work for everyone, but I will share my experience here in the hopes that it will be useful.
I first learned about programming when I was given an Arduino Uno as a kid because I wanted to build robots and LED displays. I started by reading the official Arduino book, then modifying those examples in the IDE and running my own code. Eventually, after lots of iterative testing and research on Github and blogs, I had gone from my first program ("sketch", as they are called in the Arduino world) which simply flashed a red, green, and blue LED alternately in sequence, to displaying custom graphics on a 32x32 LED matrix and even playing text-to-speech files over an 8Ω speaker. Today, I don't do much with hardware anymore as I now am developing apps for iOS.
What matters here in my opinion isn't the particular resources or technologies used, but rather finding a project you are passionate about and then starting from the smallest possible unit. If that's writing a server in Go, start with the net/http documentation and a simple 'Hello World'-style script (such as this server), then work on adding your own application specific methods and eventually adding HTTPS support. If your goal is writing a messaging application, perhaps start with learning how to build a beautiful user interface with React (again, building step by step and adding complexity iteratively rather than all at once). Then, after you have something working, try to make it interface with your backend server, perhaps starting off with a simple mock "echo" server that simply replies with your text before moving on to handle user management, encryption, etc.
I personally find that this method of small steps makes learning more accessible and engaging. Seeing an application slowly develop over time is a much better motivator than trying to do everything all at once, and then spending hours debugging. And if you do choose this approach, it is important to augment it with continuous learning so you are aware of potential pitfalls such as security vulnerabilities, UI bugs, and (especially in the case of Go) concurrency-related problems such as deadlock. However, be warned that many of these issues may seem very abstract and/or unlikely (at least they did for me), but once your first Go program dies in deadlock you will quickly see the importance of these essential considerations. And that is something that AI can't do for you (at least right now): The AI will always generate code that looks correct, but it will be far less obvious if something has gone wrong than if you have built iteratively step-by-step and know exactly which line of code caused the undesirable behavior.
That also helps you generate a minimal reproducible example, which is essential for getting help on Stack Overflow. Never underestimate the power of this forum for learning programming &em; a simple web search of your problem or question will often reveal many Stack Overflow questions, and reading through these and the answers is an invaluable debugging resource, especially when you are first learning. And by doing this, you significantly reduce the likelihood of asking a duplicate question which may get closed and/or downvoted.
In summary, start small. Learn from books, official documentation, blogs (but make sure they're from real people, as "AI slop" becomes more prevalent every day), and leverage web searches and forums for debugging. Build a simple project iteratively, and add complexity as you go. Fix bugs as they occur, but also proactively educate yourself on the bugs that can arise so they are less likely to so. Don't try to learn everything at once, and don't expect your first application to do everything you want it to right away. Know that debugging sessions can be confusing and frustrating at first, but recognize they are an essential part of the programming experience. And don't hesitate to ask for help on Stack Overflow when you get stuck.
Most of all, have fun with the process, and welcome to the community!