Programming is hard. You definetly need a guidance when you are taking on something that can be that compelling. So this document is a humble attemp to alleviate one the thoughest professional paths for those who have chosen it.
Do not underestimate the value of things like: time/space comlexity, big O notation, data structures, algorithms ect. Every technology is build on top of these concepts.
One of the most common mistakes especially when you are begginer is making things too generic. Writing code and functionaly for something that does not exist yet. Try to avoid that because disposition can change very quickly and things that you were aiming for when you wrote your generic code could be irrelevant tommorow. In that case the precious time and effort will be wasted for nothing. Only the tasks at hand.
- Single responsibility principle Every object should be responsible only for one thing
- Open-closed principle A software artifact should be open for extension but closed for modification.
- Lyskov substitution principle principle Objects/classes in programm can be substituted by thier inherited objects/classes without changing the behaviour of the programm. As conterintuitive as it might sound but vertical inheritance is the weakest part of OOP. Lyskov substitution principle is all about that. You should be careful when you use base classes.
- Interface segregation principle
- Dependency inversion principle Dependencies should be build on top of abstractions not on top of details