S
: Single-responsibility Principle. A class/function should have only one job.O
: Open-closed Principle. Objects should be open for extension but closed for modification.I
: Interface Segregation Principle. No code should be forced to depend on methods it do not use.D
: Dependency Inversion Principle. High-level module must not depend on the low-level module, but they should depend on abstractions.Juniors developers think of developing features, whereas seniors think of how to remove codes.
These two advice striked me so hard at the beginning lol, and I have been constantly reminding myself since.