Ask the chaps in charge,and they’ll probably tell you that we need enterprise design for various reasons…
- We need separation of concerns so that specialist teams can work on different parts of the code at the same time.
- We need a documented API so that the different teams can work effectively in parallel.
- We need a security model to prevent unauthorized actions from occurring.
- We need well-documented code so that the architect can ensure that the implementation matches the UML diagrams.
- We need auditing and logging to ensure that the system is SOX compliant.
- We need scalability to ensure that the system is ready for the challenges of rapid customer acquisition.
Actually, those are the stated reasons, but we all know that this is not the whole story. The real reasons for an “enterprise design” become apparent when you talk to the people involved:
- Development Manager: “We need separation of concerns because the front-end team and back-end team hate each other and refuse to work in the same room.”
- Front-end team: “We need a documented API so that those dummies building the back-end won’t keep breaking our code on every commit.”
- Back-end team: “We need a security model because those idiots building the front-end will always find a way to do something stupid unless we constrain them.”
- Maintenance team: “We need well-documented code because we’re fed up of having to reverse engineer the hacked-up spaghetti being thrown at us.”
- Testers and Operations: “We need auditing and logging so that we can see what the effing system is doing inside.”
- Everyone: “We don’t really need scalability at all, but the CTO wants to us to be buzzword compliant.”
No, this isn’t mine, but I thought it was too funny (and close to the truth) to leave alone. Full credits to Scott Wlaschin, who posted it on his wonderful FSharp For Fun And Profit web site.