#1 Never change interfaces.
No, you can never change published interfaces without risks. Never. Don’t take risks.
#2 Too many layers are evil.
Don’t add layers on top of layers. Some engineers love layers, because they have complicated minds, but each additional layer is an overhead, it makes architecture more complicated and that’s the start of evil.
Simple solutions are elegant, efficient and easy to maintain.
#3 Seek for simplicity.
Einstein said “everything should be made as simple as possible, but not simpler”. Do not argue with him, complicacy is just expensive waste.
#4 Each round-trip costs.
This simple fact is so easy to forget, but so important in current interconnected micro-services architecture. Minimize the communication round-trips and your users will joice the fast response time.
#5 Use the right tools for the job.
Some programming languages are more prone e.g. to memory leaks than others. Typical business application should not be written in a language like C++, because it is a dangerous tool in most hands.
Use tools that are common, because it’ll be easier to find developers.
What will be the life-cycle of your product? You need someone to maintain it, so don’t use dying technologies.
#6 Code must be beautiful.
Beautiful and readable. That’s the signature of a professional.