Seriously, how do you learn to engineer software correctly?

Posted by Famous_Cranberry452@reddit | learnprogramming | View on Reddit | 66 comments

I am decent at programming, albeit not the best. I also know enough theory in CS due to almost being done with a degree. So on that front I'm all set.

But I actually never figured out how to correctly engineer software.

I have some private projects under my belt and school has also had enough projects that I roughly know my way around.

But everytime, it looks the same:

  1. Haphazardly designing something that sounds solid

  2. Plan on using git correctly and document everything meticulously

  3. Abandon a lot of your ideas half way through

  4. Getting sloppier and sloppier with your code architecture

  5. Your clean git pushes and branching turn into a giant mess

  6. In the end you get something that is barely working on a codebase that looks messy and your 'engineering principles and design' went missing

Oh and testing is more like "yeah I think there are supposed to be unit tests so lemme just write some test classes. Works? Great." and then never touch it again.

It's all just very chaotic.

How can I change this and learn software engineering properly without having all the projects just turning into a mess?

I need some tips on how to learn a systematic and correct engineering workflow and design good software.