Over the years I have seen and been responsible for the design of many enterprise systems. From media encoding servers to financial and residual payments, I have seen many systems designs. Some good and some let’s say “required more thought to begin with”. The price to pay for a system that wasn’t designed correctly is high. It usually starts with throwing more hardware at the problem. Then when bugs and patches arrive it becomes clear that the system is difficult to maintain. By then the original team have moved on and a new set of developers, usually less experienced is hired to maintain the system. Everybody in the business can’t wait for version 2.0 that promises to be a departure from version 1.0 and the code quickly becomes legacy code. The lifespan of a good system can reach five years while a poor system will generally be replaced after two. That is if it reaches production at all. Here are ten tips learned after years of architecting.