Fog Creek Software
Discussion Board




Analogy for why outsourcing is hard


One huge obstacle to outsourcing is that is seperates DESIGN from CODING.  Many people think these are two seperate processes.  Those people usually end up with poor software.

One important principle of XP and (I think) Agile Programming is close contact with the customer with likes of iteration and high visibility.  You show the customer (or a respresentative sample thereof) the latest build every few weeks.

I finally thought of an analogy for this:

It's like saying "gee, our architects are really expensive.  And what they *produce* is just blueprints. Surely we can get some { grad students | cheap indian workers} to do the drawing. Lets just outsource all of the actual drawing to those folks. Then, our architect will just tell them what to draw.

An architect might spend 10% of thier time actually DRAWING, the rest is mentally testing lots of alternatives (I'm guessing here, I'm not an architect.)

Any thoughts? Agree, disagree?

The real Entrepreneur
Monday, March 08, 2004

The ACTUAL drawing is already done by technologists or Cadd Monkeys.  There is a requirement in Canada that it be done in the same office but seldom adhered to.

B#
Monday, March 08, 2004

But what about specifications. There is a hell lot of difference between writing a drawing and writing the code for a program.  The Americans give specifications and the indians do it. It is very difficult to give specification to architecture. I mean , imagine putting down what you visualize. That would be to do the work itself.

Its relatively simple to write software specifications. Example: "After you click this, this should happen". In more complex cases, teams fly to U.S to get a clear understanding or someone from U.S goes to bangalore to explain. Also with video conferencing and online chat, the gap is even more minimized.

As for poor code quality, Oracle just increased its headcount in bangalore to 4000. I was at Oracle and the big guys in the US are real impressed with the code quality that used to come out. Peoplesoft is hiring 800 people in bangalore. It wont happen if they think that there is a disconnect between design and coding ehich causes poor quality.

Karthik
Monday, March 08, 2004

Perhaps a better way to structure that concept would be:

Gee,  architects are expensive, so let's have architects over-seas work on the design/drawings/engineering.  We'll just write up a really good description of what we want and send it to them.

Of course you're relying on their understanding of good engineering practices and available materials in the US, as well as their ability to understand your documents.  There's a lot of room for misunderstanding and poor work.

Of course it could turn out to be a great cost-saving maneuver.

Lou
Monday, March 08, 2004

"Its relatively simple to write software specifications. Example: "After you click this, this should happen"."


I've not found a good, easy way to specify things like that.  I suppose you might draw one screen for evey window. Then draw lines showing the interations between the windows. (If they select a file, then show it, use types in new file name, create it).

But then you're pretty much writing psuedocode.

Look, I don't oppose outsourcing on principle.  I'm just skeptical of the effectiveness for the software we sell. I've considered outsourcing our programming. I'd love to oursource my job and work on other things (or nothing). I still get paid 'cause I own the company.

But, when I sat down to spec out what I wanted the programmer to do, I realized several things:

1.  The design is very iterative.  Just putting controls down on a form helps me think about usability. I might try several layouts (or a dozen) before I find one I like. Can't do that on paper.

2.  It's difficult to get the design out of my head and onto paper.

3.  There are enourmous economies to be gained by code reuse. REalizing that "oh, this feature is going to be used similarly in program #7 and #12" (we have 20 programs).


FOR ME the probelm is that I don't have a good tool for DESCRIBING how the program would work. Perhaps the VISION software company died too soon?  They wrote a program that would help you document/spec out your program.

The real Entrepreneur
Monday, March 08, 2004

For good programmers, it is exactly as simple to specify in the code "after you click this, this should happen" as it would be to specify the same thing in FrameMaker or Word.  But when you specify that in the code, you actually get immediate feedback about whether that was a good idea.

Most of the mainstream management "wisdom" about software development is based on the fact that lousy programmers have far more trouble writing code than writing cheesy specifications, and most programmers are lousy or else stuck carrying the dead weight and performing the silly process dances in mickey-mouse shops.

Design is just one aspect of programming, just as plot is just one aspect of writing a book, and composition is just one aspect of painting a portrait.

veal
Monday, March 08, 2004

Agree.

You said: "close contact with the customer with likes of iteration and high visibility"

Study after study has shown that close contact with the customer is one of the most strongly correlated factors to software development project success.

The one constant in this field is that the same mistakes are made over and over and over again.

Dennis Atkins
Monday, March 08, 2004


A few thoughts...

"Surely we can get some { grad students | cheap indian workers} to do the drawing."

The problem I see with this is that you are equating Indian labor as being inferior to American. This just isn't true. Oh sure, there are some really lousy Indian programmers and plenty of sweatshops over there, but it's about time that we recognize that India has plenty of bright and talented people.

On the other hand....

"Its relatively simple to write software specifications"

Sure it is. Now writing one that is actually *useful* is an entirely different story. What happens when the spec is vague, or leaves out important topics such as performance metrics? This happens all the time and the end result is a lot of churn at the end of the project while the missing requirements are force-fed into the application.

Some projects work for outsourcing; some don't. Some companies do it better than others. Without a doubt, there are some huge challenges and the disconnect between the developers and users is a central one.

Mark Hoffman
Monday, March 08, 2004

If talent follows a bell curve (which it may or may not, but bear with me here), then even if the average talent in India is below the average talent in the US, the fact that India has something like 4 times the population of the US may well make up for the average being lower - the absolute number of people with a level of talent in India equal to the average level of the US could be a large number.

Alright, it's a gross oversimplification, but I'm a theorist.  We do that a lot.

Aaron F Stanton
Monday, March 08, 2004

