I have a friend (let’s call him Andy) who used to work for me and was a good engineer. He subsequently became VP Engineering at an outsourced software development company overseas. I have another friend (let’s call him Don) who also worked with me at a large software company in the sales group; we went on a couple trips together to call on customers when I was a product manager.
So when Andy wanted to spin out his own outsourced software development company (after learning the business), and Don wanted to find someone to develop a Web 2.0 demo / app so he could pursue funding or BD opportunities, I thought it a no-brainer to hook them up, as they could help each other out, right?
I’ll never do it again. At least, never without adult supervision.
Expectations were very high on both sides. Andy wanted this to grow into a big project once funding happened, so he put a lot of effort into getting the code developed exactly per requirements. Don wanted to see regular quick progress, but worked from a fairly detailed PRD. Neither had a good issue or bug tracking system in place. Meetings weren’t scheduled regularly; a date was set, but when that date came and went, many unmet expectations surfaced, to the detriment of the continued beneficial relationship between the 2 parties.
Of course I blame myself. I should’ve seen this coming and inserted myself into this process to make sure things went smoothly. But I assumed that I would be invited to do so if needed. Indeed Don had prepared several proposals to engage me in his venture. Each version had an issue we needed to discuss, so disappointment had already begun to set in by the time I considered looking into the outsourcing relationship in detail.
What did I learn? In no uncertain terms, “Friends don’t let friends do outsourcing.” (At least without Adult Supervision.)
By “Adult Supervision”, I mean with professional engineering management expertise on the client side. Sales people cannot assume they are going to succeed at engineering management of remote outsourced staff. To assume this is to make light of the engineering management profession. It’s challenging enough to get distributed development working for well-running, well-managed engineering organizations. It’s folly for an inexperienced person to step into an engineering management role to attempt to lead a successful remote outsourced offshore development. Don’t do it! When you see this coming at you – go to DEFCON3!
Friends just don’t let friends do outsourcing!