|Home - Industry Article - Jul 06 Issue
Success with Outsourced Product Development
By Peter Harrison, CEO, Induslogic, Inc.
Fortune 1000 companies (F1000) have flocked in droves to outsource their software development as a way of increasing efficiencies and saving millions of dollars. More than 70% of the F1000 outsource some portion of their information technology today, making this activity completely mainstream. India alone attracts $18 billion of this spending at present and this number is growing at almost 40% year over year.
Far less common has been the move by Independent Software Vendors (ISVs) and Application Service Providers (ASPs) to outsource their own core software product development. For obvious reasons, ISVs have been reluctant to outsource something as core as their product research and development, but an increasing number are doing so – more are viewing this as way to increase revenues and reduce time to market.
This market for Outsourced Product Development (OPD) is currently pegged at $1 billion but is expected to grow to almost $4 billion by 2008. According to analysts, global sourcing of product development will no longer be an optional business strategy by 2007-2008. It will become standard operating procedure. With offshore outsourcing increasingly accepted as a key competitive strategy in the global economy, the production cycle for technology-centered products will require global resources and global delivery.
ISVs and ASPs face multiple challenges today, including shrinking product lifecycles, broadening platform support and controlling costs while maintaining leadership in an increasingly competitive and evolving market.
In weighing the benefits and challenges of outsourced product development, it is imperative to draw a distinction between the processes involved with creating a software product to be installed or hosted in the marketplace, and the development of one-off software systems for internal use.
"There is a world of difference between software product engineering and one-off development".
Software Product Engineering goes beyond application development and boosts the success of our clients in the marketplace.
Enterprise software products require a higher level of quality, robustness and flexible architecture. However, there are additional differences that we believe, are important, when developing and maintaining enterprise grade solutions:
Portable: If an application needs multiple installations at a number of customer sites, it is imperative to structure a software product in a way to ensure that it runs on multiple platforms, with varied permutations and combinations of browsers, web-servers, application servers, databases, and operating systems. In most cases, it will not be possible to test every permutation and combination. However, it is important to know, which combinations require explicit testing vs. implicit support.
Scalable: The scalability needs of an enterprise software product, and in particular the hosted applications, often go beyond those of other applications. As an example, it is often necessary to have concurrent support for multiple platforms, for different classes of customers (i.e. a departmental configuration for less than 100 users and so on). Testing and optimizing the software for different segments of audiences requires great skill.
Usable: Software Product Engineering requires a high level of precision and a well designed front-end. Above all, the applications should be intuitive and easy to use. A solution that minimizes the need for training and has an excellent online help, is a requirement, not an option.
Reliable: An enterprise software product needs to be highly reliable and easy to support IT organizations (responsible for future support) often have limited knowledge of application's functionality.
Installable: Software products need to be easy to install and upgrade. Comprehensive release notes required to debug installation, or handle upgrade issues, should accompany these applications.
Ability to be Hosted: Software Product Engineering for an extranet requires special skills, in contrast to solutions intended for company's internal use. This is particularly true in scenarios where multiple companies may share the same database. Resolving issues surrounding security, network performance, remote support, diagnostics, and data modeling are critical to success.
Translatable: Enterprise software product often needs to support multiple languages. Therefore, while developing solutions one needs to keep in mind that a "literal" whether on a screen, or report, should not be hard coded. Beyond the code, this may also affect the data model and performance.
Configurable: Software products should be configurable. If one wants to install specific modules, configure the behavior of the application, or wants to change the logo on a screen, the emphasis should always be on configuration over customization.
Securable: Enterprise software products often need keys for activation to ensure they are only used by authorized users on authorize hardware and within appropriate limits, such as time or number of CPU's.
Extensible: Enterprise software product should be able to interface with external systems without large amount of customization.