There are always things from the past you regret you ever did. What makes software development different? Well, nothing. There are always things that will take time for you to understand. But who says you can’t simply trust somebody who has been in your shoes earlier? You probably won’t anyway but I am still writing this just so that, within some time, I can sit back in my cozy chair, put way the newspaper, look deeply into your eyes and say the phrase any parent is willing to kill for a chance of using. Four simple words. I. Told. You. So.
So, we begin with realizing there is no such thing as the only right way
It will take years for you to understand that there is no general guideline or how-to in software development. Sure there are best practices but they are not ultimate-supreme life savers. Every decision you are and will be making in software development is based on the situation you are in. Not more, not less. If somebody else needed to do the very same task there is a 99.9% chance he would do so in a different way. And the code would still work.
You are to be clear on the fact there is a set of different solutions that are resolving a certain issue and there is no actual need in making holy wars about whose solution is best. With all the agile around some are using waterfall and are great with it because it meets their goals. Just let go and try being more creative rather than sticking to only one practice 3 books you have read are telling you to.
What is just the right way of learning?
Where does knowledge come from? That’s right, from books mostly. But when there is nothing wrong about reading a nice book its practice that makes perfect. So, reading a book from cover to cover may not be the best solution when you are studying. And especially something as clever as code. What you really wish of doing is going through the books chapters in general in order of getting the general idea. Afterwards you are to implement all that trying to figure out how things actually work on their own.
Being a master of but one technology is not the best option as well. Thus studying one particular thing is rather a waste of time and effort. Sure it’s important to know the technology you are currently using but a developer needs to stay open-minded. What if that, let’s say .NET of yours will get replaced with something better tomorrow? More studies? And what about third party apps you may end up integrating that are not written in your favorite C? Consider the ouds.
And quit arguing with people on forums. Try learning from them. Nowadays with the full potential of the internet your community is to be your best friend. Think about it.