Runtime - The Software Outsourcing Newsletter
for Executives and Investors
from Accelerance and Steve MezakIn this issue: Select your software development methodology based on the kind of outsourcing you are doing — outsourcing of software modules or your entire software application.
Over the Waterfall into Agile Outsourcing
Do you have to be a software development expert to make effective use of offshore outsourcing? It probably wouldn't hurt. But who has the time to become an expert in multiple software development methodologies and then pick the best one before you start outsourcing? Not many. Waterfall, Agile, RUP - what is the best approach?
People tend to fall back on the method or approach they used in the past. But the best choice of method depends on the kind of outsourcing you want to do.
You need to make a fundamental choice concerning your outsourcing. Will you outsource your entire software application? Or just software modules you then assemble into a complete application yourself?
Outsourcing individual modules works well if the modules require specific technical expertise. It can be easier and more cost effective to find the expertise you need outside your company compared to hiring expert employees. In this case you have to take responsibility for managing your outsourcing team and integrating their work with the software you create internally.
You must also take responsibility for good specifications for your outsourced modules. Typically in this situation, the more traditional "waterfall" techniques of software specification are used.
This old style of software design is called the waterfall method because when you draw boxes around all of the sequential steps and then pour water into the first one, it will fall through each box — from the Requirements box to the Design box and so on down through the Coding and Testing boxes until you get to the end of the project.
In the past, efforts to make the software development process more productive focused on creating better specifications. As the theory went, first you capture what your software is supposed to do, including features and responsiveness. Second, you should create a good design and description of how these requirements are to be achieved. Then you can start coding.
But it is rare that you know all the details of what your software should do when you are at the beginning of a project. In fact it is virtually impossible unless you are rewriting an existing application.
For example, if you are converting a client/server application to a web application, then you have a well-defined goal. You want to make the new web application behave as much like the client/server application as possible. Your existing software functionality, user documentation and old specifications are a great start for defining the new system. You have a pretty good chance of defining the software completely.
But if you are starting from scratch then a tremendous amount of time must be spent creating the specifications. Observant software engineers have realized that they jump back and forth between the different boxes during the course of development. Enforcing a sequential process like waterfall is artificial and counterproductive.
Many companies treat offshore outsourcing strictly as a business decision. A general description of what the software should do is given and then the lowest possible price is asked for. If you are developing a new software application, this can be a recipe for disaster.
You can spend months debating what your new software application should do and what should be in the specification. You are better off selecting an offshore vendor with experience developing new applications that you can collaborate with to create yours.
User Stories and Agile software development methods are recommended for new software application development. Agile methods get your offshore vendor developing software as soon as possible. Frequent releases - every three to four weeks give you steadily increasing amounts of high-quality working software
Whatever methodology is the best fit for your software development, the Accelerance Outsourcing Jumpstart service is the best way to start outsourcing. You get to a short list of pre-qualified vendors quickly, no matter which kind of outsourcing you want to do. Software development methodology is one of the criteria used for your vendor selection with Outsourcing Jumpstart.
See http://www.accelerance.com/services.htm for more details.
***
The Runtime Bottom Line: Your best specification approach and software development methodology is based on the kind of outsourcing you want to do. Choose Agile methods for new software applications and collaborate with your offshore vendor. If you outsource the creation of individual software modules, then you need to take responsibility for creating detailed specifications.
Until next time,
Steve Mezak
Accelerance, Inc.
Risk-Free Outsourcing
213 Garcia Avenue
Half Moon Bay, CA 94019
1-650-712-8990(c) 2006 Accelerance, Inc. All rights reserved. You are free to use material from the "Runtime" eZine in whole or in part, as long as you include complete attribution, including live web site link. Please also notify me where the material will appear.
The attribution should read:
"By Steve Mezak, CEO of Accelerance, Inc. Please visit the Accelerance web site at http://www.Accelerance.com for more information and resources on outsourcing and creating great software."