As far as I can tell, everything you observed is correct, but I think you may have overlooked one thing: you do not need to learn on a "real world" project that you started, instead learn on a project that was started by someone else.
In professional world, a lot of us started by joining a team of experienced developers. A lot of times new person that is coming in is not simply given a project and told, "go do it". Instead they are given simpler tasks, such as fixing bugs in existing work. As you get more familiar with the product, the team, the coding conventions, the existing code base, you might be given more complicated tasks but none of them will be "a new project".
To give you an example, when I started my first co-op job, my very first assignment to find a cause and a fix for production data log unexpectedly failing in the middle of a long job. It took me 5 days of tracing through the code and when I found a problem, which turned out to be a malformed SQL statement, it took 1 line of code to fix it. It was 2+ years from that point before I was given a chance to actually start my own project and design from ground up an OPC HDA server. Before that, I was working with a ton of code written by other people.
If you are not working as a software engineer but want to learn on your own, I would limit how much time you work by yourself on "real world" projects. You should still do it, but keep in mind that while you learn the language and some technology, you will inadvertently developer not so good habits. By yourself, it might take you years to learn that these habits are bad and even longer to finally learn a better way.
Another alternative you should explore though, is to take a look at some open source software that you might happen to be using. Is there anything about that software that is glitchy or buggy? Start with something small and easy. Find a fix for it and submit it. Most likely, it will get code reviewed by the project owners/leaders and they will give you feedback on whether or not your fix is acceptable or if it should be tweaked some more. That feedback to you is invaluable. For example, I have a coworker who is relatively new to C++. He has been using this open source music library manager written in C++/Qt. He ended up submitting several fixes, which were low priority when compared to everything else, but those specific bugs were annoying him, and so he got to learn more about C++ and Qt and at the same time improve his own user experience with that software.