|
Why Offshore Your Software and Web Development?
By Marty R. Milette (http://www.maverick-media.com
-- mailto: marty@milette.com)
Introduction
Software development, including stand-alone
applications, network applications and web-based
sites and business applications can now be done
easily and inexpensively offshore. The focus
of this article to discuss some of the background
behind outsourcing and offshore software development,
and why you may wish to consider offshore software
development for your future projects.
Here's what we'll look at:
- Outsourcing, offshoring and body shops
and the differences
- Myths about offshore software development
- Global factors impacting the software development
industry
- How the offshore software development process
works
- Benefits of offshore software development
- Best types of projects for offshoring
- Mitigating the risks of offshore software
development
- Why offshore software development in Russia?
- Action Plan: Your first offshore software
development project
Outsourcing, Offshoring and Body Shops and
the Differences
Outsourcing
Unless you've been hiding under a rock someplace,
you have no doubt heard of outsourcing - and,
have very likely been directly affected by it.
Perhaps your job was 'outsourced'. In some cases
- you become the 'loser' - having your job given
to some local competitor - in other cases, you
may have become the 'winner' - being able to
continue the work you've always done, but under
your own company now separate from the company
you formerly worked for.
Offshore Software Development or "Offshoring"
The term "outsourcing" can also be extended
- in cases where the work is now to be done
outside the borders of your own country. A new,
and popular term for this is called, "offshoring".
Outsourcing or offshoring in their own rights
are not 'bad' or 'evil' - they are simply a
way companies can gain two benefits that may
be critical to their survival:
- Leverage cost reductions - by taking advantage
of lower offshore labor rates or economies
of scale for both local and foreign firms,
and;
- Core competency focus - meaning that companies
outsource work outside their area of core
expertise. For example, if your company makes
tires - does it make sense to develop a huge
IT shop that develops complex software and
web sites? No - you focus on what you know
best, which is to make tires, and let outside
experts take care of the IT problems.
Offshore Software Development, or OSD, is not
new. Companies throughout North America have
been using developers in Israel and India for
over 20 years with excellent results and high
ROI.
Although you may not hear much about it - many
of products developed and marketed by some leading
American companies are, in reality, developed
abroad, or developed by foreign workers employed
locally.
What has happened in the past five years that
has really brought these issues to the forefront
is the incredible popularity and ubiquity of
the Internet and general telecommunications
infrastructures even in 'developing countries'.
This has served as 'the great enabler' of a
new 'global economy' - making it almost effortless
to both buy and sell products and services electronically.
"Body Shops"
The term "body shop" refers to a local firm
whose working staff are temporarily imported
foreigners - usually working on some form of
'temporary' or 'short-term' visa, like the American
H1-B class of visa.
Body shops have in many cases earned the reputation
similar to the old 'sweat shops' - where foreign
workers are made to work extended hours for
much lower pay then comparable local workers.
In theory, there are regulations in place
to ensure that 'body shop' employees are paid
typical local salaries for their work, workers
enter the country legally, and receive the same
benefits as local workers - however, in reality,
there are enough loopholes in the laws so that
this is seldom the case. Hence these shops operate
locally, but at significantly lower prices than
local shops.
This is NOT what offshore software development
is about.
How Offshore Software Development is Different
True offshore software development is done
either entirely, or very nearly entirely offshore.
Contact with clients is conducted almost entirely
via electronic communications. In very rare
cases short visits or exchanges of personnel
take place - and if so, only for very short
periods of time. The 'real' development work
is done entirely offshore over the course of
weeks or months.
In very rare situations, it may be necessary
and/or desirable to have an offshore worker
placed in your workplace for a short period.
This is a very rare instance, and generally
only necessary if you have a product or service
upon which the developer must be trained before
being able to participate and be productive
on your project.
These situations are not considered to be
'work' but more of a 'training' or 'knowledge
transfer' exercise. What normally happens is
that the offshore worker receives the necessary
training, documentation and resources to take
back to his home country and train the other
developers and/or complete the work.
In some cases a project manager or project
manager will do an on-site visit to organize
the upcoming project and put the necessary communications
and technical infrastructures in place.
Myths about Offshore Software Development
The following are some of the widely held myths
about offshore software development, and developers.
Offshore development is just cheap access
to low-skilled labor
This is false on two points - first of all,
offshore developers typically have very high
levels of skills and experience. For example,
in our company, the average developer has over
10 years of software development experience,
over 4 years of which being with our company
alone. Over 97% of our software developers hold
a University Degree - many at the Masters and
PhD levels - in high sciences like Mathematics,
Physics and Engineering. Developers with these
qualifications can in no way be called 'cheap'
- and in fact, may cost much more than many
other offshore firms - but, as the saying goes
- you get what you pay for!
Are only suitable for low-skilled coding -
not for design work
This is also incorrect. During the past 5 years,
Russian Universities and private schools have
been turning out some of the brightest software
engineers in the world. In fact, if you look
at commercial institutions - there are over
6 Microsoft Certified Training Centers in St.
Petersburg Russia alone. This speaks a lot of
the dedication to training, education and certification
for top-notch developers, designers and engineers.
Offshore developers are underpaid, and work
in deplorable conditions
Even in Russia, there is a strong demand for
highly skilled software developers. Even though
the salaries are still far below what is available
in Europe and North America, this certainly
doesn't mean that the top people don't make
good money. Naturally the 'best' jobs are considered
to be doing offshore software development -
however, for these jobs, to get the best people
still means paying the best salaries and offering
excellent working conditions. Additionally,
as the work is done for foreign clients, additional
requirements for English language skills and
the latest hardware and software are also required.
Offshore developers receive no benefits, don't
pay taxes and all cash goes into their pockets
Unless you are talking about a very small shop,
this is entirely untrue. In our office, we have
over 100 full-time software developers and engineers.
All are legally employed, and our professional
offices (located in the center of the city)
are regularly inspected by the taxation authorities.
All software in our office is also regularly
audited and inspected to ensure we are working
with legal copies. As a Microsoft Development
Partner, we are provided with early copies of
the latest software.
Offshore developers work with antiquated
equipment and have inadequate facilities and
infrastructure
Again, this is totally untrue. At the time
of this writing, the average computer in our
office is a 2Ghz Intel Pentium P4 with 512 Meg
or more of RAM. We currently have dual 256k
backbones to the Internet. Our internal office
network has 10mb, 100mb and wireless segments.
We have dedicated development labs, test labs,
QA labs, server farm, firewalls and DMZ isolating
live servers from internal systems. As required,
we can establish cloned development, staging
and production servers to mirror our client's
configuration. We are also able to develop fully
redundant and clustered solutions.
No protection of intellectual property - problems
with rights and ownership of software
Regardless of whether your software development
is done right at home or elsewhere in the world,
you are well advised to get everything in writing
from the very beginning of a project. Our company
doesn't even ask for even a detailed description
of the project until a suitable NDA (Non-Disclosure
Agreement) has been agreed upon and signed.
I cannot speak for other countries or companies
but Russia, for example, is cracking down hard
on copyright violations and is pushing hard
to protect the rights of foreign companies making
investments and business cooperation with Russia.
Doing so is simply good business sense.
In the case of our company, the client retains
ALL RIGHTS to any software developed for them
under contract. There are some exceptions, such
as where third-party components are used to
speed development, but those are normal situations.
Clients not only receive all rights, but also
all source code, documentation and anything
else related to the projects. We are able to
maintain source code for some predetermined
amount of time, but if requested, can certainly
agree to destroy all copies if that is deemed
necessary.
As an example of security and protection of
proprietary information - we have one team dedicated
to one particular company and series of projects.
These team members are each under strict and
separate NDA with our company. Their lab is
secured by pass-card, and they are not permitted
to even speak with other developers about their
work. If this is the level of security and confidentiality
you need, it can be had even in Russia.
Global Factors Impacting the Software Development
Industry
One of the great 'equalizers' in the global
economy is the Internet and other forms of modern
telecommunications. Today, unlike just a few
short years ago, programmers in one part of
the world can work seamlessly on projects across
the globe. Likewise, work may be distributed
to programmers in many locations - unrestricted
by time or distance - to be reassembled as working
units back home.
What is actually more important than the pure
communications aspects of software development
and project management can be found in how the
software development industry has changed in
general during these few years:
- Programming and general software development
is no longer a highly 'specialized' or 'rare'
skill - universities and colleges throughout
the world have increased their output dramatically
in these areas of focus for the past 5 to
8 years.
- Private Colleges, business schools and
commercial training institutes were even earlier
adopters of the IT training and get-rich-with-an-it-diploma
programs - flooding the market with truck-drivers-turned-systems-engineers,
and network administrators who's previous
work provided them with a free paper hat.
- Thanks to the dot-com bust in recent years
- many 'web experts' are now on the unemployment
line. (Either unable, or unwilling to accept
and adapt to the fact that the work they formerly
received $100K+ per year for can now be done
in Russia for 20 Euros per hour.)
- In the reverse - the global economy also
means that companies can sell their products
and services to a global market - provided
that their products and services can be developed
and delivered effectively, efficiently, and
for a reasonable price.
As well, many of the recent graduates are lacking
in basic scientific, mathematical and analytical
skills. They may know how to 'code' - but they
may not have a grasp of the creativity and science
to develop creative and innovative solutions
to business problems. These very skills are
what have made the Russian educational system
stand out. The Russian focus on fundamentals,
science and logical thinking give their graduates
the ability to develop creative solutions despite
limited resources.
Unfortunately, the situation is unlikely to
change in the nearest future. Although universities
and colleges are cranking out 'computer science'
graduates - many are coming to the market with
the hopes of making a lot of money very quickly.
Despite the recent downturn in markets - salaries
in North America and many European countries
are still artificially inflated.
Another problem these days is rapid staff
turnover - and a loss of company loyalty. In
North America it has become frighteningly easy
and popular for people to jump from company
to company. Sometimes employees are lured away
by money - other times it is perks and benefits
or more exciting and challenging work. One would
almost wonder when looking at some people's
resumes whether they will even be able to stay
with one company for just one entire year.
This trend has led to an upward spiral of
salaries, benefits and perks - reaching the
point where even to attract mediocre staff -
you have to give away benefits and salaries
formerly only available to top managers and
executives. As well, unless you are able continually
offer more and more - people will quickly become
dissatisfied and move on. This is simply the
law of supply and demand at work. (Employees
demand - you supply!)
In Russia, and many other countries abroad
- the situation is quite different. Companies
who are able to offer very modest benefits and
salaries as compared with their western counterparts
are highly sought after by job seekers. When
a person lands a job at a stable Russian company
with a good salary and benefits - they are going
to put forth their best effort to keep the job
- because they know that there are hundreds
of people just dying to snap up their position
if they leave.
This reversal of demand between the companies
and job seekers means that offshore software
development companies can pick and choose the
best people possible from a much wider selection.
Relaxed labor laws and a huge labor pool mean
that it is much easier to replace workers who
don't perform.
The overall result is that Russian companies
typically have a much lower turnover rate than
their North American counterparts. People who
work together over many years on many different
projects tend to have much better communications
between team members - teams become tighter,
more dedicated and more focused. Working on
many different projects gives each team member
valuable skills and knowledge to carry through
to future projects.
Today, the world is a very small place - and
our competitors are no longer just those businesses
within our own town or city - they may be anywhere
in the world and in many cases are not restricted
by time or distance.
During the dot-com boom period, companies
used up all the local resources they could find,
and used offshore resources to build staffs
they couldn't otherwise find. After the dot-com
bust - companies are struggling to survive -
and simply cannot afford to pay inflated salaries
of internal staff, or local companies for basic
work.
It is no longer a question of whether or
not you want to have your software development
done offshore - it is a question of survival!
How the Offshore Software Development Process
Works
The basic steps in taking your idea from concept
to reality are actually very well structured
and fairly simple. Depending on your personal
level of sophistication in the software development
process, and how well you are able to prepare
your specifications, the process may go one
of two ways:
If you have only limited internal software
development resources, and are unable to prepare
a detailed technical specification yourself.
- You develop a statement of concept, or
a proposal that outlines your idea.
- You locate a suitable offshore partner
to work with. You may find them by searching
the Internet, but better is to have referrals
and references from satisfied customers. (This
part of the process could be a research document
of its own.)
- Your partner should provide you with a
signed Non-Disclosure Agreement - either of
your design or theirs. You would then provide
all information about your intended project
to your partner.
- Your partner should be able to give you
a very rough idea how long your project should
expect to take, and roughly the amount of
resources (person-hours/days/months of development)
- If you have a budget for your project -
you may be at odds with yourself on whether
or not to release the figure to your potential
partner. If you are worried about the partner
'padding up' the estimate to meet the proposed
budget - then you've picked the wrong partner!
In my experience, if a potential client gives
me at least a 'ballpark' figure on the proposed
budget, I can almost instantly give a yes
or no answer as to whether it is feasible
or not. This saves everyone a lot of time
and effort.
- REMEMBER: At this point, the best you will
receive is a VERY ROUGH estimation - however,
you should be able to judge whether your project
is feasible or not and whether or not to proceed
to the next step. (DO NOT expect to receive
a fixed-price contract unless you are able
to provide detailed requirements specifications
as in the second case below.)
- The next step is to contract the partner
to work with you to develop the idea into
a concept document, and then eventually into
a software specification. The partner will
normally be paid for this. The end result
is that you should have a detailed enough
specification to either attempt to recruit
better prices for the development work, or
to proceed with your current partner.
- NOTE: This is often the point where you
may be tempted to take the 'lowest bidder'
rather than to continue with your current
partner - use extreme caution if you take
this route because: a) the lowest bidder may
not have the skills, expertise or experience
to complete the project - and you'll be left
with nothing, and b) you will alienate your
current partner, who has already invested
a lot of time and effort above and beyond
what they have been paid - don't expect them
to want to work with you again.
- At this point, you should have a formal
proposal, which should include a schedule
and specification for the desired result.
Upon your approval to proceed, many offshore
development shops will require a 'start up
payment' before work begins. This is typically
5% to 30% of the total budget for the project.
- Here is an example of a typical 'progress
payment' schedule:
- a. 25% payment at the beginning of the
project
- b. 50% payments distributed through
the course of the project - tied to major
project milestones and sign-offs
- c. 25% payment with 30 days of project
completion and acceptance.
- This type of schedule benefits you by ensuring
that at no point you ever have more than 25%
of the project funds 'at risk' - it also ensures
that the developers have an incentive to meet
milestones and achieve signoffs - and finally
it ensures that they have an incentive to
deliver good, high-quality, bug-free code
to achieve the final payment.
- For the development company, this kind
of schedule is also of benefit. It ensures
that no project is started and receives resources
until there are funds available. It helps
keep developers and project managers on-track
and accountable, and it helps ensure that
test and QA staff have high incentives to
do excellent work.
- In short - it is a win-win situation!
If you are a more 'sophisticated' client,
have existing software development resources
in-house and can prepare a detailed software
specification.
Perhaps you are considering offshoring your
project to obtain the benefits of time or skills
you may not have available, the scenario is
typically accelerated as follows:
- You and your team will have a well-developed
product design and specifications. You may
have a detailed project plan, and time/resource
estimates.
- You locate a suitable partner; exchange
NDAs and your project package.
- The offshore partner will prepare a detailed
project estimate that either is in agreement
with your own, or the differences would be
pointed out. It may be possible for the partner
to provide a fixed-price contract, or possibly
not without further paid estimation and revision.
- At this point, you will either agree to
proceed or not - and if so, then agree upon
a progress payment schedule.
- Project proceeds to completion.
Benefits of Offshore Software Development
Virtually every client has slightly different
needs and expectations about how Offshore Software
Development can benefit them. I have broken
it down into these main categories:
- Cost reduction
- Time to market
- Experienced team members
- Skills and development
- Access to the latest, hard-to-find skills
- Flexible teams, team scalability and
employment terms
Cost Reduction
Many people believe that the sole motivation
for using offshore software development services
is merely as a means of reducing cost by taking
advantage of lower general salaries and living
costs abroad. Although this is certainly one
factor - there are a number of other equally
important benefits you may not have thought
much about. These will be covered further below.
Regarding issues of cost reduction, you always
need to think about the "Loaded Labor Rate".
Although slightly different for full-time employees,
contract employees and local contractors - they
may include many 'extras'. For example, for
a full time employee your list of costs starts
at the recruiting stage. Professional recruiting
companies typically charge 30% to 100% of the
annual salary - sometimes more! Recruiting cycles
for top specialists can be from 3 months to
over a year. Can your project wait that long
to begin?
Other factors in the 'loaded' labor rate include
not just the 'salary' or 'per-diem' rates -
but must also factor in employee benefits such
as training, medical, dental, vacation, pension
plans and co-contributions, stock options and
stock plans. Then there are fixed costs such
as office space, computers and office equipment,
telecommunications, furniture, and more. So,
your $75K/yr employee, in general, has now cost
you a minimum of $150K to $200K just for the
first year.
Another point to consider: how many employees
are truly 'productive' and 'contributing' to
the project from the first day? When you hire
a new employee, you're typically looking at
several months of training and indoctrination
to get them up to speed on your company, your
policies, procedures, products, services and
standards for documentation, coding and more.
This adds typically 3 to 6 months to the date
when they can actually become fully 'productive'
and a 'member of the team'. How much extra does
that cost?
Compare this against the price of an offshore
employee - just 20 Euro per hour (on average),
including all benefits, administration and loading.
Plus - if they don't work out - just replace
them with another - no questions asked!
Time to Market
Every product or service has a "window of opportunity"
- the span of time where it must reach the market
and become the leader. Missing the window means
that at best case - your product or service
is a 'second-best wannabe' competing with the
leader - in worst case, it falls into the 'who
cares' category of 'also-rans' - and quickly
into oblivion.
Time to market is probably one of the most
important advantages that offshoring your software
development work will give you.
Let's take a simple example: if you and your
company wished to launch the development of
a new product using the latest software
tools available and you wanted to start
tomorrow - could you do it?
In most cases - (if they are honest) the answer
from your project and project managers would
be a resounding "Not A Chance!"
The reasons are simple: if your company has
managed to even survive the past 5 years
- from dot-com-bust through wars and soft markets
- terms like 'downsizing', 'staff reduction'
and 'focusing on core competencies' should certainly
be familiar to you.
In most cases this means that the 'dead wood'
has long since been cut away - and the people
who are left are stretched to the limit with
all the work they can currently handle.
Add on the factor that probably none of the
few remaining staff have had the luxury of frequent
high-end, vendor-provided training such as offered
by Microsoft certified training centers to improve
and upgrade their skills in the latest technologies
- both for reasons of cost and time constraints.
This means the people who are left, are not
only too busy and overworked to begin new projects
- they are also severely lacking skills and
experience in the latest new technologies like
.NET, J2EE, CORBA, SOAP and many others.
Lastly, even if you wanted to hire top
developers with the latest skills - you'd have
the problems of finding them, recruiting them,
and being able to afford them! Top talent is
always expensive. As discussed earlier, recruiting
costs can easily exceed the annual salary for
these kinds of professionals. Top professionals
can take many months, if not years to find and
recruit. Even in Russia, top professionals with
the latest skills are becoming more and more
difficult to find - so companies here are now
beginning to 'grow their own' internally.
Your choice is very simple - start your project
quickly and have a chance of beating your competitors
- or try to do it yourself using local resources
and miss the critical window of opportunity.
Experienced Team Members
In most offshore software development shops
that have been in business for any length of
time, you will find that the developers have
gained tremendous experience with all kinds
of different business systems and with all levels
of code - from binary and assembly languages
for real-time controllers and dedicated microprocessors
- all the way to the largest international distributed
financial systems, Internet and intranet portals.
This vast pool of experience means that you
have an excellent chance of getting exactly
the person you need, exactly when you need them.
Another advantage is that these skills readily
translate into better quality, and more rapidly
developed solutions for your projects.
Many times, tips, tricks and tools developed
on one project can speed up the development
of other projects. (Naturally, project-specific
code is excluded under terms of non-disclosure
agreements - however, tools and utilities are
reused wherever possible.)
In addition to the experience of the team
members - you are able to call upon the experience
of the team, and the company. Many offshore
software development companies have highly optimized
productions systems and process flows already
established. They make their money from turning
projects around quickly and efficiently. This
is in stark contrast to some IT shops that must
justify increasing budgets with increasing staff
and increasing delivery times.
The experience of the company is further documented
by CMM and ISO certifications. These third-party
evaluations are an excellent indicator of the
maturity of the company, the quality of their
processes and levels of documentation.
Skills and Development
I spoke a little about upgrading and maintaining
the skills of your developers if you are doing
development projects in-house. This is incredibly
important these days because of the speed with
which technologies are changing and evolving.
For example, your developers with many years
of Visual Basic experience will find themselves
virtually useless when attempting their first
project in VB.NET - it is a whole different
beast!
Does your company want to spend the money,
and lost productivity to continually train,
and re-train your top developers - only to find
that they'll jump ship at the next higher paying
job offer? This is the risk you take when developing
software in-house.
Another factor is experience - if your top
developers are only used to developing one type
of code, with one type of coding style, with
one set of tools and technologies - how will
they even know there are better ways to
skin that cat!
In contrast, by offshoring your development
work, you benefit in a number of ways. First,
most offshore companies, who have been in business
for many years, have no doubt worked on many,
many different projects - with many different
tools, techniques and technologies. Some developers
become 'multilingual' and comfortable on both
C++ and VB, for example - others become comfortable
on both UNIX-based and Microsoft based operating
systems - others tend to specialize more.
Offshore companies have a vested interested
in using the fastest, best and most efficient
combination of tools, techniques and resources
to solve your problems - this means that the
best people for the job are assembled to form
your team. In some cases, clients may be presented
with a list of resumes and be able to assemble
their own team as well.
Speaking of skills and development, in addition
to offshore companies having employees with
a wide variety of practical experience, their
people also have a wide variety of the latest
skills at their disposal. The reason is
simple: how many new clients would come to them
and ask for new projects to be developed with
old tools and techniques? In fact, in some cases,
there is such a high demand for the latest skills
that some offshore companies have had to create
their own dedicated training and certification
departments in-house.
Even in the offshoring world - you may
find that the best companies already have a
backlog of several months for work in certain
hot technologies - it always pays to plan ahead
if you can!
Access to the Latest, Hard-to-Find Skills
When evaluating offshore software development
firms, you can almost break them down into three
distinct categories. The first, are those focusing
on maintaining and enhancing legacy applications
- typically in COBOL, PL/M, FORTRAN, etc. The
second category is those firms focusing on migrating
legacy systems to modern technologies. The third
category is those firms focusing on developing
new systems with state-of-the-art tools, techniques
and systems.
In this article, I tend to focus more on those
companies in the third category, as these are
the ones representing the most exciting opportunities
and advantages for new, unique and innovative
systems - ones that are able to leapfrog the
competition and enter new markets.
Even with just the Microsoft family of products
and operating systems alone, there are dozens
of tools and multiple releases every year to
deal with. This represents a recruiting problem,
but also means that companies must focus on
internal training and re-training on an ongoing
basis.
For example, in our company, we have a full-time
Microsoft Certified Trainer on staff - part
of his duties to include training and re-training
developers on the latest Microsoft technologies.
When researching offshore software development
firms, do ask about how they keep their people
updated - the answers may surprise you!
Finding people with the latest skills such
as .NET, J2EE and other high-end skills is still
difficult - even in Russia. In addition to internal
training programs, our company, for example,
has set up our own on-line recruiting firm (http://itpersonnel.ru/eng/customer/index.html)
Although there are literally dozens of high-end
universities and private institutes locally,
there is still a stiff competition for the best
people. However, between our contacts at the
institutes, our own IT Recruiting company, and
leads we receive regularly - we are able to
generally satisfy all our typical needs. Other
firms may not be so lucky.
Another advantage of being in the St. Petersburg
region is that our company, along with many
others, are members of the "Fort Ross Consortium"
http://www.fort-ross.ru
- a consortium of offshore software development
firms - each with somewhat different skills
and focus areas. When one company has requirements
it can't meet internally, it may call upon the
services of other consortium members.
Flexible Teams, Team Scalability and Employment
Terms
As with most contract-based arrangements,
offshore software development offers a great
deal of flexibility in selection, reallocation,
reduction and growth of the team assigned to
your project. This flexibility ensures that
you are billed only for the resources you need,
when you need them.
Flexible teams also mean that work may sometimes
be scheduled to run during hours of your own
choosing. For example, an offshore team may
be called upon to provide 24/7 support for a
product or service.
Teams tend to be highly 'scalable' - meaning
if you desire to change deliverables or schedules,
you can quickly and easily allocate additional
resources - or perhaps conduct additional research
with a sub-team to investigate a hot new technology
that may have great impact and/or benefit to
your project.
Conversely, in the event of project termination,
or in cases where budgets must be reallocated
or reduced, flexible teams and employment terms
mean that your liability for penalties is generally
significantly less than if you had contracted
the job locally - and certainly much, much less
than if you hired full-time resources.
In most cases, the problems and legal issues
regarding firing employees or downsizing in
general is simply not your problem. Compare
this with employment laws in some countries
where once you hire someone - it is almost impossible
to fire them or downsize without severe legal
and social consequences.
Best Types of Projects for Offshoring
In general terms, certain types of projects
are more suitable for offshoring than others.
For example, if the project would require someone
from the offshoring company to be present on
your site for an extended period of time - this
is not a good use of the offshoring resource.
Instead, what you may be better to look for
is a body shop who can provide resources locally.
If you would only need someone on-site for
a maximum of three months, then this is quite
a likely option. In terms of visas (which are
almost always required), a three-month visa
for 'training' purposes is not difficult to
obtain. The candidate would be located on-site,
for the training period, and then bring the
knowledge back to their home country to continue
working on the project.
Other projects that may not be suitable are
ones that require a US-based Security Clearance.
In general, only US Citizens operating in very
specific regions may work on those projects
- and the restrictions are stiff.
Projects that require the use (and delivery)
of large and/or expensive equipment to the contractor
site are also not generally good candidates
- for several reasons:
- The cost of transporting the items
- The length of time to transport the items
- Risk of damage or loss to the items
- The inevitable battle with Customs services
- to prove that the items would be imported
and used only "Temporarily" - failure to provide
satisfactory proof could result in the items
being rejected, or impounded, or huge and
unreasonable duties and penalties applied.
- The items would also have to eventually
be returned - to encounter the same problems
but in the reverse direction
Projects that are much more suitable are ones
that are:
- Typical business systems or services based
on common hardware and/or software platforms
- or ones that could be easily and cheaply
transported. (Small embedded-controller-based
devices may qualify.)
- Where there is a good match between the
skills/experience of the development company
and those required of your project. There
may not always be an 'exact match' - so try
to achieve a balance and be reasonable.
- Where the development company has done
similar projects using similar technologies
before. (Keeping in mind that they may not
be able to provide a reference due to confidentiality
agreements.)
- Where you have a budget in place - it must
be REASONABLE, and should be approved, and
ready to be disbursed according to schedule.
Note: I stress the word REASONABLE because
a surprising number of people somehow believe
that offshore projects can still be done for
$1 per hour and 10 times faster than at home.
Unfortunately, neither of these assumptions
are the least bit true.
- Where the project can be done either entirely
off-site, or with a short-term on-site placement
for training and/or knowledge transfer. (Mentioned
previously.)
- Where continuous and frequent communications
between the client and vendor can be set up
and maintained. Handing off a set of specifications
(no matter how detailed) and expecting the
(perfect) result 3 months later does NOT WORK.
Speaking of communications - we recommend
at least daily, and sometimes more frequent
contact by email - as well as Instant Messaging.
It is amazing how many simple problems and
barriers can be overcome with a 5-second MSN
Messenger session!
Mitigating the Risks of Offshore Software
Development
Checking References
One of the most important things you must
do when considering offshoring your next
software development project is to check
references and if possible, check out samples
of real work. In some cases, it may not be possible
to get the most appropriate references or to
see the best possible work - this is sometimes
because of the non-disclosure agreements signed
between clients and the offshore software development
firm. They should, still provide at least two
or three solid references, and you should certainly
take the time to check them out. The types of
references to consider are those where the projects
are similar to yours, or where the technologies
used are the same. You may also look for references
from clients with projects of a similar size
to your own.
When requesting references, please be aware
that they may not be given out freely unless
the offshore firm considers you to be an honest
and sincere prospect. They will not want to
give them out until they are relatively certain
that you are in a position to follow through
on completion of the project. This only makes
sense - as every time they give out a reference,
is one less time that this reference may want
to be contacted in the future.
When speaking with references, be certain
to speak courteously and do not try to obtain
information of a confidential nature, such as
prices, or information on specific developers,
etc. Use common sense.
Consider ISO and CMM Certifications
As mentioned previously, third-party certifications
are a good indication of the maturity of processes
and systems within offshore software development
companies. However, I would not necessarily
exclude a company just because they don't carry
one of the certifications.
You must realize that some of these certifications
are relatively new to specific countries - as
well, in some countries, the whole idea of systematic
processes for certain industries is relatively
new. In these cases, certification programs
may not be in place today - but certainly are
under way for the future.
Formal, documented development processes and
procedures ensure top-quality results. Formal
recognition of our policies and procedures through
ISO certification and audit. Facilitated through
dedicated Quality Assurance and Test Engineering
department.
Start with Smaller, Non-Critical Projects
and Pilot Projects
In general, unless there is a pressing and
urgent need to suddenly have a project developed
offshore - it is highly recommended to start
out with a small, non-critical pilot project
to feel your way into the process.
In fact, with our company, this is how virtually
all major clients began - just one small test
project - perhaps one or two person-months is
going to give you a very good idea about the
process, procedures and how well the system
actually works. What it also does is get the
critical 'communication channels' and 'administrative
systems' in place and working smoothly.
As the first project progresses, you may find
benefits in establishing an 'open' or 'frame'
contract - where the offshore company simply
invoices you for billable work on specific projects.
These allow you to very quickly and easily add
and subtract resources from projects as demands,
project priorities and budgets change. It can
also be structured to guarantee a fixed rate
for some duration of time - meaning you always
have a known and guaranteed price with which
to plan your budgets.
Why Offshore Software Development in Russia?
There are a surprising number of reasons why
Russia, and in particular, St. Petersburg Russia
has become the hub of offshore software development
today. Some of the reasons include:
- Regional Infrastructure and Geography:
St. Petersburg enjoys a strong community infrastructure
- which has been vastly improved over the
past 4 years in preparation for the city's
300th anniversary. The city has an extensive
public transit system, reliable, stable power,
well developed telecommunications and data
communications infrastructure and all forms
of transportation access - by land, sea and
air - to all points in Europe and abroad.
- Language Capabilities: English is the 'official'
language of our company. All internal communications
and documentation are prepared in English.
All communications with foreign clients are
done in English. In the rare event where software
or documentation must be developed in other
languages - there are many pedagogical Universities
with language departments for every major
language - and plenty of students willing
to help with translation and interpretation.
Culture is an interesting cross of Western
European and North American.
- Creativity and Innovation: Russians are
used to 'making do' and developing creative,
cost-effective solutions to difficult problems.
Their innovation is as well known and highly
developed and their high level scientific
and mathematical foundations.
- Labor Laws and Flexibility: In Russia,
labor laws are in some ways much more strict
than abroad and in other ways, much more flexible.
In general, if employees don't object, you
can have the flexibility of operating shops
on a 24/7 option, or synchronizing working
hours with your shop back home. Weekdays and
weekend days are easily swapped. Vacations
and schedules tend to be more flexible and
closely linked to projects.
- Time Difference: In many cases, the time
difference between Russia and other countries
becomes a distinct advantage rather than a
disadvantage. For example, problems discovered
in the USA during the day can be solved overnight
for presentation first thing in the morning.
The difference between Western Russia and
Europe is typically 3 hours at most - so workdays
are generally synchronized.
- Travel is Less Difficult: Russians are
now able to relatively easily obtain visas
to most countries for the purpose of on-site
training and project planning - most managers
are granted either 6-month or one-year multi-entry
business visas and can travel quite freely.
Offshore Software Development Applications
The following include many of the typical applications
for offshore software development teams. Some
of them you may not have considered before,
such as Internet Marketing support:
- Marketing and promotion assistance. (Internet
marketing.)
- Independent evaluation and audit of existing
products and services - may prepare formal
recommendations for changes/improvements.
- Outsourcing of product development and/or
services.
- Support of major organization or technology
changes.
- Knowledge transfer.
- Use us as your European partner to outsource
training and support.
- A dedicated pool of specialized engineering
and programming resources, which may act as
virtual extension of your own development
team.
- Jump-start projects.
- Professional development.
- Documentation and training.
- Entire systems, modules and sub-components.
- Allows you to maintain focus on your core
competencies and outsource what you are not
interested, or able to do yourself.
- Ability to become your 'back office' -
a member of your team - just located remotely.
Many clients have 'dedicated' permanent teams.
- Redesign and reengineering services.
- Migration of products to new and improved
technologies based on business requirements.
- Migration to different platforms and operating
systems to meet changing market needs.
- Inexpensive research, specification development
and prototyping services.
- Usability testing and re-engineering. Collection
and implementation of enhancement requests
and bug fixes through automated mechanisms.
- Automated feature enhancement / bug request
system available.
- Superior documentation - built into source
code and help files.
Action Plan: Your First Offshore Software
Development Project
As I have attempted to present in this document,
Offshore Software Development and participation
in the global economy can truly be a win-win
scenario. It will help you gain quick access
to desperately needed skills and experience
- while cutting costs and making the most of
your shrinking budgets. The next step is to
plan your first offshore software development
project - here are some things to consider:
- Consider a smaller, less critical, or 'pilot'
project to start
- · Prepare as detailed a description or
specification on your project as possible.
The more information you are able to provide,
the better and more accurate your quotation
and proposal can be.
- Prepare a comprehensive, but reasonable
non-disclosure agreement. If you don't have
one, ask your potential partner to provide
one, and work together to refine it. Once
signed, you may release details of your project
to your partner.
- Consider advances in tools, techniques
and technologies - ask your partner for advice
on the fastest, cheapest and best way to implement
your project - they have a wide range of current
experience and may make suggestions you hadn't
thought of.
- Consider the impact of new development
on legacy systems and code. Often it is better
to rebuild systems from the ground up, rather
than trying to patch on new features. Consider
the future expandability and flexibility of
your systems.
- Do your 'due diligence' on potential partners.
Start with preliminary research, check published
references and samples of work from their
web site. After narrowing the field, ask for
more personal, and more specific references
- but be aware that solid, personal references
are very important - and won't be given out
unless you are serious in making a commitment.
- Come to an agreement on the general terms
of how you wish the partnership to work. There
are several common models:
- Open Contract - where you authorize
hours to be billed against an open contract
based on specified parameters. This model
works well for a series of short-term
projects. It saves the administrative
overhead of opening and closing new contracts.
This method offers the best budget/work
flexibility.
- Fixed Price Contract - where the partner
bids a fixed price and payment schedule
based on specific deliverables, milestones
and project plan. This model is rapidly
losing favor, as projects more frequently
tend to change direction or scope while
in progress. To honor a fixed price -
fixed deliverables and scope are essential.
This method offers the least flexibility.
- Time and Materials Contract - where
the partner makes a reasonable estimate
of the time and materials required for
the project - however, if the scope or
direction of the project change, this
method leaves open the flexibility and
opportunity for a certain degree of negotiation.
- Resource Rental - where you agree to
purchase a certain amount of person-days/weeks/months
and allocate work and consume resources
until such time as the terms are extended
or exhausted. In this method, it may be
possible to obtain a reduced price in
exchange for guaranteeing more work over
a specific period of time.
- Probably the single most important aspect
that will determine the success or failure
of your offshore project is the establishment
of solid, reliable communication channels.
I generally recommend that all participants
communicate via MSN messenger (my address
is Marty_Milette@hotmail.com
) Sessions may be saved for documentation
purposes. This is the fastest way to have
questions answered and problems solved that
I have found.
- Consider telecommunications and infrastructure
needs. For example, will your partner be required
to connect securely to your network (VPN),
and/or will they have access to 'live' data
or servers, or will they work on 'sanitized'
data and/or used mirrored servers, etc.
Naturally, this is a topic that would require
much more than these few pages to fully explore.
I wish you great success in your offshore adventures,
and if you wish to request more information
or have questions on the topic, please feel
free to contact me directly.
About the Author
Marty R. Milette is president of Maverick Media,
and has served in management positions for companies
such as Mitel Corp., CML Technologies, Cognos
Inc., Friesen-Kaye & Associates, and president
of the Ottawa Chapter of the Ontario Society
for Training and Development. Marty is currently
Director of International Business Development
for Arcadia Inc. and continues to do serve as
a Microsoft Certified Trainer and International
Business Consultant. mailto:marty@milette.com
of http://maverick-media.com
or visit http://www.arcadia.spb.ru
or to view a PDF
or Microsoft
Word Version of this document.
|