
Entries from March 1, 2008 - April 1, 2008
Accelerance and 'How to Select an Indian Outsourcing Partner'
Never really read Steve Mezak's work (CEO of Accelerance) , although I'm not a member of his partner network, he makes some good points in a post called 'How to Fail at Outsourcing' It's actually a comment on an article in Information Week called 'How to Select an Indian Outsourcing Partner' The InformationWeek article highlights 3 main issues cited by CIO's who cancelled outsourcing contracts:
- Need for excessive management/oversight
- Unrealized savings
- Work quality
Steve said that most offshore failures occur when you don't find the right type of outsourcing partner he says,
"By wrong kind of vendor, I mean one that is happy to charge you for some junior programmers put in a room for you, and even give them computers and an Internet connection, but then fails to follow through with any kind of supervision, management or professional software development process."
He's right in saying "I think a key mistake people make is treating software development only as a financial transaction rather than recognizing it as a collaborative and creative process. If all you hire is cheap programmers without experience, no matter what country they are in, then you will get what you pay for"
What you really pay for in outsourcing is project management and communication. I mean how hard is it to find .NET, Java, or Ruby on Rails developers? Good developers are easy to find anywhere, finding someone that can get the job done is the real issue.
You really pay for the process of managing the developers and providing a thorough product. And I'm gonna let you in on a little secret GOOD DEVELOPERS AREN'T CHEAP, whether they're down the hall or across the world.
Outsourcing is about high value, not low cost.
5 Reasons You Want to Work with a Jerk
Often times we hear outsourcing horror stories revolving around communication failures and mis-managed expectations. Read this post for a list of top outsourcing complaints. Software development is a highly iterative process that requires clear and constant communication between the local and offshore team. In most cases, there are tight deadlines and client expectations to be met, leaving very little room for error. In these tight situations, we've seen offshore teams paint pictures that are far rosier than they really are. In the middle of a critical software development project, you want the truth from someone you can rely on, even if it's not the answer you want to hear.

