engineering-hub

Knowledge index of IT engineering

View project on GitHub

What makes software complex?

  • Too many moving part - is the complexity worthed? (ex: microservices)
  • Excessive configuration
  • Unnecessary components
  • Too many layers
  • Brittle
  • Error prone
  • Hard to deploy
  • Hard to test
  • Hard to reason
  • Uncontrollable mutability
  • Excessive dependencies - dependencies are hard to maintain and become incompatible
  • Technology infatuation & Resume driven development - frequently adding new technologies without business value
  • Lack of reversibility - The ability to back out of design/architectural decisions
    • Frameworks - the framework calls to your code and your code calls to the. framework
    • Libraries - easier to reverse than a framework
      • “Using a library is like dating, using a framework is like a marriage”

Resource