
More Than Cheap Labor: 5 Things to Know When Looking for an Offshore Team
Maybe you're working with an offshore team, or maybe you're thinking about
it. Or worse yet, you've been burned by an offshore "software sweatshop". We've
all heard offshore outsourcing horror stories. There are obvious advantages
(and disadvantages) to outsourcing. Here are 5 tips to help you choose the
right offshore partner.
1). High Value, Not Low Cost – In most cases, when you send work offshore, you're saving quite a bit of money. With that in mind, when looking for an offshore team, don't look for the cheapest provider. Since you're saving money anyway, you might as well look for the most sophisticated partner you can find. In addition to technical skill, you should evaluate their responsiveness, the types of questions they ask, and their ability to manage complex projects.
2). What Kind of Firm Are You Looking For? - There
are two kinds of (offshore) development shops. The first are low cost "software
sweatshops" who take your specs and do development. This is fine if you have
solid specs and are looking for a team to simply execute. The second kind are
companies that have experience with highly complex projects in specific
industries. They'll have the expertise to add value to your project by asking
"what if" questions and challenge your assumptions. They will act as a partner
and a peer rather than a vendor. These companies are few and far between. The
way to find them is to ask what role they've
played in the projects they've worked on.
This was said perfectly by Chris Lynch, VP of Engineering of eProject.com (now known as Daptiv)
"Our specs called for a partner that as technically competent and independent, [who] would tell us what they thought we were doing right or wrong, and who would function as an extended part of our team. We wanted a peer who had enough expertise of their own to recommend content and coding techniques as well"
2). Avoid 'Yes Men' – You'll find very good technical people all over the world, but finding people who are reliable is next to impossible. Our philosophy is that a sign of maturity is the ability to say 'no'. It's extremely rare to find a vendor that will tell you like it is. We've heard countless stories of offshore firms over-promising and under-delivering. You need to look for a partner that can be honest with you from day one, even if it means they might lose your business. A company that sets up realistic expectations is a company you can rely on, even if it's not the answer you wanted to hear.
3). Ask How They Hire and Retain – Attrition is a big problem, make sure you don't get bitten. Experienced developers are constantly looking for the next best offer. Rather then asking about the company, ask about their criteria for hiring people. This will indirectly tell you about the character of the company.
4).Quality, Quality, Quality – It's tempting to believe that sending work over seas will automatically save money. While the hourly rate is significantly less, we've seen many companies spend 3 times more than they expected because of constant rework. Needless to say, you should ask your partner about their QA procedures. Reliable firms will always include a dedicated QA resource in every project. Experience shows that many software problems could be easily averted by implementing a strong QA methodology at the beginning of the project.
5). Go for the Long Haul – The real value of outsourcing is nurturing a team that can work with you long-term. Longer projects are better suited for outsourcing for a number of reasons. Assigning the right resources to the project, flushing out project specs, establishing clear communication channels, and knowledge transfer between your onsite and offshore teams all take time. Eventually, your offshore team will become an extension of your local team.
Software Specifications and Outsourcing: Don't Forget to Flush
I had a conversation with Pete Segar, the CTO of Ergotron a few weeks ago. I read about him in an article about domestic outsourcing and how it's becoming more of an imperative for mid-market firms. More outsourcing firms are targeting mid-market companies (Pete gets his fair share of cold calls). Ergotron is working with an offshore team in Belarus. The biggest reason for working with them was the fact that they had a local office in Minnesota. This helped reduce the inevitable communication breakdown of working with resources half a world away and provide a level of accountability. The biggest problem with global sourcing is accountability. Software project failure Cost overruns and missed deadlines are a grim reality of most software projects, doubly so for offshore/outsourced software projects.
Another big headache when working with an offshore engineering team is the amount of time it takes to develop an adequate spec. I've always said that finding an offshore software development team is easy, but finding a team that understands you and is committed isn't. Finding an offshore body shop full of programmers is incredibly easy, but the real value is outsourcing is choosing a team with the experience, tenacity, and insight to help you flush out a spec. Most companies that choose to outsource do it because they don't have the resources or experience to build their custom applications. The point of outsourcing is to find a vendor with the right skills and experience to solve your problem.
The best way to evaluate an offshore vendor is to find out their level of experience solving problems similar to yours. It's not necessary that they are domain experts, but they do need to have a problem solving attitude. This means helping you determine the "what if" scenarios of your application, asking lots of questions, and making sure that their solution reflects their understanding of your problem as a business problem, not a technical one. A strong QA focus is critical also because it indicates maturity. Your ideal offshore software partner will seek to understand your business and make suggestions, not be a passive accessory. To this effect, Narayana Murthy, founder of Infosys spoke of their shift from problem solvers to problem definers:
"We want to be proactive problem definers rather than reactive problem solvers. We want to be chefs rather than short order cooks. We want to go sell high, so we are selling to a high level executive who has a more complete picture of the problem and we want to be trusted advisors to that senior executive so that we can have a shot at helping him define the problem, and then the solution automatically follows that."
Mid-market CIO's are in a tough spot. On one hand their CEO's are pressuring them to cut costs and pursue a global sourcing strategy. On the other hand they are bombarded with calls from offshore engineering firms in India, Vietnam, Ukraine, Brazil, and the list goes on. As smaller companies look for more than cheap labor when looking for an offshore software team, it's too bad that the Infosys's, Tata's, and Cognizant's of the world that have cultivated vertical expertise aren't beating on their doors for business.
Insourcing, Offshoring, Nearshoring, Dual Shoring, Multi-Sourcing, Rural Sourcing? What ever happened to good old outsourcing?
Jon Graham shared the following outsourcing advice for newbies... 
"The outsourcing movement has just reached puberty and will be maturing over the next few years. In the past, it was thought that only large organizations could afford to outsource, but that is not the case any longer. The small to mid size companies are getting into the game as well. However, for the outsourcing newbie's out there that want to take the plunge, there are a few things to consider in order to ensure success."
Whether you're looking at
India, Russia, Ukraine, Vietnam, China, Brazil, Montana, or the
Philippines, outsourcing isn't easy. Here's a list of tough questions
you need to ask:
1. Process: How am I going to manage the work that I am going to outsource? What processes and procedures do I need to have in place? How often do I want updates? What level of information do I need? What delivery model am I comfortable with?
2. Tools: What tools can best help me manage the process I've defined. Do traditional individual tools work; mpps, word docs, emails, spreadsheets? How can I get real time project updates about vital project statistics/metrics? Is there single web-based, software development management (SDM) system?
3. Vendor Selection: What type of experience/skills/corporate culture does my service provider need to possess in order for us to be successful together? Is this a one project stand or is there potential for a long term engagement? What types of work has this vendor done in the past. Interview them as you would a potential employee.
The Old "Follow the Sun" Pitch
(This is not a new post. I just decided to change the title...)
A lot of offshore companies will tell you (primarily India, Philippines, China, and Vietnam) that if you work with them, the timezone difference will allow them to work while you sleep. They're an asset because you now have a 24/7 development cycle. Sadly, it's often a liability. 
In most cases we've seen, unless the specs are really good, and the development team sees the big picture, a 24/7 development cycle becomes a 24/7 headache. The lesson is that you should either have good specs, or be prepared to pay for specs. A mature development team will tell you this from day one... it's a sign of maturity. We've seen too many floundering projects resulting from poor specs.
I met a guy that was looking for offshore Java developers. He did a lot of research and ended up working with a company in India. As expected, part of their pitch was that they program while the client sleeps, a real 24 hour development cycle. We've heard this pitch before, and in theory it sounds good, but it assumes that the developers don't make any mistakes. In our experience, problems occur when requirements are not clear and there is a lack of communication between both parties. The client ended up working with a "near shore" vendor, but the following advice could help prevent problems with your offshore team.
-Committment on both sides: Make sure you have a local and offshore project manager. The local PM will communicate with users or internal stakeholders and the offshore PM will communicate with developers. It's helpful if they both have experience working with distributed teams.
-The Key to Any Relationship: Whether it's a marriage, a football team, or a team of software developers, consistent and structured communication is the only way to prevent heart-breaking (not to mention bank-busting) misunderstandings.
-Proper Methodology: Agile or Scrum methodology is helpful because it's highly iterative and allows for changes
-Solid QA: The offshore team needs to have a solid QA process in place. Developers aren't the best testers, and they shouldn't have to be. Make sure your offshore team has heavily invested in QA. Ask about their QA process and how they ensure that their work makes the grade.
-Find Solid Developers: Past work, a pilot project, or an exam are all helpful to make sure you're getting a qualified resource. It's not always critical to get an incredibly experienced developer as long as they have a good attitude and are willing to learn. An honest vendor will tell you the strengths and weaknesses of their team.
Software development is a piece of cake... or is it?
This excerpt came from a post on Gunnar Skogsholm's blog about software project failure... Software development hard. Right from the beginning there are a million things that could go wrong. This list on comes from
Software is risky business. Here's what can (and usually does) go wrong:
- team dysfunction
- failure to understand software (process, costs, etc)
- lack of leadership or vision
- failure to understand, communicate, document the problem domain description
- failure to architect a solution
- failure to design a software application
- failure of project management
- failure to select good tools
- failure to select reliable technologies
- failure to implement the software
- failure to test the software
- failure of quality assurance
Software development is...
Outsourcing Software Development? Look Before You Leap...
The US economic recession is hitting a lot of businesses hard. I got an email from the CISO of a large publicly traded company saying that they're looking for new outsourcing destinations since wages in India are rising. Apparently outsourcing to Pakistan, is becoming more attractive, as well as other countries you wouldn't immediately associate with software outsourcing like Slovakia, Vietnam, and Turkey.
But there's more to outsourcing than scouting out the next low cost destination (unless you want to get burned by a software sweatshop) Outsourcing isn't easy, and unless you're smart, the cost savings won't be the main factor leading to your decision. Tons of reports have suggested that you don't save nearly what you initially expected. It's easy to think that sending work overseas is a cinch; IT'S NOT. Outsourcing works great if there is a clear understanding of the nature of the relationship. Relationships based on trust, partnership, and value should always outweigh low cost. It's a matter of time before your offshore vendor raises their prices. Stop chasing the next low cost offshore destination. Outsourcing is not as easy as you think.
Keep the following points in mind when looking for an offshore vendor:
1). Lack of Communication: Expecting to send work to some foreign land without both sides being vested in communicating daily will lead to failure. If you go offshore, be sure that you're ready to spend time discussing the status, challenges, accomplishments, and goals of your project.
2). Undefined Requirements: I recently asked a question about software project failure on LinkedIn a few weeks ago and was overwhelmed by the quantity and quality of the responses. It was actually in response to an article that I found on the Wall Street Business Technology blog about failed corporate IT projects The main theme from the 76 answers (and counting) that I received is that unclear specifications and lax project controls result in failed projects. With onsite IT projects going belly up, can you imagine how hard it is to keep an offshore project on track? Don't underestimate clear specs.
3). Currency Fluctuation: Now this is really sad. Companies that went to India 5 or 10 years ago are now looking for the next low cost country to shift their operations. Don't make lowest cost the only reason for choosing your offshore vendor; it's short-sighted and unsustainable.
4). Corporate Culture: Do you value quality over the lowest cost, do you treat your employees like the geniuses that they are, do you make decisions based on principles and values rather than expediency? Well you better make sure your offshore partner does also. Often times they won't be the cheapest, but they'll be your ace in the hole.
5). Losing Key Resources: Too many offshore projects are hindered because of attrition. This is an all too familiar problem with companies that have sent work offshore. In developing countries like India, wages are rising, diminishing most cost savings. The rising wages mean that there is more opportunity, so top talent is jumping ship for more lucrative opportunities. Does your offshore partner hire generalists or experienced specialists? If your offshore vendor is a "we do everything/one size fits all" firm, chances are they'll have high turnover. Truly great companies are very selective about who they hire and fanatical about keeping them happy. No doubt, not everyone will be a superstar, but experienced team leads will bring the best out of the rest of the team.
The Difference Between a Methodologist and a Terrorist?