There was a really good string on LinkedIn last week about lovable fools vs. competent jerks. It stated that given the choice between a competent jerk and a lovable fool, which would you choose? I say you should take the competent jerk everytime. In most cases, jerks really aren’t jerks; they are extremely good at what they do and very focused. They know what they can do and what they can’t and don’t tolerate non-sense. One reader noted, "When I'm in a high-pressure situation, like proposals, real-time operations, etc., I may overlook the jerk's anti-social behavior to get the job done. I don't have time to bring along the fool."
The bottom line is that distributed software development requires competent individuals that don't sugar coat the facts. When you're working on a critical project, you want the raw dope, so you can make quick decisions. I'm not saying you should work with anyone rude or arrogant, you should work with people that are direct and no non-sense. These people are sometimes mis-categorized as jerks. Some would say Kobe Bryant, Donald Trump, Prince Nassim, Russell Crowe, Puff Daddy, and Bobby Knight are jerks. Again, I don't think you should work with pompous, self-important, conceited snobs... but there's a lot to be said about having a strong personality and high performance.
Here's why I've enjoyed working with every 'jerk' I've ever worked with:
1). Most 'Jerks' Aren't Really Jerks: Most jerks aren't really jerks; they're either a bit anti-social or just plain misunderstood. I find that people that are considered jerks are actually extremely smart, and are actually quite nice.
2). 'Jerks' Aren't Afraid to Tell You the Truth: Again, they don't sugar coat reality. They tell you the truth and allow you to make solid decisions based on accurate data.
3). 'Jerks' Are Very Reliable: 'Jerks' are high impact and results oriented. They get the job done well, and take responsibility for mistakes.
4). In Their Element, 'Jerks' Are Good at What They Do: It's just that when they're in their element, they can be a bit intense. I mean seriously, how many real jerks do you really know? Lovable fools are great, but sometimes they can cause big problems. Take it from a lovable fool.
5). Lovable Fools Break Things: Think Jar Jar Binks... Yes, us lovable fools have our place, but don't let us around anything too critical.
6). Lovable Fools Hide Their Incompetence Better: Lovable fools hide behind big smiles and elaborate excuses. When your project is 5 weeks over due, you want to know how it's going to be fixed... NOW.
Another Outsourcing Horror Story...
Got a nice email from Giovanna Villanueva this week, a reader of SoftwareSweatshop.com . A pparently she has an outsourcing horror story and decided to share. Notice that outsourcing failure doesn’t typically occur at the programming level, it’s usually a result of poor project management and lousy communication. It doesn’t matter whether you’re looking to outsource .NET, Java, PHP, Ruby on Rails development, if your offshore team isn’t communicating with you on a regular basis, the project is headed for disaster. You can read her outsourcing story for yourself here. Here are some lessons she learned:
1. Conduct intensive research: Ask them a lot of questions and also contact a few of their past clients to know more about their performance and habits. The only issue is that most references provided will be good ones, so it doesn’t give much insight. It’s probably a good idea to start a pilot project so you can see how responsive the team is, the types of questions they ask, and how well they understand you.
2. Deal with companies directly: Should you consider working with an offshore broker, make sure they have been in the field for a number of years. Don’t work with people who are new at brokering outsourcing projects because their lack of experience will be at your expense.
3. Have an iron clad contract: ‘Nuff said. Spell out vacation/sick days, intellectual property rights, etc. Working with a firm with a US presence definitely gives you more recourse
4. Be careful when hiring individuals: Make sure you’re confident with their competency and communication before assigning them work. It also helps to start out with smaller projects. Working with development firms with a well defined corporate culture, solid experience, and development methodology is critical.
Distributed (Offshore) Software Development Ain't Easy...
The thought of making a counter-offer didn't make sense, even if we could afford to match what he would be making. What can you do when your top employee wants to start a venture of his own? The only thing I could do is support his decision. Like I said, he's a great guy and he's extremely committed, so I know he's going to do well.
This isn't the first time we've had an employee tell us he wanted to start his own company. Unfortunately, he accidentally contacted one of our former clients with work that we had done, making for a very awkward conversation. In the end, we realized it was a mistake and everything is ok know. But again, what do you do when your employees want to start branching off on their own?
With sites like oDesk, Elance, and RentaCoder, anyone with a computer and reasonably stable internet connection can be an entrepreneur. Our response has been simple... "It ain't easy". If an employee comes and tells us that they want to start their own business, we don't stop them. We wish them the best, and if they're good, we tell them that they'll always be welcome if they choose to come back. From personal experience, you can't negotiate with someone's entrepreneurial inclinations. The best you can do is to support their decision; only time will tell if they will succeed or unceremoniously fizzle out. Although sites like those mentioned above make it easy to find random project-based work, you get caught in a jam if you try bidding for more lucrative work that requires more than one programmer. I mean you can accept small web applications that take no more than one developer to build, but if you start bidding for larger, more complex projects, you have to start looking for developers to help you, and that's when it gets ugly. And this is the point where offshore projects start to fail. Hiring a freelance software developer for a small project is easy, but finding someone to manage a team of developers on a very demanding project is not.
The catch-22 that these developers get caught in is that the larger projects demand tight cost and quality control, not to mention continuous communication. Anyone that's managed distributed software development teams knows that failure takes place at the project management level, not at the coding level. There's a great article in the WSJ's Business Technology blog about IT project failure. If 35% of IT projects fail, what's the percentage of offshore projects that fail? Having worked on two failing projects myself, I'm now painfully aware of the factors that led to failure. Specifically, consulting projects where you're working with a non-technical end user can be a nightmare.
Solo freelance is ok, hiring good developers is paramount if you want to branch out and start a real company. Sometimes people think that running a business is easy. I for one will tell you, offshore software development ain't easy. Buyers who are looking to pinch pennies, and vendors who underestimate the complexity of offshore development are a bad, bad combination.






