In this last installment of Jochen Kreb's three-part series, he lists issues related to most offshore development projects and gives some ideas of how to implement a different shore model, which Jochen calls the smart-shore approach.
The United States has a strong economy that is divided into many regions. Similar jobs are compensated quite differently depending on the region in which you live. Closer time zones, a great network of transportation, and less cultural and language barriers could make states outside the major metro areas a target for a test run of an onshore plan.
Canada could also play a big role in onshore engineering. Canada's geographical and cultural proximity makes it another perfect candidate for onshore development. The excellent Canadian public school system, the benefits of lower wages in rural areas, the established infrastructure, and the short commute to northern US metro areas could make Canada a more serious player in the onshore software engineering movement.
Before going offshore with any project, make sure the project is problem free.
When looking for a company to outsource to, you should look for a creative team-maybe even a small software boutique that has time to listen and work with you. Even if you want a coding manufacturer or assembly-line testing, there will be a moment when you need to influence the project. You want to utilize high-tech professionals you could find locally, but at a lower cost.
The final product should be at least as good as if it were made in house. Finding such a partner offshore isn't easy; it will take time and money.
The smaller the boutique, the shorter and quicker are the communication channels. Small boutiques that are good know their value, and they will ask for it in their fees. The chances that you can reduce your IT spending are very high; however, assume good skills are not abundant. Once you've identified a partnership, manage it carefully. From now on, you will need them and they will need you.
Make sure that the offshore project management is transparent. Make status reports legal documents that must be signed by more than one person offshore. Make sure accountability and responsibility are well understood. If possible, include legal language that prevents further outsourcing to other partners.
If you can't influence the network of outsourced companies, try to make one party of the network responsible for the delivery.
Standards and Guidelines
With multiple "chefs in the kitchen," the project will have several signatures. If you decide to bring the software system back home, you will need to pass audits, controls, and reviews subject by law or the standards set by your company. Clearly set the standards and expectations with your outsourced partner.
With an increasing number of enrollments in computer science degrees (except in the United States, which has a decreased number of enrollments), computer skills can be found everywhere in the world. In the same way you would hire a candidate, ask for references and samples from the company. Find out who is behind the company; get a profile of the employees and statistics of technical certification in topics of interest.
If you're still not convinced of the company's candidacy, ask for a demonstration of what they offer in a pilot. This pilot could be a very small piece of your future project used to test the communication channels or a fictional case study to test the situation. In either case, you should check that the company can provide the right mix of skills and broad and specialized know-how.
Serious software engineering usually involves many people playing different roles. With the increasing distance between team members (which increases anonymity), project assets need to be digitalized in an efficient way.
Everyone in the engineering process requires different data to get the job done. Information shared by email, chats, or by the water cooler can get lost easily and not reach everyone. With central repositories and an automated software process, you can define "laws" of your project and the tools enforce your laws.
By now you might think that I have a negative opinion of offshore software engineering. To the contrary, I believe that offshore development has expanded from a niche to a serious model in recent years. Nevertheless, offshore companies need to prove that the model works with repeated success stories.
The argument "Software development in the United States is too expensive...I'll just go offshore" is only half of he story. The margin between offshore salaries and local salaries will decrease in the future. Based on the laws of economy, American software engineers, who are in low demand, will need to lower their salaries. The offshore engineers, who are in high demand, will increase their salaries. Theoretically--and taking this example to an extreme--offshore development will have the same or higher price tag relative to today's engineer.
The decline in the number of students seeking computer science degrees in the United States could make offshore development a one-way street. The slowly declining number of onshore American engineers will no longer able to cover mission-critical software engineering within intelligence, defense, bio-technology, and capital (stock) markets. Innovation in these areas is crucial, and software engineering ala Wal-Mart does not fit all needs.
The lack of innovation in building software systems offshore is, in my opinion, the biggest concern. Innovation will more likely occur when people who experience the problem find a solution. In an offshore approach, the distance between a problem and a possible solution is vast. Therefore, I believe that offshore-models need to demonstrate that they can translate requirements into innovation and the right business model for the onshore partner.