Aaron,

Agreed. The average IQ in India is around 1 standard deviation below that of the US. Assuming a bellcurve, the raw numbers of really smart folks turns out to be about the same.

Of course the iq distribution is not really a bellcurve, but that's close enough for forums.

Dennis Atkins
Monday, March 08, 2004

Talent doesn't follow anything remotely close to a bell curve, but any specific distribution would fail to negate the point about India's population multiplier.

Nevertheless, the only reason why labor costs are even worth considering in software development is because of all the excess baggage in a contemporary shop.  Leverage the 10x or 50x talent, let them choose their own tools and methods, take the purposeless bodies they carry off their shoulders, and your labor costs will drop precipitously.

What would be really fun is if more of the top talent stopped squandering their efforts, hooked up directly with subject matter experts, and flushed their old employers with all that baggage.  Honestly.  If you're really talented, you're probably quite smart too.  Why limit yourself and pretend you're only good at programming?  The biggest reason why you talented programmers are in a position to worry about outsourcing is that you've allowed other people to make such decisions -- most of them people not adding any serious value anyway.  You've drifted into positions of comfortable weakness.  When are you going to take the reins?  *After* your job moves to Bangalore?

veal
Monday, March 08, 2004

veal wrote:
"If you're really talented, you're probably quite smart too.  Why limit yourself and pretend you're only good at programming?  "

That's a fine sentiment. However, many professionals (programmers and otherwise) have no *interest* in running a business.  They often have even less interest (or aptitude) for marketing.

I'm sure that a smart person could *learn* these business skills (I did) but they love programming and don't want to be bothered with running a business.

The real Entrepreneur
Tuesday, March 09, 2004

--" It's like saying "gee, our architects are really expensive.  And what they *produce* is just blueprints. Surely we can get some { grad students | cheap indian workers} to do the drawing. Lets just outsource all of the actual drawing to those folks. Then, our architect will just tell them what to draw."----

Actually, I've just done it!

I did the plans for my house in Sri Lanka using a Home architect program. I printed them out on pdf's and couriered them to my mate in Lanka and told him to show them to the Planning Department at the Town Hall and get planning permission. The lady at the planning department insisted that the .pdf A4 pictures wouldn't do and I needed to produce two full scale plans with a plotter on A3 onion paper, using autocad. My mate gave her $40 and she did both of the plans (house and guard house). When I got to Lanka I found there were two small insignificant problems. She changed them and produced two additional drawings at no extra cost.

Total cost $40. You pay a couple of hundred dollars minimum for a copy of a standard house plan online.

Stephen Jones
Tuesday, March 09, 2004

The house falling on your head due to bad design: priceless :)

coresi
Tuesday, March 09, 2004

Yes, Entrepreneur, I'm aware that many professionals have no interest in running a business or in marketing.  I nearly reside in that category myself.  But we can't always have exactly what we want.  Most of us also have no innate desire to pay our mortgages.  But we face consequences when choosing to stop making our house payments, and likewise we face consequences when we choose to give others control of our work and our working conditions.  The threat of outsourcing is but one of those consequences.

Perhaps the choice to hand control of your work life to others was at one time a liberating choice along other dimensions.  It's starting to look like that's no longer a smart bargain.  At the very least, people should be truly, fully cognizant at every moment of that bargain they are making, and of the other choices available.  Most of us, myself included, let momentum carry us far too often.  When the rules you've been playing by cease having much likelihood of serving you as well as they serve a other players, it might be time to play a different game.

veal
Tuesday, March 09, 2004

One more thing for those working in the corporate world who might feel they don't have all the knowledge and aptitude to run a business...

Look around yourself.  Do you really think you'll make dramatically stupider decisions than those made by the chimps around you at this moment?  Than the chimps at the top of your company?  Do you really think they're making superb decisions?  Do you honestly think there's anything critical in the typical MBA curriculum that you couldn't pick up in a heartbeat?  If you're a programmer, you're fortunate enough to work in a field that requires very little capital to ramp up a business.  Stop buying toys, squirrel away 9-months minimal living expenses and some marketing funds while you work out your idea part-time (probably with a subject matter expert), and give it a go.  You can always go back to being a cog if it doesn't work out.

veal
Tuesday, March 09, 2004

One more hint...

For inspiration, think about where you worked, 2, 5 or 10 years ago.  Were any of those employers selling to poorly-served niche markets?  Contact some of the people from that era in your career to see if they can help you crush the old employer.  If it starts to work out and you feel panges of guilt, hire away some of the good employees.  You didn't like that place anyway and they didn't value your contribution enough, or you'd still be working there.

veal
Tuesday, March 09, 2004

--"The house falling on your head due to bad design: priceless :) "---

Bad archtectural  design causes plenty of things, but rarely in single story family houses falling down.

Skimping  on materials is the normal one.

And you'd be amazed how many of the houses that fall down in earthquakes have blueprints signed by an architect.

Stephen Jones
Tuesday, March 09, 2004

Veal:

I agree with everything you said. You're preaching to the choir when you tell *me* to do that. I did it 9 years ago and haven't looked back.

But... I've also learned never to try not try to convince someone that they SHOULD do something that *I* think is for THIER own good. (No matter how convinced I am).

One look at The Apprentice should illustrate that you don't have to be a rocket scientist to run a successful business.

The real Entrepreneur
Tuesday, March 09, 2004

ummm... I meant "never to try to convince".

A double negative slipped in by mistake.

The real Entrepreneur
Wednesday, March 10, 2004

*  Recent Topics

*  Fog Creek Home