
Entries in business lessons (11)
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.
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?)
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 sets up realistic expectations is a company you can rely on, even if it's not the answer you wanted to hear.
You Win Some, You Lose Some...
Our focus has always been on high value, not low cost. This philosophy has resulted in lost business at times. Often times we find a great prospect who qualifies himself out of the deal because of our slightly higher than expected rates. Literally, we've lost deals over a couple of thousand dollars, or a few hundred dollars a month. Unfortunately, these are some of the same companies that say how much they hate outsourcing because they've gotten burned so many times. Granted, there are a lot of no good 'software sweatshops' out there, but you get what you pay for.
It's really telling and leads me to believe that the software sweatshop and their related problems were created by people looking to save a quick buck, rather than looking for the best people for their project. It hasn't been easy, but we've had to weed these prospects out and look for the ones that understand that the best talent and best procedures costs money. Offshore outsourcing is not about pinching pennies. We work with clients that understand that.
Outsourcing: 3 Reasons a Local Presence Matters
So you found developers on the other side of the globe willing to do work for half the price... great. But what do you do when something goes wrong? What if your vendor does something malicious or incompetent and disappears? That's why finding a trusted local development partner is so critical. If they have an offshore presence, that's great... they should deal with the offshore team, not you.
The following horror story came from Jack D. Deal's blog
"[Joe] said he had the bright idea of going offshore to India to get a cheaper deal on an e-commerce website design. He did contract with an Indian firm for a little less than half what a Silicon Valley e-commerce designer would charge.
Joe paid the full amount by credit card before the work had begun. Mistake number one but for Joe it was 'cheap'; it wasn't even for him a matter of price vs. cost. For almost two months they strung him along but in the end produced nothing and refused to return his money."
The reality is that most people that send software development work offshore aren't happy. People that use project bidding sites will tell you that finding a good vendor is really hit or miss. What's worse is when the "buyers" aren't technical and assume that the developers know exactly what they want. If you want to go offshore, you need to find a company with a local presence, if for no other reason than the 'throat to choke' factor. There are 3 main reasons a local presnce matters:
1). Security: A local company will be accountable by local law to any NDA's or other IP protection agreements you sign. Even if the offshore team bails on you, you still have some recourse. Did you know that contracts signed with foreign companies are not enforceable unless they enter the US postal system? So if you sign a contract with an offshore vendor and send it via fax or email it's very hard to enforce (true story, one of clients told us this and asked both me and my partner in Pakistan to sign the contract and mail it to him)
2). Process: Companies with a local presence and offshore software development center have nailed down a process of working with the end client and managing the delivery of the work on the backend. Doing this yourself is time-consuming and difficult. We typically talk with our North American clients during the day to review work we've done or further gather requirements. The 24/7 model works very well for us, but it's been a difficult process to hammer out and requires a lot of hardwork from our developers and project managers.
3). Communication: A company with a local presence should be able to stay in constant communcation with you. Due to the inherent latency in offshore development, it's critical to have someone you can talk to easily. It's easy to underestimate this, but communication failures are the biggest IT project killers; whether they're onsite or offshore.
Tim Ferriss: Outsourcing's Poster Child
Tim Ferriss, author of the wildly popular book The 4-Hour Workweek says that one of the secrets to living the life of your dreams is to outsource personal tasks. Successful business people and entrepreneurs have known that delegating tasks to competent parties allows you to actually focus on what's important. In his book, Ferriss helps the common person utilize this ultra-powerful concept. He advocates using virtual assistants to help you with checking email, online dating, paying bills, research, and even helping you complete projects for work.
This concept is behind the push into outsourcing 15 years ago. The idea was to find competent, reliable people to do low level tech work. Fast forward to 2008 and outsourcing is now part of the repetoire of normal people like you and me. The key is to find someone reliable. Most companies that have outsourced software development will tell you that their experience has been pretty bad. Missed deadlines, mis-communication, unrealistic expectations, lack of oversight, and just plain incompetence are some of the things we hear people complain about. Here are a few lessons to make outsourcing work for your personal life:
Find Someone Reliable: This almost goes without saying, but it's worth mentioning anyway. Businesses know that you can work around technical limitations and lack of knowledge, but you can't work around incompetence and lack of committment. Companies that have outsourced software development projects will tell you that reliability and committment is the key. Someone who's willing to learn and stick with you for the long haul is worth their weight in gold.
Isolate tasks: Outsourcing works very well if you farm out finite, well-defined tasks to competent parties. For example, in businesses that outsource software QA work are usually pretty happy with the results. There is a finite task with measurable results. Outsourcing personal tasks should be the same. Perhaps you can find someone to pay your bills or search for cheap travel online. Companies that have successfully outsourced more complex tasks understand the importance of constant communication with their offshore partners. This type of long-term outsourcing is much more difficult and requires more effort from both sides. It's not that it can't be done, it just takes more effort.
Share Your Culture: When you build a company, one of the more important things is to build a company culture. A solid corporate culture makes the business less reliant on you. For example, if you build a corporate culture and instill it in your employees, they will be empowered to make quick decisions when unforseen circumstances arise. If they understand the culture, they won't have keep coming back to you everytime there's a problem. Whether you outsource software development, legal work, business processes, or personal tasks, as the relationship grows you need to make sure that your outsourced team makes decisions the same way you'd make decisions. The true value in outsourcing is not saving a few bucks... it's about nurturing a team that becomes an extension of you. That's the only real way to leverage an outsourcing relationship.







