Outsourcing Software Development Offshore: A Guide

From Offshore Outsourcing Help

Jump to: navigation, search

Succeed with Outsourcing Software Development Offshore

Offshore outsourcing can be difficult to implement, controversial and confusing. However, a successfully outsourced software project can save you money and time. This site should act as your guide to outsourcing successfully. New information is being added regularly - check back frequently for updates. Also, don't be shy about adding your own ideas to the pages, or joining in or starting a discussion. This is a website by project managers for project managers - or those looking to make the step up to offshore project management.

Contents

Introducing Outsourcing

Offshore outsourcing is when you contract for offshore companies to do work which normally could be done in-house. Outsourcing has its advantages (the main one being that it is comparatively inexpensive), and it also has its disadvantages and ethical concerns. If you choose to go the offshore route, questions will be raised within the company. It is important that the correct types of projects are chosen to be outsourced. Some projects are very good candidates while others should be kept in-house if at all possible.

What is software outsourcing? - Outsourcing is defined.

Benefits and pitfalls of outsourcing - The benefits and pitfalls of offshore outsourcing are briefly explained.

Introducing outsourcing to your company - Some ideas are given on how to introduce the idea of using offshore vendors to your company (how to answer your colleagues concerns).

Types of projects to outsource - We give you tips on which projects are good to outsource, and which are not.

Outsourcing Ethics - We talk a little about the ethics involved in outsourcing.

Successful Offshore Outsourcing 101 - 101 tips to ensure success in software offshoring.

Agile Methodology and software offshoring

In chapter 2, the benefits of using the agile methodology in software outsourcing are discussed. Throughout this website, we discuss gathering requirements, describing software architecture, developing and testing in terms of agile development. Developing using the agile development ensures you see the software frequently, and keeps the project on task - which is even more pertinent in an outsourced software project (where requirements misunderstandings are common). Scrum is an excellent way of keeping in touch with outsourced software developers, and making sure they stay on track. In this chapter, we detail some of the major challenges and solutions to employing an agile methodology in outsourced software projects.

In the past, software projects used the waterfall model (design requirements, create specification, develop, test, release). Nowadays however, this just is not realistic. Software projects are huge and complex, and it is impossible to create a requirements document which completely and concisely covers each requirement. Software will change during the course of a lifecycle. The agile development methodology takes on the fact that software will change and builds it into the system. Now, instead of creating software all in one go, we design and develop software in small pieces which build on each other. At the end of each iteration, we get the customers feedback. During this chapter we discuss the merits of using agile development compared to other methodologies, and also discuss the challenges of employing the agile methodology in outsourced projects.

About the agile methodology - The agile methodology is discussed and compared to other methodologies

A plan for using agile methods in outsourced software projects - A plan is laid out which you can follow to take advantage of agile methods.

Benefits of using the agile methodology in software outsourcing - The agile methodology has many advantages. When offshoring, it is even more essential you develop using agile methods.

Challenges and solutions to employing an agile methodology in outsourced software projects - Being agile and offshore software development can sometimes be seen as two opposites. Sometimes, offshoring involves fixed price projects, where there is little room for movement. This article suggests ways to overcome the difficulties you will face - from both your customer (the person who will receive the software), and the offshore team.

Outsourcing with Scrum - Scrum is a method of managing Agile software development. It keeps you in constant contact with the offshore team, and keeps the customer very much involved in the decision making process.

Gathering Requirements

In chapter 3, it is outlined why you need to clearly define your requirements ahead of time if you require the project to be outsourced. Some good techniques are described for gathering clear requirements from the domain experts.

This is arguably the most important step in any fixed-price outsourced project. If the requirements are not clear from the get-go the project will quickly swerve off track. Formal methods and meetings need to take place with the domain expert. Flowcharts, storyboards and prototypes need to be created and explained to the customer. The requirements need to be written up in clear and understandable English in a concise but accurate way. If the offshore company interprets a requirements document differently than intended, the project could be doomed to failure. The below information is useful to all project managers, not just those who are offshoring.

Gathering requirements - the first meeting - Explains what is expected of you during the first meeting with the customer. Hints are given on how to gather a useful set of requirements.

Gathering detailed requirements - Once you have met with the customer (the person purchasing the software) it is time to flesh out the requirements.

Using UML and Use Cases to gather requirements - UML is a very powerful tool that, when used effectively, can quickly describe user requirements and find gaps in those requirements which need to be plugged before software development can begin. This article explains how to use UML and use cases in the requirement gathering process.

