The way you become 'good' is by:
- Coming up with a 'good design' you think will work.
- implement the code.
- Ship the result
- Spend the next 6 months fixing all the terrible flaws in your 'good design'
No one is born a software engineer, it's just something you get better at with experience....