...you can’t negotiate with a methodologist.
Needless to say, following a good methodology is an integral part of any respectable software development effort, particularly when you’re working with an offshore team. In fact, most offshore horror stories have less to do with the technical expertise of the developers and more to do with how the project is handled. Many times projects get compromised because the vendor is juggling too many projects at once. Resources are scarce, teams get stretched, deadlines are missed… you know the drill.
Project failures rarely happen at the ‘ones and zeros’ level, so the real trick is to communicate with your team constantly (daily) to make sure expectations are clear and work is being done according to plan. So what you’re paying for is the set of principles that your vendor has established, their culture, their hiring and retention strategies, their growth vision, their industry expertise. The real question becomes, at the moment of truth, are they willing to cut corners and compromise these principles?
Even if they have technical weaknesses, working with principled methodologists who compromise for no one will always lead to success. Companies that define themselves and refuse to compromise will give you the only thing that really matters in business… trust.
It's Like Having a Gun to Your Head
I just saw a great video on the Scrum methodology delivered by Ken Schwaber at Google back in 2006.
Scrum is like having a gun to your head; if you can't produce results, be transparent, look for the simplest solution, adhere to strict deadlines, be held accountable, work incrementally and iteratively, respond to dynamic change, and deliver quality, you, your project, your company, and your career are dead. It's not all gloom and doom though, you'll be surprised at what you can come up with if you actually do follow this methodology.
It's perfectly suited for offshore software development. In fact, I can see why distributed software development teams that don't follow Scrum or Agile usually fail.
But as you'll see, Scrum isn't for everyone. It means looking at the facts, good or bad, and making very tough decisions. True adoption of Scrum is a real test of an organization's culture. With Scrum, you can't stick your head in the sand. A very valuable lesson for anyone that's been part of a failed offshore development effort.
Outsourcing Reality Check: Good Developers Aren't Cheap
So we all know there's no such thing as a free lunch. But intellectually knowing that doesn't stop smart people from believing it (myself included). Whenever you pinch pennies and cut corners, you're gonna get burned. It's a law of nature; there's no way around it, period. Like they say, when it comes to cost, time, and quality, you can only have 2 out of the 3. 
I own an outsourcing business based in Chicago... and we don't sell ourselves as the cheapest provider.
Consider this, a friend of mine visited India a few weeks ago and wanted a custom shirt made. It cost him $45 bucks, $42 for the material and $3 for the labor; labor is the only cheap thing in developing countries. Energy, office space, etc. is the same:
- Gas in Pakistan is about $5/liter
- Rent is close to $1200/month
- Electricity is about $400/month and it isn't even reliable so we're seriously thinking of putting down $30 grand to install solar panels. Solar panels in Silicon Valley is common, in Pakistan it's unheard of
This doesn't take into account the benefits we give our employees like lunch, health care, etc. If we didn't do any of this, our good developers would all quit and we'd be stuck with a bunch of crappy developers.
We do NOT want to run a software sweatshop. We want to attract and retain good developers and we know that it costs money to do that. We look for clients that value quality over pinching pennies.
If you're working with a software sweatshop, then yes, you should expect dirt cheap prices (some firms are charging $3.36/hour!) If you don't think the quality is worth what you're paying, then work with someone stateside. Prices are rising, so companies like mine sell value, not sweatshop prices.
Nothing worth value is ever cheap. Yes, you will save money by working with an offshore development team, but you'd better be prepared to work with a firm that sells value, not cheap labor.
Why Our Offshore Development Team is Learning Ruby on Rails
We make business decisions based on our needs. We're a small firm and don't have tons of cash and resources to waste so everything we do has to have a measurable impact on our business.
There was an interesting question on LinkedIn today asking what one skill software developers should learn that would make a noticable difference in my business. There's a big push for agile development, so I'd show them the benefits of agile development and how it makes their job easier. We're building some consumer facing web apps so an agile-iterative mindset is crucial.
In terms of technology I'm pushing for Ruby on Rails. It's nimble and fun... and of course facilitates agile development. I handle the business development for my firm (I'm not a programmer) but I've taken an interest in RoR just because of it's ease of use. There's a good article called moving from Java to Ruby on Rails if you're interested in some hardcore facts. Here's why we're encouraging our programmers to learn it:
1). It's Fun: We're taking on our first RoR project and the developer is stoked. He's working on a few other projects right now, but apparently this has him pretty excited. Nothing can curb offshore attrition like giving your employees fun, challenging work.
2). Less is More: Write less code, do more stuff. Need I say more?
3). It Makes Us Look Cool: If we want to survive as a business, we better be really good at what we do. There's plenty of opportunity out there so ignoring it would be to stick our head in the sand.
4). Time Is Money: Revisions, updates, and changes take a lot less time.
5). Dolla Dolla Bill Y'all: It's free!
6). It's Pretty: It has a really good AJAX stack
Indian Outsourcing: ISO this, CMMI that...
I may have lost a client, but I think I just made a friend... I just had lunch with the owner of a company we were trying to do business with. They sent out an RFI to a bunch of outsourcing companies. He was looking for a smaller shop that could grow with him give him the attention he needed. We spent two weeks looking over the RFI and crafting a very detailed response; and then we waited. We didn't end up getting the deal, but it looks like the beginning of a good relationship (he paid for my lunch today as a way of thanking us for responding to the RFI). We discussed our business, past failures, and the excitement of being a young entrepreneur a new father over fish tacos and guacamole. He just got back from a trip to India visiting some potential offshore partners and wrote a fun set of posts India is Winning... and Delhi Belly (hilarious)
We didn't lose the deal because of anything we could control. We have a solid technical background and an aggressive, problem-solving attitude, but we lost the deal to an Indian competitor that was obviously much bigger and more experienced than us. Our size, the political situation in Pakistan, and the fact that we haven't completed our ISO and CMM certifications influenced the client's decision. But that's ok, it comes with being an entrepreneur, it's just a part of the growth process. The encouraging thing is that it seems like we're on the right track in terms of attitude, technical skills, and vision. This wasn't our first deal and it won't be our last. In fact, now that I've met with the client, I have the opportunity to learn from him and gain advice on how to grow my own firm. It's funny how things turn out... this may lead
This weekend, two of our guys and my partner, Nayyar, just got done putting in 35 hours of emergency development work for a client with a big demo on Monday. The client made some last minute changes and was freaking out because we hadn't fully implemented them... a real nail biter. After we took care of that situation, I was talking to Nayyar about our lost deal on Skype and he said "one more thing that is more important then anything else.. They may be agile, CMM whatever but r they committed and dependable? That he will only find out after working with them" With offshore software development, the company can be ISO-this and CMMI-that, but at the end of the day, it's all about how committed they are. A client of our was working with an outsourcing company that was a Microsoft Gold Certified partner. He was burned so bad, he wanted to give up on outsourcing.
When Nayyar and I spoke later he told me that we're going to raise our rates higher than I thought. I have to admit, I was scared "How can I sell this rate?" Other companies are charging much less than this. No one's gonna buy from us, we're going to go out of business" But then I thought about what Nayyar said and I remembered that we're looking for good clients that demand quality and are willing to pay for it. It reminded me that we're selling high value, not low cost.
At first I was uncomfortable with the rate hike, but coming from a guy who spent 35 hours of his weekend helping a client in need, I'd say he's absolutely right.
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.
Cricket Anyone? Why Relationships Lead to Outsourcing Success
Yes, it's easy to find very good software developers overseas. The main complaint we hear about outsourcing revolves around communication problems. As I've stated in other posts, you need to invest in making your offshore team feel like they're one of your own. This will foster un-inhibited ideas, creative thinking, and ultimately breed innovation. If you're looking for code monkeys that do your bidding, you're going to be really unhappy when the product turns out bad.
Open lines of communication where you discuss the goals of your project will allow your offshore team to make valuable suggestions. If you're working with a good team, chances are that they'll have some valuable insight. Because we typically work on larger projects, we try to develop a friendship with our clients. We're fanatical about commitment and focused on longevity, but it cost us a fair share of deals. Our vision is to be a great offshore software development firm, and we can't do that by chasing projects that don't fit our profile. We are aggressive problem solvers and seek out deals that challenge us and force us to learn. Once we have these clients, we bend over backwards to keep them happy. In fact, this has led to cash and equity partnerships with some of them. We didn't go in seeking this type of arrangement, but it was the consequence of a strong, mutually beneficial relationship. The point is that although we're stubborn in who we work with... we have every intention of working with them for life. Think eHarmony.com vs HotOrNot.com
Nurturing a relationship means both sides have to show a genuine interest in each other. Often times, we discuss mundane topics with our clients like business challenges, politics, our kids, etc. Anything we can do to strengthen the relationship will ultimately lead to both of our success. For example, if you're having a hard time communicating with your offshore programmer, or if you feel like they aren't giving you honest and open feedback, try talking to them about cricket. The point is to create a connection that transcends your project. Developing a real relationship with your developers results in better quality and lower attrition rates.
Of course, it helps if your offshore vendor has a local presence (we're based in Chicago with a development center in Islamabad, Pakistan... nothing wrong with a little shameless self-promotion, right?)
6 Reasons Why Hiring Good Developers Is So Hard...
Looking for your next rock star developer? A Java developer, is a Java developer, is a Java developer. The only real difference is how well they can solve a problem. Developers are easy to find, but people who understand what you're trying to do and are fanatically committed to do things better isn't. This post was inspired by my own experience with other software entrepreneurs hiring software developers (.NET, Java, PHP, Ajax, Ruby on Rails, etc.) and a great post called How to Recognize a Good Programmer
We talk to lots of startups that outsourced development work... and now they're disgruntled and unhappy with their vendors. So when we work with clients our developers have to be super sharp (to make up for the natural bias against cheap offshore developers) Our focus isn't on technology as much as it is on our problem solving attitude. We're not the biggest, we're not the cheapest, and we aren't rocket scientists... but we're tenacious as heck.
On the flip side, hiring developers is a headache. We run into the following problems:
1). Chicken and the Egg: Newbie developers are a good long-term investment, but there's a steep learning curve associated with hiring and nurturing them into superstars. But it's better for us because it increases our retention and builds company loyalty. The trick is to nurture the programmers so they feel more confident in their abilities and more fulfilled at work. It sometimes requires us to see more in them than they see in themselves.
2). Ego Check: Experienced developers have big egos and have usually picked up a lot of bad habits over the years. Breaking these habits isn't worth the headache. We've actually had some very humble, well seasoned programmers come on board. They're real gems and serve as role models for the younger guys. Sometimes even having heavy hitters like them around makes everyone else in the office feel better... "well if he works here then this company is really going somewhere"
3). Hit the Road Jack: Bad developers like to inflate their credentials and salary histories. We've gotta be really meticulous here and test them like crazy. We look for developers who have a "work first, money second attitude" This doesn't mean that we hire cheap developers, it means we hire people that fit our culture. We've had to fire people that weren't committed to building a great company. They were lazy and were dragging down the entire office (even though they were decent programmers).
4). Oh Yes, There Will Be Blood: All-star developers aren't sitting on the street with a 'Hire Me' sign on their forehead. We have to build a company that attracts great talent... or at least people with the potential to be great. It costs a lot of money, but it's worth the investment in the long-term. There is war for talented software developers, and in high demand places like India, Singapore, and China... it's getting bloody. Luckily, emerging outsourcing destinations don't have to deal with the attrition/talent shortage. With any luck, by building a stellar company that attracts good developers, they'll beat a path to our door (I sure hope so).
5). Where Do You Think You're Going?: Once you've got great developers, you have to keep them stimulated or they'll drop you like Jessica Simpson dropped Nick LaWhatsHisFace. The pressure is on me (the marketing wing of the house) to find clients that are doing cool, innovative stuff.
6). Time to Step It Up: Convincing our good developers to graduate into PM's and coach the next generation of talent. This requires more convincing for some than for others, but it means we have to understand their true aspirations. The list goes on... but it definitely keeps us busy. We're currently looking for 3 developers at our offshore center in Pakistan. It's bittersweet because Pakistan's outsourcing industry is still in its infancy so attrition isn't as bad as in India... but finding good talent is still pretty hard.
Hiring, aggressive, solution-oriented problem solvers ain't easy... but it puts food on the table. Unless I invent the next million dollar fad a la Pet Rocks, Sea Monkeys, Tickle Me Elmo... I'm gonna have to keep figuring out how to hire good developers.
How Not to Get Burned: 4 Startups Share Their Offshoring Strategy
These days, everyone's looking for a rock star coder, but they're not that easy to find. That's why more startups are sending work offshore (not to mention that more VC's are demanding an offshore strategy from their portfolios)
Big companies set up captive development centers that serve the same purpose. Startups can't do that, so the trick is to find a mature and reliable team that will become a part of you. Outsourcing can not be transactional... the offshore team has to be a part of your team. That way they actually understand you and are committed to you. Outsourcing is about high value, not low cost. The real benefit is nurturing a team that's an extension of you.
That's exactly the type of offshore development that we advocate. Check out what other startups are saying about their offshoring experience and ask yourself if you're going offshore the right way:
1). 
The first a product engineering outsourcing case by Jeff Angus describes how eProject, (now called Daptiv) a Seattle based SaaS provider of project management systems has had unabashed success partnering with an outsourcing firm located in the Ukraine and in Redmond, Wash.
"We went out and got references for offshoring partners. The qualifications we were looking for were unusual," says Chris Lynch, eProject's vice president of engineering. "We were looking for quality of work rather than lower costs ... I was hiring locally, so costs were budgeted," he says.
"Quality was always the biggest need. Our specs called for a partner that as technically competent and independent, [who] would tell us what they thought we were doing right or wrong, and who would function as an extended part of our team. We wanted a peer who had enough expertise of their own to recommend content and coding techniques as well,"
Lynch explains.
2). 
This is a quote from Mike Volpe, VP Marketing at Hubspot.com. Hubspot.com has a killer marketing blog that is required reading for every startup and small business. Dharmesh Shah, the founder of Hubspot has a great blog about startups as well. Here's what Mike said about their offshore team, there's a valueable lesson here:
"for the record, we do have some overseas development done at HubSpot, but the folks abroad are really part of the team - we interact with them daily and the only difference between the folks here and there is the actual address."
3). This is a great quote posted by Stephen Wiehe, President and CEO of SciQuest. He wrote a response to a comment I posted in the Wall Street Journal's Business Technology Blog
"Anyone who questions just how significant hidden costs can be when outsourcing only needs to look at the recent recalls of toys manufactured in China. Many companies focus on costs they can see, but fail to consider the unknown costs that are often the greatest source of risk when offshoring jobs.
Forward-thinking companies know that you can't be high touch, high tech and low cost without sacrificing one or more over the others. For example, offshoring service jobs might lower costs, but you're likely to lower your customer satisfaction rating at the same time.
As wages continue to rise in India, organizations need to take a serious "look under the hood" and begin to articulate the unknown costs of augmenting their workforce with offshore staff. As stated in Raza Imam's post, organizations should seek to expand their workforce with overseas talent to bring more value to the organization, its stakeholders and its customers, rather than solely as a means to cut costs.
We began to notice the trend of rising overseas employment costs several years ago and have downsized our offshore team to just 10 percent of what it was at its height. We've solved the communication issue broached in the study by bringing members of our overseas staff to our headquarters for three months on a rotating schedule. Our offshore developers have gained a sense of unity and camaraderie with our U.S. staff while furthering their knowledge of our procurement solution suite. Effective communication with your offshore workforce, as well as the uncovering of unknown costs is 90 percent of the hurdle to a successful partnership. As a result, you can eliminate what may be the greatest hidden cost of all-inefficiency.
4). 
Finally, I received this email in response to a comment I left Matt Roger's blog. His post was titled How to Get Good Offshore Developers. The post was actually on ReadWriteWeb also.
We've deliberately made our developers part of our team (the actual guys, rather than the company!) and spend a lot of time with them and talking to them. They now help drive the development forwards with creative ideas to develop the system and are utterly committed.
The point is that offshoring is here to stay. If you're a startup and need good developers, you need to establish a relationship with a good team rather than outsourcing to the lowest bidders.
TechCrunch & DoubtSourcing - Can Ya 'Digg' It?
I’m usually not a big reader of TechCrunch (not because I don’t like it, but because I’m not sophisticated enough to understand most of what they’re talking about) but I saw a post the other day that made me laugh. It talks about the increasing use of offshore outsourcing by Silicon Valley startups (Digg, SlideShare, illumobile.com) There were two cartoons that perfectly illustrate the problems with outsourcing, provided by Sandeep Sood over at DoubtSourcing.com
They illustrate common complaints we hear about these software sweatshops:
•Vendor had inadequate technical skills
•Don’t understand the concept of a deadline (work is consistently late with the most creative excuses you can imagine)
•They don’t respond when the sh*t hits the fan
•Just don’t get what you’re saying (but act like they do)
•Don’t figure things out for themselves (but still bill you for their time)
•Have high attrition
•Just don’t understand Web 2.0
•They forgot about you when they get a bigger client
•Sold the A Team but delivered the B Team
•Claimed they were the biggest, cheapest, best, etc.
•Were ‘yes men’ and ALWAYS give you the answer you want to hear
I wrote an article with some practical tips to avoid these ‘software sweatshops’ 8 Ways to Avoid an Outsourcing Disaster
The cartoons accurately illustrate how most offshore vendors are simply ‘yes men’. You’ll find very good technical people all over the world, but finding people who are reliable is next to impossible. Sandeep agrees with our philosophy that a sign of maturity is the ability to say ‘No’. It's extremely rare to find a vendor that will tell you like it is. We've heard countless stories of offshore firms over-promising and under-delivering. You need to look for a partner that can be honest with you from day one, even if it means that they lose your business. A company that







