Clicky Web Analytics

outsourcing, offshore failure, software development, agile development, distributed software development, ruby on rails development, .NET development, offshore outsourcing, outsourcing failure

Entries in bootstrap (8)

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. software development, offshore, outsourcing, ruby on rails, PHP developers, software engineering

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...

outsourcing partnership, offshore partnership, outsourcing vendor, offshore vendor, offshore firm, outsourcing firm, offshore software, outsourcing softwareI 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.


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.

                                                                                                                       jerk.jpg
 

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...

I've been bitten by the offshore attrition bug. I was eating breakfast yesterday morning when my partner in Islamabad called saying that one of our top employees is leaving. I couldn't believe it because he was really one of our star developers; hard working, detail-oriented, and sincere. I knew him personally and thought that we had good rapport. Apparently, he has his own entrepreneurial aspirations and an opportunity presented itself to him. I don't know the details, but I think he had a friend somewhere that was going to point some projects his way.

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 ultim
ately 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.
programmer.png
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.

 

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.