*listed in no particular order
You have to know how business functions and you have to understand it in order to make reasonable decisions.
Keep it simple (KISS)
System Design should be as simple as possible. Don’t overcomplicate without necessity. Simple systems are easier to understand, extend, and maintain.
Do One Thing And Do It Well (DOTADIW)
Write programs that do one thing and do it really well. Write programs to work together.
Don’t add functionality without necessity (YaGNI principle)
In a dynamic environment, it’s impossible to predict requirements upfront so it does not make sense to spend time on something that is not needed right away
A service or a system should run out of the box with the default configuration.
API is a first-class citizen. Internal user-facing applications should use the same API that is exposed externally.
When you face a choice like what naming convention or framework to use, try to look around, find similar cases and stay consistent with them unless you have a strong reason to diverge.
Everything should be the code. Investments in automation early will pay off in the long run by simplifying the routine tasks and eliminating human error
Think about security early from the beginning. It's hard to add security to an already existing system.
In order to handle errors effectively, we need to know where they happen and what exactly happened. Systems are complex and they fail from time to time. Our goal is to make sure we are prepared