Developing features in order to develop features.

Someone asked me not too long ago for a list of Windows-supported languages that don't rely on white space for word breaking. I gave him a quick answer just because I happened to know, but then Yaniv Feinberg and I spent time trying to figure out a way that this guy might have used our APIs to derive his own answer to that question. That was an interesting exercise, but in the end I was struck by the same thing I'm always struck by whenever people ask questions like that: how inefficient it is that application developers who may or may not know anything about word breaking or writing systems or computational linguistics are stuck trying to intuit the answers to questions like this one. This came really close to home not too long ago when I was having a discussion with my husband, who used to develop the help integration for Visual Studio. This is a guy who knows more linguistics than your average developer, finding himself pretty overwhelmed by the fact that he somehow needed to find a way to provide word breaking support in order to display help content in multiple languages. Multiply his story by a whole bunch of linguistic services and then again by a whole bunch of application developers, and you quickly have a complicated ecosystem where developers can't focus on the real meat of the applications that they're trying to develop because they're so bogged down in the peripheral features required to make their product appealing to wide audiences.

We could actually broaden this even further, where it isn't just linguistic functionality that developers find themselves having to create, but a whole range of other stuff too -- every small piece for which their various target audiences turn out to require personalization. If we're asking individual application developers to reinvent the wheel all across the development space, then we as an industry have a pretty broken model. Especially as regards the creation of truly globalized applications.

If you're a developer, I'm interested in hearing about cases like this where you've found yourself having to create peripheral features in order to provide a personalized experience for your customers. If you were successful, I'd like to hear why. If you weren't successful, I'd like to hear why. Because the more I talk to people, the more I'm convinced this happens all the time.