OK, the title is controversial since we all know how hard it is to scale up customized software product. It is hard to set up another implementation. When you’re done with it you can’t just deploy new features in both environments since the code base is different. When you have three of four of implementations maintenance becomes a real pain in the ass.
Then of course you choose some kind of standardization path. You move your architecture to a model when a core is standard across all implementations but you switch different plug-ins to allow interoperability. That’s natural. Everyone does it.
Why I try to look for advantages of legacy architecture then? Because it just so happens we have that kind of implementations. And we actually don’t have much choice but to maintain them. It’s better to find some good sides of the situation then.
1. Easy customizations. That’s actually quite obvious when we talk about custom software. However, when you don’t need to care about all others implementations it’s much easier to add some new features your customer wants to see in the product. And they do want them very often, believe me.
2. Suits as a glove. Custom software can be great from customer perspective. It means the customer doesn’t have to care about any other customer supplied by their vendor. It’s easier to go for uncommon solutions or exploit specificity of the environment to find some new ways to milk users.
3. Testbed. From the business perspective investment to add functionality in one of custom implementations is much cheaper than to add it in standard product line. When you look for a testbed for your bold ideas, well, look for custom implementations. If they work, move them to standard product line.
4. Easy architecture changes. Sometimes you hit the wall hard with your head in terms of scalability or performance. That’s the time when you put your architecture upside down and find how many wrong assumptions were set during design phase of the project. With custom software you can overcome those barriers fairly easy since you don’t have big customer base to migrate and not much different cases to consider during migration. Actually you have a single case.
And after all, no, most of the time I don’t advise you to build custom projects instead of software products. It just doesn’t scale up well.