| OffShore
Development Tips and Techniques |
|
Leveraging
Offshore Development Centers |
|
by
Bryan Campbell
October
2, 2002 |
| |
| Abstract |
|
If
you've been working in the software development industry for the last
five years you'll have heard the increasing clamor to use offshore
development resources. Most of the initial interest on offshore
was focused on the significant cost savings that it could offer,
however, recently these claims have been enhanced with promises of
increased quality thanks to the high CMM certifications of many offshore
development organizations. This article is a quick primer on some real
world experiences that might help you if you're either thinking of
following this approach or you're in the midst of an offshore
development project.
|
| Get
Real |
|
Regardless
of some of the promises you might have heard, offshore development will
only help your project save about 15-25% of its costs. Why?
Because the most logical piece of a project that can be outsourced is
the 'commodity' oriented programming component. Unfortunately,
programming represents only 30-50% of a software development project's
total costs. The rest is taken up by project management,
requirements/analysis and design, testing and ancillary activities (like
configuration management and environment preparation). Unless the
project has very well defined requirements and has been well designed
(which places many mainframe development projects into this category),
you won't see the 100-200% returns many offshore development
organizations are touting. However, the opportunity to save up to
25% of your project costs can be quite significant, particularly these
days.
If
your system is a high novelty system you won't be able to avoid the need
for proper requirements gathering and analysis and design.
Unfortunately, this process needs direct access to users and business
stakeholders which requires an onsite presence. Before embarking
on an offshore development project, you need to understand where your
organization's capabilities reside. If requirements gathering and
analysis and design are skills that are readily available and which have
hardened processes you are probably in a good position to capitalize on
offshore development. If not, then spend the time necessary to
develop processes and skills to support these important workflows.
It's easy to lose the benefits of cheaper offshore resources by
inefficient re-work if requirements are not adequately documented or
communicated.
|
| Communicate,
Communicate, Communicate |
|
If
you thought your current projects are challenged by lack of
communications you might want to re-assess your capacity to support an
offshore development project. Regularly scheduled conference
calls, e-mails and chat sessions are a must for managing these
projects. Not only are these sessions for sharing information and
establishing a clear perspective on the status of the project but
they are also important for avoiding any of the miscommunication which
can plague an offshore development project.
I
would strongly encourage defining a communication strategy for
your offshore development project. This should document a number
of important communication techniques such as the frequency of scheduled
conference calls with the entire team, the use of chat tools,
whether or not video conferencing will be supported, application
sharing tools, how to use e-mail and the use of a repository
to manage project artifacts:
Conference
Calls: It is important to have regularly scheduled conference
calls with the whole project team. The calls should be
conducted by the onsite and offsite project leads although everyone
should have an opportunity to participate. Calls should be
carefully managed to ensure they start and end on time. Detailed
issues should be assigned to individuals to be followed-up
offline. Issues and tasks should be documented and entered into a
tool which can be accessed by the entire project team at any time. It
might be necessary to have a variety of project conference calls for
different teams based on the size of the project (some involving the
business owner/customer and others with only the project participants).
Chat
Tools: Tools like MSN Messenger and Yahoo are indispensable to
managing offshore projects. However, it is important that everyone
have an assigned ID, that these IDs are communicated throughout the team
and that project members follow some form of 'etiquette' (since not all
issues can be resolved by instant messages!).
Video
Conferencing: If you have access to good video conferencing
facilities I would recommend using them, however, these require high
bandwidth and more sophisticated equipment than the $100 webcams that
are becoming increasingly popular. Video Conferencing due to its
cost and the challenges of setting it up is probably best for formal
status updates which should only occur every week.
Application
Sharing: One area that can greatly aid collaborative
development with an offshore team is exploring some of the application
sharing tools that are available. These tools allow teams to
'whiteboard' different solutions and to work on a common document
together (such as a use case or architecture diagram). These tools
are very useful in place of the brainstorming that onsite teams often
are involved in.
E-mail
Usage: E-mail is an important mechanism for sharing
information between onsite and offsite teams. However, it should
not be used to replace other components of your communication strategy,
particular a document repository. All too often, e-mail is used as
a mechanism to share artifacts, the risk is that these artifacts can be
difficult to track and manage. It can also be difficult to ensure
that everyone has the most current version of an artifact. For
offshore development projects this becomes a critical risk. To
address this, guidelines should be drafted for the project where
documents are transmitted via e-mail only in unique circumstances.
Otherwise, all documents should be placed in a repository and
notifications of these deposits provided through e-mail with a link to
the back to the repository. Using e-mail for short, focused forms
of documented communication is the best way to use this technology for
project communication purposes.
Document
Repository: A commonly accessible document repository is an
important tool for facilitating communication within an offshore
project. A good document repository should be accessible 24/7
(remember your offshore team will need access to information primarily
during the night). It should also support versioning of artifacts
and provide a check-in/check-out feature (all things that a
Configuration Manager will be familiar with!). I would also
encourage you to keep the interface and any document properties fields
as simple as possible. Many document repositories have rich
interfaces which can cause unnecessary delays in loading pages
particularly from offsite locations if there are any bottlenecks in
network speed, also adding too much detail about the properties of a
document being uploaded to a repository (such as document class,
sub-class, status etc.) can also be needlessly demanding for the real
needs that a repository serves (namely providing a common location for
all project related material).
|
| Tool Selection |
|
Tools
are an important mechanism to support most of the communication needs
identified above but they can also be important in managing more
discreet elements of an offshore project, such as requirements
management, source code and defect tracking. Selecting the
appropriate tools for your offshore development project should align
with your enterprise tool requirements but the tools you use are going
to be an important component of your offshore development
strategy. Regardless of the tools you select it is important to validate
that there are no barriers for their use in your offshore
environment. Tools need to have the ability to synchronize
easily through either the internet or a VPN. Ensure that there are
no barriers to using the tools like operating system or browser
differences between your onsite and offsite locations. Agree on
the use of tools before the project and test them to make
sure they work as required. If you don't have any tools to manage
your development effort you might want to consider this before embarking
on an offshore development project. |
| Culture |
|
Regardless
of where you decide to outsource your development efforts (India,
Pakistan, China or elsewhere) it is important to recognize that there
are differences between your culture and the culture you are dealing
with. Although this is a difficult area (fraught with all sorts of
'political correctness issues') some things you want to document prior
to the start of your project include:
Holidays:
Make sure that national or other holidays are documented at the start of
the project. These holidays can have a significant impact on a
project, particularly since most holidays don't align well between
countries. For example, November can have a lot of holidays
between the US (Thanksgiving) and India (Deepavalli) which can
significantly reduce project productivity.
Infrastructure:
Many areas where offshore development is conducted can be prone to
infrastructure challenges. Although most industrialized countries
are not familiar with these issues, brown-outs and entire city power
failures can and do occur in offshore development environments.
When selecting an offshore development partner ask about about how they
are supported for power outages (back-up generators etc.) and whether
they operate in a high-priority area for phone and electrical services.
Language:
It can take sometime to get familiar with the accents of individuals
from different states or counties let alone different countries.
Usually this process requires time and practice so expect to see
improvements throughout the lifecycle of the project. Also
remember that verbal communication can be more effective than written
communication since writing skills in the software development industry
are typically pretty weak anyway and are only exacerbated when you
involve writing in a second language. I try and have a quick
review of any significant correspondence before it is issued to
customers or business stakeholders. This quality assurance
function should be formally embedded in your project in some capacity
simply to avoid any confusion (or possibly hurt feelings) caused by a
language challenge barrier.
|
| The CMM Conundrum |
|
Increasingly,
many offshore development organizations are touting their CCM
level 5 certifications as a way to differentiate themselves in the
offshore market. There are two things about these
certifications that I have observed. The first is that it's not
entirely clear how these certifications are assessed and how credible
these assessment truly are. A number of offshore organizations
that I have seen with CCM Level 5 certifications did not have any true
standardized processes and certainly none that could lead to consistent
and repeatable software development results. However, this leads
to my second observation which is that there is a difference between an
organization's CMM certification and a project's CMM level
certification. Although your offshore development partner might be
a CMM level 5 certified organization this does not necessarily translate
to your individual project. Ask how your offshore development
partner will support your project with its CMM processes, ask if any of
their projects have been assessed using the CMM
process.
Also
be aware that while a high CMM certification might give you greater
comfort you are dealing with a credible and quality oriented offshore
development partner, you need to also be aware that this can come at the
expense of flexibility and agility. This might be fine for a
mission critical system but you might want to think about whether
something so important is the right candidate for an offshore
development project. The most important thing to be focus on is
how your offshore development partner adjusts to deviations from its CMM
processes. How these difference are managed can influence how well
your own organizational processes can work with them.
|
| The Final Analysis |
|
Offshore
development does work and it does save you money.
However, there are many things to be aware as we have seen before
embarking on your first offshore development project. I would
recommend two things to organizations considering this approach to their
software development needs. The first would be to conduct an
internal readiness assessment to see if your existing processes,
infrastructure and tools can support an offshore development
initiative. The second thing would be to trial offshore
development with small and relatively low risk, internal
application. These two steps can help you move through the
learning curve with a lower degree of risk than betting the farm on a
large engagement.
|
| About the Author |
|
Bryan Campbell
Bryan Campbell is the Director of Consulting,
Southeast with Valtech
Inc., a software development company specializing in object oriented
developing using the Unified Process.
Mr. Campbell has spent more than 15 years in the information
technology industry across a wide range of disciplines ranging from
operations to enterprise architecture to software development.
Currently completing his MBA specializing in Information
Technology Management, Mr. Campbell has managed a series of large scale
IT projects including software development projects using iterative
development techniques. Mr.
Campbell has worked in a variety of industries including
Telecommunications, Utilities and Insurance.
He is the author of several articles on software development and
has presented at several conferences.
|
|
Publication in part or in whole, without
the authors' written permission is prohibited |
|