Offshore and onshore development, outsourcing, and the relocation of IT jobs to low-cost countries are headlines we see in everyday news. Jochen Krebs has played several different roles in software engineering throughout his career. From those experiences he shares some thoughts and ideas about current industry trends regarding outsourcing. The scenarios in this article, "Inside the Project," lead to the second part, which will offer a critical view on those trends. The last part, will address trends for a better offshore approach.
Part I - Inside the Project
Part I of this two-part series takes a close look at the existing challenges in software projects that have not yet been delegated offshore. The primary focus is on topics that will be used to discuss the issues in developing offshore software systems. Conclusions at the end of each section will help summarize the challenges that are often addressed by agile software engineering techniques.
Coding vs. Solution
When I was a programmer, I once faced a situation where I could not come up with an elegant solution to a particular programming challenge. Even though the scope of the issue was small, thinking about a solution for three days straight without any success wore me out. Then, it hit me like lightning--I had the answer! Immediately, I captured the thought, rethought the entire solution overnight, and wrote the code the following morning within a few minutes. I solved the problem, and it was out of my way forever. But how long did it take me: just a few minutes, or three days and a few minutes?
Writing good systems is not about "typing skills" and often it's not about the syntax of the programming language. Even though programmers need to know the capabilities of their programming languages (e.g., Cobol or Java), using one language over another doesn't guarantee success. For example, do we care about the programming language behind Microsoft Word, or how many lines of code it took to write the program? Not really, because customers often make buying decisions based on features.
Tools are a great selling point. For example, if you decide to write a novel, you will need a tool in the same way the programmer needs a programming language. Let's assume Microsoft Word provides the features the writer is looking for. What do you think are more important skills for the success of his final product: typing skills or writing and language skills? Would anybody care if a good author, such as Hemingway, is a fast or slow typist?
Conclusion: Programming is more than typing.
Interpersonal vs. Intercultural
Building software is about the three Ps: people, people, and people. Nothing can compensate for having the wrong people on the team.
If you build software for customers, translating and materializing their ideas and even exceeding their expectations is priority number one. Interpersonal and facilitation skills dominate this discipline in the software engineering process. During analysis, design, and programming, your team members need to work together like a well-oiled machine. They must discuss various design decisions, communicate challenges and solutions, and harmonize in terms of working hours. Software development is about collaboration, which requires interaction among technical and non-technical folks.
Soft skills combined with technical expertise are also ingredients for success. Software engineers need to present solutions, convince, negotiate, and promote ideas. This is already a tough job within the same cultural boundary. When software development goes abroad, cultural differences, gestures, words, and expressions can easily change the meaning and dynamics of your project. Global software development requires sensitivity toward culture and tradition.
Conclusion: "P" stands for people, not person.
The Value of Software
What mental picture do you conjure when someone says "Mercedes-Benz?" I personally think about reliability, quality, safety, and luxurious driving behavior. I actually think about the biggest car in the fleet with the best-packaged equipment, although they build much smaller cars. Perhaps your personal experience is different, but on a large global scale, the brand and the reputation is considered to be high quality.
The car manufacturer not only is able to consistently build high-quality cars but also