Software Engineering, Software Architecture, Microservices, Distributed Systems, Systems Thinking.
principles thereby blowing the complexity of the system out of proportion. ## How to keep the complexity of a system in check? **Flow** — Most complex systems are split across layers of abstraction. For eg. a mobile app may have a networking layer, a view controller layer, a model layer, a database