3 ms·
The real problem is that once you get past very common sorts of things (e-mail, IM, word processing) the needs of different customers start to become different
by akeefer 17y ago
The real problem is that once you get past very common sorts of things (e-mail, IM, word processing) the needs of different customers start to become different enough that building a single product with no extensibility/customizability becomes incredibly difficult. For example, say you created a point of sale app: would that really be suitable for video rental places and for fast food franchises out of the box? No chance. If you don't make it extensible, you're guaranteeing the software won't be fit for the very, very specific purpose it needs to be put to. If you do make it extensible . . . well, writing extensible software is about 10x harder than writing non-extensible software, and as you say it leads to architecture lock-in that makes it hard to innovate in the future. Plus, the group doing the extensing is probably either in-house IT or outside consultants, neither of which are really going to have the vision/skills/motivation to make something with a truly great user experience. So by making the software extensible, you're guaranteeing it's not going to be highly polished and that progress on it will be much slower. But if you don't do that, you're restricted to incredibly small niche markets where people do things similarly enough that you don't need any extensibility (i.e. your market might be about 10 potential customers). And even then, you have to worry about integration with a gazillion other purpose-built systems, which can still make the user experience suck if they have to switch between 10 different apps, even if one of them is really, really good.
'tis a hard problem.