Make it work then optimize.
Start from small then expand.
Don't hesitate to copy code from others.
Don't just copy, understand it.
Learn various algorithms (Data Structure and Algorithms)
Know what you have to know
You don't need to learn everthing
Lastly, touch some grass.
(DRY) Don't Repeat Yourself
(SOLID) Single Responsibility, Open/Closed, Liskov Substitution, Interface Segregationn, Dependency Inversion
(KISS) Keep It Simple, Stupid
(YAGNI) You Aren't Gonna Need It
Aim for cleaner code
Utilize programming patterns (Creational, Structural, Behavioural)