When it comes to software outsourcing, not everything is milk and honey.
It’s only fair to highlight some grim facts, too.
I asked a friend of mine, who happens to be a Sr software engineer in London, to elaborate on the most bizarre outsourcing story he’s gone through. My friend (we’ll call him Pete) was hired by a Fortune 100 company in San Francisco. His job was to develop an API system using Sinatra to integrate with software such as SAP and Oracle eBiz. By the time he started, he was the most Sr Ruby dev in the team. His first task was to review the Ruby work of an offshore team in Singapore. The team has been working on the code for three months.
As soon as he looked at the code, Pete told his manager that it wouldn’t work. There was no way on earth that such code could run. It even had basic syntax errors, a non-existent architecture, and bad practices. His manager did not believe him. Pete rapidly built a server and deployed the code, which quickly crashed and burned, as he predicted. He was accused of using wrong versions of Linux, Ruby and even Sinatra. He organized a video conference with the offshore team in Singapore. His plan was to SSH into their server to see if it worked there.
In the conference, it turned out that the Singapore team did not even have a dev server to deploy code. And here was the kicker: the offshore developers used MS Windows machines to write Ruby code, and they did not even have a Ruby interpreter on their computers. They used a text editor, wrote some terrible, pretend-to-be Ruby code, and submitted weekly reports. They managed to get paid for three months without delivering anything usable.
Pete didn’t blame the Singapore team whatsoever.
In the end, the fault lied with his employer in San Francisco. They were not even checking in the code to make sure it worked. It was either an excess of trust or just plain stupidity.
Stories like this do happen. Software product companies fall into this trap more often than not. Probably the biggest mistake Pete’s company made was to treat the offshore as “them.” They would have never fallen into this hole if they had integrated everybody as one team.
Quality is a function of personal relationships within the team, your company, and even your customers.