Software Engineering, Software Architecture, Microservices, Distributed Systems, Systems Thinking.
Three key principles for designing good systems Everything difficult is usually complex. And everything complex is difficult. The resources and skills required to deal with complexity increase exponentially as complexity increases. An assembly line of 50 workers is n times harder to manage than that