Outsourcing can be a real nightmare. If you’re lucky, you’ll be in a customer whose developer team is nice to you but in the other hand, you can find a team that is arrogant, they will make your job harder and in the end, every piece of problem that arises will be your fault and your teams fault only. The reasons? well, i think they are simple: if you do a good job, if you have all the technical skills desired, even so it will not be enough. The main reason is that the customer team fears you. They fear your knowledge is better than theirs, they fear you’ll take their job somehow.
They look at the huge piece of crap applications they build, like some kind of code virgin API wich cannot be changed unless you invite it to dinner 10 times. After 10 times dinner you can mess with it all the way!
It’s like everytime you add some pice of code to their API, it has to go to some inner workflow of approval that at the end, allways ends up approving your code but makes you waste time and, that’s the stupid part of it: they are paying for it!
This dark and obscure “workflow of approval”, usually does nothing; it doesn’t look at the code at all. It doesn’t do any benchmarking whatsoever. It’s just a waste of time created for you to understand that they are still in charge.
At the end, your code is allways approved and why? they don’t understand it! it works so…they use it!
Another curious thing to observe is the quality of the code you’ll be messing with. Be ready to see all kinds of
code quality. It can go from the very well crafted piece of code, to the mother of all spaghetti code you’ll ever find.
This can be explained: large teams with a variety of skills, newbies recently thrown from University, etc.
The most curious thing is that i’m talking about companies that deal with the life of thousands if not millions of people and they do it, by using software applications that still work, mainly by luck or you can say that murphy is just being distracted!
Above, IIS source code schizophrenic class relationship.