System Design
https://blog.cleancoder.com/uncle-bob/2011/01/17/software-craftsmanship-is-about.html
Principles
DRY
KISS
MVP
Minimum Viable Product
SOLID
https://speakerdeck.com/tastapod/why-every-element-of-solid-is-wrong?slide=2
SRP (Single Responsibility Principle)
The single responsibility principle states that a class, module, or function should have only one reason to change, meaning it should do one thing.
OCP (Open-Closed Principle)
The open-closed principle states that classes, modules, and functions should be open for extension but closed for modification.
LSP (Liskov Substitution Principle)
The principle states that child classes or subclasses must be substitutable for their parent classes or super classes.
ISP (Interface Segregation Principle)
The interface segregation principle states that clients should not be forced to implement interfaces or methods they do not use.
DIP (Dependency Inversion Principle)
The principle states that high-level modules should not depend on low-level modules.
Software Patterns
Commonly used Software Patterns that should be known, are as follows:
- MVC (Model, View, Controller)
- MVP (Model, View, Presenter)
- MVI (Model, View, Intent)
- MVVM (Model, View, ViewModel)
- VIPER (View, Interactor, Presenter, Entity and Router) https://medium.com/@pinarkocak/understanding-viper-pattern-619fa9a0b1f1