CodeBetter.Com
CodeBetter.Com
RSS 2.0 via Feedburner
           Do you Twitter? Follow us @CodeBetter

Jeremy D. Miller -- The Shade Tree Developer

Under the hood and working with .Net, TDD, Software Design, and Agile Stuff

How to be a Bad External Development Partner

We've been dealing this year with a couple overseas development partners that provide particular business services.  By my count we are 5 months late on the first and 2 months late with the second partner.  We've had a lot of churn from unclear requirements (lawyers were involved), but a lot more from the technical side.

We just discovered this week that Partner A changed their web service out from under us without informing us.  Once we got the WSDL files from them we updated our proxies easily enough, but we started seeing some problems.  On one web service message we expect a null return to mean that the data simply isn't ready yet and try again later.  They switched it to throwing an exception so they could "provide more information," breaking our code in the process by changing the semantics of their service.  We'd try to suggest going to a DTO response coming back that could contain either the successful or not ready information coming back, but we don't have any confidence, or influence, over their solution.

Partner B has simply never done any .Net or Web Service integration work, and they seem to have very weak quality practices.  I.e. obviously no unit testing or even integration testing and poor configuration management.  Really bad bugs that should have been caught by simple visual inspection have gotten through to the testing environment.

Lessons Learned?  Well, for one thing I would emphasize as much communication as possible early on and don't rely on documentation alone for communication.  Don't assume anything about their, or your, understanding of the integration issues.  Secondly, if I'm ever in this situation again (and since this is the way the world is going to work from now on it's likely), I would insist on a shared code repository or a Continuous Integration infrastructure that spans the code of both partners to find problems faster.

The two partners are on two different continents, so I'm certainly not bashing any particular country or region. 

 

 

 



Comments

Michael Eaton said:

Jeremy,

I really enjoy your blog.  Great content!

Anyway, do you know why your company uses overseas partners?  I'm trying to get a handle on this since my previous employer has decided to outsource the majority of their development work to a provider in eastern Europe.  It seems strange because you never read about the successes, only the failures in these kinds of relationships.

# September 22, 2006 9:50 AM

Jeremy D. Miller said:

Michael,

I can't really get into it because of non-disclosure, but the external providers essentially take on part of our business process.  The technical work is just the work to integrate from our systems to their systems.  It's not a straight up outsourcing arrangement.

I'm with you though, I've almost never heard of successes in offshored development.  The only successful experience I have with offshoring isn't likely to be replicated by very many other companies.  When I was changing jobs a couple years ago one of the consulting companies I talked to in Austin had a nice line of business going on that they called "Offshoring Rescue" projects.

# September 22, 2006 10:03 AM

shebert said:

Just as US firms are being "discovering" offshoring, companies like Toyota are discovering the benefits of having more of the supply chain regionally located.  The duplication in capacity more than offsets the cost of disjointed workflows.  Sadly, it'll probably take a large business failure blamed on this to turn the tide.

# September 22, 2006 10:23 AM

Jeremy D. Miller said:

Yeah, but the Toyota supply chain model is partially built on moving the financial risk to the suppliers.

# September 22, 2006 10:32 AM

Leave a Comment

(required)  
(optional)
(required)  

Enter the numbers above:
Add

About Jeremy D. Miller

Jeremy began his IT career writing "Shadow IT" applications to automate his engineering documentation, then wandered into software development because it looked like more fun. Jeremy previously worked as a systems architect building mission critical supply chain software for a Fortune 100 company and learned agile development practices as a .Net consultant at ThoughtWorks, one of the pioneers of agile development. Jeremy is the author of the open source StructureMap (http://structuremap.sourceforge.net) tool for Dependency Injection with .Net and the forthcoming StoryTeller (http://storyteller.tigris.org) tool for supercharged FIT testing in .Net. Jeremy's thoughts on just about everything software related can be found on his weblog "The Shade Tree Developer" at http://codebetter.com/blogs/jeremy.miller, part of the popular CodeBetter site. Jeremy is a Microsoft MVP for C#. Check out Devlicio.us!

This Blog

Syndication

News

All opinions expressed here constitute my (Jeremy D. Miller's) personal opinion, and do not necessarily represent the opinion of any other organization or person, including (but not limited to) my fellow employees, my employer, its clients or their agents.

About Me

"Best Of" Compendium

StructureMap (Dependency Injection for .Net)

StoryTeller (Supercharged Fit)

Build your own Cab

TestDriven

MVP