Develop locally, think globally!

So you want to develop a globalized application for Windows. You're up to speed on development best practices, you're going to be using Unicode, you know how to use Windows APIs and locale data to enhance the user experience you create. So how do you identify and support the right target market for launching your product?

Some applications strive to meet customer expectations across a pretty broad range of markets, since there are certain core computer tasks that most kinds of users in most locations require. Novice, intermediate, and advanced users all over the world are using the internet and communicating by email. Many of them are buying things online, writing documents, instant messaging, or managing their schedule. Some applications cast a wide net in order to capture the broadest range of customers who might be interested in using them.

Other products are intended for smaller, more highly focused markets, where the market might be defined by region, by customer segment, by language group, or by the environment in which the application is used. Datbase applications that are used in the workplace may be irrelevant at home, while educational software may be used at home or in schools but is not typically found on most people's machines at work. If you're writing an application geared to help Japanese speakers learn Italian, it's unlikely that you will design your product to accomodate the preferences of users in Russia. Even tasks that most computer users engage in, such as the examples in the paragraph just above, may require different user experiences for different kinds of customers. Depending on the scope of your application, the design decisions that you make in order to satsify the core scenarios of your core customers may vary quite a bit in the specificity of the user experience that they provide.

So here's the real question: Once you've identified the target market for your product's launch, what do you do if it's a market that Microsoft is only just beginning to support? Particularly if you've identified a business opportunity in a region that is newer to technology, there's a good chance that you'll find some gap between the internationalization support that you can count on the Windows platform to provide in general and the support that is available for the region you're targeting. So how can you develop the application in a scalable, globally extensible way that both supports your current business need and allows for your eventual growth into new markets without a lot of redundant development efforts on your part?

1. Know your requirements. What differentiates your market from other similar markets? What differentiates your application from other similar applications? The more specifically you have outlined your core requirements, the greater the chance that you'll be able to identify exactly which pieces of core support are missing. We may have support that you're not currently taking advantage of because you haven't needed to in the past.

2. Know your requirements, but think extensibly about them. Is your application useful for markets beyond the initial market where you've been focusing your efforts? Thinking up front about the desired growth path for your product helps ensure that you're making decisions that don't make it more difficult for you to expand later on. Hard-coding data that you could be using the Windows platform to store and retrieve is a good way to give yourself headaches when more customers are clamoring for your product later.

3. Include custom solutions for your users. Does your customer base require specialized locale data? Create and include a custom locale for their installation to enhance the experience they'll get using your application. If we can't include a locale on a timeline fast enough for you to jump into the market where you see your opportunity, use the tools and infrastructure available in Vista so that you don't need to wait.

4. Tell us. Finally, if you have a need to develop or extend an application for a market that we're not supporting, we want to know. If we're blocking you, we want to know. The Windows platform needs to support the requirements of developers who create applications for it. If we're not doing that, we need to hear about it and figure out how to get out of the way. Are there new languages or regions for which you're trying to develop applications that you can't rely on Windows to support? Are there kinds of information that you would like to be able to store and retrieve about your market's preferences that are not currently available in the Windows platform? If we don't know that you need it, we may never provide it.

Windows provides a great core infrastructure to work from today, but it's only by figuring out what's missing that we can continue to improve it to help developers provide a truly globalized experience for their applications.