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 management (6)

The Difference Between a Methodologist and a Terrorist?

software methodology, software engineering, software development, agile, scrum, .NET, java, ruby on rails, outsourcing, offshore software, india software, russia software

 

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

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.

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?)