Identify the projects risks - The project risks must be identified and explained to the customer before work can begin. This article describes what a risk is, and how to mitigate those risks.

Making the specification

In chapter 4, techniques are described on how to make the software specification concise but detailed. The merits of making a prototype in house are described. We discuss how to avoid being trapped in analysis paralysis. We discuss the benefits and disadvantages of having the offshore outsourcing provider create the specification.

You now have detailed requirements defined, and use cases produced. You are now well on your way to have a technical specification which is ready to be sent to outsourcing companies. When creating the software specification, you should make sure it covers all of the requirements. Make sure the specification is concise and not overly long. If the specification is long winded, it may cause the opposite effect of that desired - requirements may be missed or looked over. If the outsourced project consists of a GUI (Graphical User Interface) you should consider providing a prototype to the offshore company. There is one thing that all the outsourcing companies I have worked with have in common - poor GUI design and English grammar. A prototype will ensure that both you and the outsourcing company are on the same page.

Architect Software Onshore or Offshore? - Discusses the pro's and cons of specifying the software architecture in house or offshore.

Creating the prototype - Discusses the benefits of creating a prototype of the GUI before real development begins.

Storyboarding Software - Storyboard the software will help get you, the customer and the outsourcing provider on the same page.

Avoiding Analysis-Paralysis - This article discusses how to avoid being trapped in an endless looping of analyzing

Finding the right software offshore outsourcing providers

We discuss how to select high quality outsourcing providers. The befits of the company being audited for CMMI and ISO are discussed (and also why the company might explain that they haven't been audited - but say that they do comply!).

Before you send off your specification documents, you first need to find some good quality offshore outsourcing providers to send your specifications to. Finding the right outsourcing provider is essential to the success of your project. The outsourcing company needs to: communicate well, conform to standards, excel at the chosen technology, have a good testing process, and provide good value for money. This chapter will describe some techniques you can use to find outsourcing companies, and discover if those companies are a good match for your software project.

  • CMMI and ISO certification: What is it and why do I need it? - Both CMMI and ISO should ensure that the outsourcing prover maintains a high standard, with proven and consistent procedures in place. That is, if they are telling the truth! This article explains the difference between the different CMMI levels.

The bidding process

We discuss the number of companies to request proposals from. The merits of requesting the signing a non-disclosure agreement (NDA) are discussed. We discuss costs involved in an outsourced project and what a decent proposal should include.

By now you have gathered and documented your requirements, wrote up the specification, and now its time to ask for proposals. By this stage you should have identified some good offshore outsourcing candidates. Be prepared to be on the phone for a long time as different companies try to sell themselves to you.

  • NDA - Offshoring & Non Disclosure Agreements - Getting the offshore providers to sign an NDA is essential if you want to keep your company secrets secret. This article explains what a NDA is and why you should keep your company secrets, secret.

Managing the outsourcing process

To ensure success in offshoring software development, you must have the ability and time to manage the project. Using a waterfall methodology does not work with your onshore developers, neither will it work for offshore. There is a tendency to let the project go, and expect the software that you receive to work wonderfully, and meet all of the requirements. Software managers say that they are paying a good amount of money for a project which is already well spec'd, so it doesn't need managing from the onshore end. However, you have to understand that the idea of the project in your head good very well be different to that of the offshore team. Not only that, but even if the software was well spec'd and you developed it in house - requirements can change rapidly.

  • Managing an Agile Project - describes how to manage an offshore software project using agile methods, which will greatly increase your chances of a successful project.

Dealing with Change Requests

Chapter 8 discusses the dreaded requirements change request (RCR) - also called Change Request Order (CRO) - and why you shouldn't dread them - expect them!

A change requests order (CRO) (or Requirements Change Request (RCR)) are needed when the requirements document which you originally gave to the offshore team have changed. The order is placed with the offshore team and they will come back with a quote.

Defining Change Requests - Sometimes, CROs can be a cause for debate as it may not be as black and white as "the requirements have changed". For example, it could be that maybe the offshore team misinterpreted one or more of the requirements. They now want extra payment for the extra work they will need to put it to change the software. In the customer's eyes, the offshore team should have done it right in the first place. In the offshore teams eyes, the requirements were not well explained, and they have to put in extra work.

Specifying a Change Request Order - sometimes, change request orders are done in a hurry. However, you should make sure they are just as well defined as your original requirements document

Link Exchange

Links to outsourcing directories and offshore companies.

Personal tools
Advertisement