Fog Creek Software
Discussion Board




Offshoring

Have you given any thought to offshoring any of your development?  If not, is it because you would prefer not to or because it would not benefit fog creek's bottom line?

Kevin Clary
Thursday, February 26, 2004

We will not be "offshoring" our software development because you don't outsource your core competency. I'm not a software broker, I'm a software developer.

http://www.joelonsoftware.com/articles/fog0000000007.html

Quote:

Indeed during the recent dotcom mania a bunch of quack business writers suggested that the company of the future would be totally virtual -- just a trendy couple sipping Chardonnay in their living room outsourcing everything. What these hyperventilating "visionaries" overlooked is that the market pays for value added. Two yuppies in a living room buying an e-commerce engine from company A and selling merchandise made by company B and warehoused and shipped by company C, with customer service from company D, isn't honestly adding much value. In fact, if you've ever had to outsource a critical business function, you realize that outsourcing is hell. Without direct control over customer service, you're going to get nightmarishly bad customer service -- the kind people write about in their weblogs when they tried to get someone, anyone, from some phone company to do even the most basic thing. If you outsource fulfillment, and your fulfillment partner has a different idea about what constitutes prompt delivery, your customers are not going to be happy, and there's nothing you can do about it, because it took 3 months to find a fulfillment partner in the first place, and in fact, you won't even know that your customers are unhappy, because they can't talk to you, because you've set up an outsourced customer service center with the explicit aim of not listening to your own customers. That e-commerce engine you bought? There's no way it's going to be as flexible as what Amazon does with obidos, which they wrote themselves. (And if it is, then Amazon has no advantage over their competitors who bought the same thing). And no off-the-shelf web server is going to be as blazingly fast as what Google does with their hand-coded, hand-optimized server.

Joel Spolsky
Fog Creek Software
Thursday, February 26, 2004

Yeah, but not all offshoring is outsourcing.

There's a school of thought which says that as long as your org chart stays nice and pointy, it's nothing more than a nice arrangement where the free market pays you gobs of cash to suffer the minor headache of adjusting for n-point-five hours of clock skew and constantly having to "do the needful."  (Which, on a culturally-sensitive note, I hear is something they got from us, but we've since forgotten.)

That Anonymous guy again
Friday, February 27, 2004

The problem of outsourcing/offshoring is a problem of communications and standarts in chain: customer-developer. That's it.

Alan Bekoev
Friday, February 27, 2004

Joel - I would disagree with you about what your core competency is.  I don't think it's developing software, I think its designing software.  There is nothing about either of your products that is cutting edge code.  No fancy algorithms, nothing that couldn't be accomplished by your average programming professional.  The value is in the design: simple, elegant, self-consistent. 

Stop wasting your time coding.  Design more high-quality software for us to use, have some people in Bangalore or Bucharest make it for a fraction of what you pay NYC programming talent and spend your time making sure the product looks and feels the way you envisioned. 

Ken Klose
Friday, February 27, 2004

"Stop wasting your time coding."

Heh--glad someone's cheekiness is here for our (especially Joel's, I imagine) amusement.

The usual rejoinder here (loosely borrowed from elsewhere), I think is "Start your own company, write your own program."

Note that I have not done so myself.  You may also note that I am not correcting Joel on what his core competency is.  Judging from this, apparently my core competency is to be snarky. :)

Rich
Friday, February 27, 2004

Not so fast there. Being in a country myself that wants to get outsourcing projects, I often see huge problems with communication with customers and developers. It begins with talking to customers which is most of the work that has to be done 'on -shore'. Even if everything is spec-ced out it's still often difficult to understand the English in the spec. if your not a native (or very close) speaker. People in radically different cultures just think different.
Communication and programming a product is more than just speccing it out and sending it overseas. Products are fluid for the first few versions so a lot of communication is needed)
You are certainly not able to build a culture of programmers that are willing to program the best code.(coz good code is produced before a statement is written. Not by reviewing and fixing bugs as often happens in off-shore software development. The attitude of the programmer is different and managers have little control over that). I whole heartedly agree with Joel. His core-competency is the spirit and the quality of his team that allows him to produce that product. It's not only the spec.

Jaap
Friday, February 27, 2004

Some people seem to think that you can separate software design from software coding.  Sure you can but if you let coders work in isolation they will find a way to mess up your design.  Worse, they will find ways to mess up your design that will be inobvious until a few versions down the line.  The designers and coders need to be in the same company and preferebly in the same building.

name withheld out of cowardice
Friday, February 27, 2004

"Stop wasting your time coding."

The problem with this argument is that you're assuming a split between 'design' and 'code' that (although believed by most managers & wannabe architects) many developers believe just isn't there.

In reality, a developer spends around 80% of the time designing and 20% actually coding. If you really want to spec the problem down to pseudo-code, then you're solving the complete problem twice - clearly inneficient. Alternatively, you design to a high level, maybe down to individual method names, which still leaves the developer loads of 'design' work, as much real work is actually happening inside the methods.

Try searching the web for the article: 'The source code is the design'.

You seem to be holding the idea that design and code are not just separate, but code is way beneath design in status.

I think that the reality is that design and code are one - and  every really succesful, productive software house I've ever worked for operates like this. Those that disrespect mere 'coding' and have a rank of higher paid, non-coding 'architects' who pass the code on to cheap minions struggle. Every software house I've known that works like this invariably struggles with way over budget projects. They then use creative accounting, time allocation and hundreds of hours unpaid overtime to keep the illusion going.

I think Joel is absolutely right, I'd say that the secret of software development is: "focus on developing software"! May sound facetious, but it's all too easy to get led astray by models, methods & management techniques that do not help the software one bit.

Mantissa
Friday, February 27, 2004

I replied before reading the message about "coders messing up your design".

Yes, this can happen, especially with incompetant coders, but then you have a recruitment problem, not a coding problem. This often happens when management follow the 'hire expensive architects and cheap coders' principle.

But no substantial design ever works without alteration anyway. Design has no feedback, it cannot be proved, it si all just nebulous ideas. The proof is when the code runs (or crawls...).  Frequently, one or two vital aspects that the user requires but were glossed or missed by design, require huge rewrites. "But the Swindon office has it's own bonus scheme different to all the others". Oooops....

Design is all theory and full-time non-coding designers get very defensive about their theories, going to ridiculous lengths to avoid admitting they missed something.

Lets be real and say that too many get into 'designing' and 'systems architecting' because they get to hob-nob with a higher strata of the organisation, rather than any love of the art of software development.

Mantissa
Friday, February 27, 2004

I absolutely agree here with Joel, and with the others that point out the mythical separation between design and coding.

Software Engineering gets into some of its most time-consuming aspects when it pretends that you can design and Spec something WITHOUT code, and then give the design and Spec to a lowly (read cheap) Coder, who can do the grunt work and give you a lovely System which meets your Spec.  The result of this approach is systems which may meet the Spec but don't meet the needs of your customer.

The Extreme Programming, and Agile Modeling schools of thought are trying to address this issue with a 'Design a little, Code a little' approach to both prove that the design can work, and that it will meet the needs of the customer.

Either way, the code generated AND the customer insights gained by doing this are valuable company assets.    These assets should not be given up lightly by outsourcing the code generation.

AllanL5
Friday, February 27, 2004

In my opinion you rarely can separate design and implementation, especially if it's not a totally standard system that you  are going to implement, e.g. when your customers don't know exactly what they want. You have to have a very clear and quality design in order to be able to send the specs overseas for implementation. Most of the time you have a half-baked design when you start coding. You make a prototype, you try out this and you try out that, and you correct your design in the process. After a while you get confident in your design, and then you start coding full-speed. At this point you have stable specs, and you can outsourse things but it's too much of a hassle and overhead at this point, and maybe not worth the trouble at all. Most of the software projects have this kind of loosely structured overlapping design and implementation processes. It's not automated yet, we are still too chaotic.

Anatoli Ceban
Friday, February 27, 2004

Plus your confidence in the design does not translate into THEIR confidence in your design.

You are confident because you know where you want to go.  They do not.  Trying to put your knowledge in words are impossible.

-T.J.

T.J.
Friday, February 27, 2004

Offshoring has it's benefits, but I haven't seen them yet.  Sure, the labor may be half as much (or less) but the time lost in communication problems can reduce those savings from 50% to 25% or even 10%.

I work for a consulting and technology integration services company and we are currently outsourcing all of our development to a team in India.  Our team here handles requirement gathering, use cases and object modelling.  We are always running into stupid problems such as:

A small, but significant, amount of e-mails we send them don't make it through all the firewalls for unknown reasons.

They don't always have enough IP addresses for their computers or IP telephones.  Computing and networking equipment costs an arm and a leg over there.  We actually had to buy a box of memory from Best Buy and have one of our managers bring it to them!

They don't always code in the exact way we expect, so we've started putting all of the javadocs into our modelling tool and generating all the code automatically, then shipping it to them to fill in the business logic, so our modellers/designers are practially coding anyway.

They are slow!  We are sending over one set of design docs at a time every month and they've barely gotten anything done!

Today, after 2 months of working together, the manager in India made the following statement:  "Going forward, I think our [Indian] team needs to start reading the use cases before our design review sessions."  Um... HELLO???  Maybe I'm being an arrogant westerner, but I thought that would have been obvious?!?

But, I must say that the Indians are extremely nice.  At least it's good to know that all my friends and co-workers who have lost their jobs have been replaced by cheap, but very nice people.

Filbert
Friday, February 27, 2004

"Going forward, I think our [Indian] team needs to start reading the use cases before our design review sessions."

That manager is a GENIUS compared to the managers here (In America).

They all believes in writing use cases AFTER the program is completed.

No wonders I'm leaving it for a better job.

T.J.
Friday, February 27, 2004

The thing that makes offshoring so attractive is blindingly obvious - cost.  The things that make it unattractive are fuzzier, involving communication, time zones, the ability of the team to gell, etc.  Which side of the argument will the  VP and his summary spreadsheet wind up?

Kevin Clary
Friday, February 27, 2004

Actually, Kevin, the attractive part is not actually cost.  It's short-term cost.

It's an open question about what happens when all of the "fuzzy" things hit the balance sheet.  It's easy to replace, 1 for 1, all of your US-based developers with developers in India or Manilla or another such place and call that a savings and look good for right now.

The question is what happens 2-3 years down the road.  Bad communications causes code rewriting, delays, etc., which will mean that they either have to delay a release of something or throw more coders at the problem.  A well gelled team will be more productive than a poorly gelled team, which will show up in the balance sheet, long term.  Things like that.

The problem is, people need to close the loop and look at how decisions made 2-3 years ago effect things now.  And that doesn't always happen.

Flamebait Sr.
Friday, February 27, 2004

Yes! I am an Indian programmer...(pause for brickbats).
Nonetheless I agree to most of the comments mentioned above. Specially the idea that core competency should never be moved. I just thought I would give all a perspective from this side of the divide.
First point is that nothing is obvious. I was responsible for the offshoring of the project. I faced brickbats galore for asking questions of the previous developers, the reason being that I supposedly did not know my business. Later I got brickbats for not asking enough questions. The documents I was given was not complete in any sense of the word. The code set went into around 30K to 40K lines of code and the code contained not a single comment. The reply to my obvious question was that comments made the code clunky and was not required. This from developers who were maintaining this code for the last six years. However all this is never considered but every step I make is scrutinised under a magnifying glass and every tiny error is magnified to levels which are ludricious at times.
If a project has been offshored the only way it should be handled is by becoming a complete team, both the client company representatives and the offshore team. This kind of interaction where there is a good level of trust is very necessary to make the team meet it's goals.

Brijesh Kartha
Friday, February 27, 2004

The reason why offshoring is attractive is not really cost, it is because in most organizations, all other teams actively HATE the IT people, and have been looking for a way to get rid of them since the 1970s.

 me again
Saturday, February 28, 2004

You can't split design from code, so don't do it.

Send the whole project offshore. Bring managers from the offshore company to your office and let them work on the design of the project and then let them go back and manage their team of cheap programmers.

Would still be very cost efficient.

What's his name?
Saturday, February 28, 2004

If you can't separate Designing from Coding, I'm definitely going to say you can't separate Coding from Designing. (Can't code too much without a design. Heck, even if the design is in your head. But for the sake of maintenance, please draw the thing out!!!)

How can you build a system without an top level design? How does a developer know what to code without a system architecture showing him what the objects, in's/out's, etc are?  Won't architecting and designing a system help to identify the sub systems, so they can be designed as a modular piece?

You can turn a pretty weak coder into a useful coder if they are given stubs of their code files, and all they have to do is fill in the blanks. (Sometimes you just have to work with sub-par programming talent.)

michael sica (michaelsica.com)
Saturday, February 28, 2004

When talking about "offshoring", I often use a different context to add perspective.

For example, John Grisham writes best-selling novels about lawyers.  Could he offshore?  Say, he plots out the entire novel, sketches out character bios and writes an example chapter or two.  Then, he ships the whole package off to thirty Indian writers who each write a chapter in a month or two.  Using offshoring, John Grisham could pump out six or so novels a year.  Even if the quality impacts sales a bit, he's going to come out way ahead on gross revenues.  Right?

No, and it is pretty obvious why.

First, book writing (and software, commercial software, at least) is not really about finding the cheapest way to get the job minimally done.  Seemingly minor nits can have a major impact on sales.

Second, book writing (and software, too) is not like manufacturing teddy bears or baby cribs were per unit costs are significant.  With an assembly line, a change in the cost per hour of a class of workers or an improvement to the line can save a little bit per unit and each per-unit saving adds up to big bucks when you manufacture a bunch of units.  But, with offshoring in software, you are saving on fixed, one-time costs.  You don't save on per-unit costs because your per-units costs are essentially zero.  So, saving by using offshoring is a lot like saving by taking shortcuts in building your manufacturing plant.  Savings are one time only.  Even worse, if the plant is cheaper to buy but that savings is at the expense of the operating efficency of the plant, you end up losing money, a unit at a time.  To return to software, it is great to get one-time savings in development costs by offshoring but, if that makes your software a little buggier or a little more difficult to use, you lose every time that a sale is a little harder or a little longer than it has to be and every time that your customer sends an e-mail about a bug that wouldn't have been there, otherwise.

Third, software is really a hit-based business.  Similar to book sales, you often either hit it big or wipe out.  John Grisham's books do not sell well because they are printed on better paper than other books or because Grisham's publisher's printer can print them cheaper than some Grisham wannabe.  Other authors have access to the same words: Grisham does not have some super-secret word arranging technology that calculating the most interesting and pleasing word arrangements and then maximizes the word-arrangement quotient for a new book.  Quite simply, a John Grisham novel is desirable to publishers because John Grisham novels are often hits because he's just a little bit more enjoyable to read than the others.  Other authors may cost a fraction of him and have access to all the same resources but their sales are miniscule compartively.  So, in hit-based businesses like software, a hit is worth a 100x or 1000x of a miss.  In this environment, saving on development costs only makes sense if the cheaper alternatives are several order of magnitudes cheaper or the output of the cheaper development is exactly indistinguishable for "regular" development.  In software offshoring, neither of these are the case: offshore developers do not make $100/year (compared to Americans who make $100,000/year) and their output is not exactly identical.  Since neither situation applies, the cost of development is irrelevant: a hit can easily sustain not-very-cost-conscious development approach (even if others have much cheaper costs) and a miss is going to be a disaster, even if it only costs 1/3 as much.

Daniel Howard
Saturday, February 28, 2004

Why doesnt Joel outsouce? becz "The source code is the design", either he has to design it onshore or as the last comment mentioned, design it offshore. The question of doing req spec or HLD here and getting the coding done offshore doesnt arise.

Given the above, how does the concept of "the source code is the design" extend to software maintenance? This becomes very relavant for this discussion since a majority of outsouced projects fall into this category. And on the same note, would it make sense for Joel to outsource maintenance?

maaakri
Saturday, February 28, 2004

I find this topic fascinating, and incredibly close to my heart at this point, as I'm experiencing much of this first hand currently.

Some thoughts:
1.  The metaphor of using book writing for outsourcing is incredibly accurate, and, indeed, there are some real examples who have done exactly that.  Specifically, both Tom Clancy and Clive Cussler have started "writing" books where other authors actually do the bulk of the work... Clancy's "Netforce" series is the perfect example.  And, yes, the quality of the work definitely suffers compared to the books he writes himself.  However, I'm sure he's making a pile of money for both himself and his publisher off of it.

2.  Outsourcing your core competency is really a stupid idea.  If you're a software company, that usually means the development of new products.  It's one thing to outsource code maintenance of mature products or regression testing for bug fixes.  It's another thing entirely to outsource the development of a product that is still in design. 

Interestingly, this analog is easily described using the book writing metaphor: it's one thing to outsource a job for someone to go back through your book and fix the spelling and grammar mistakes that your editor has found for the second version of the book.  It's another thing to outsource the production of the book itself.

3.  The real key to doing remote development *anywhere* is communication: that's true whether you have two offices across the street, or you're outsourcing to India.  The problem with the Indian outsourcing movement is that it creates *SO* many barriers to communication: language, timezone, and culture all get seriously in the way of a successful project.   

I understand the business case for finding "cheap" labour: however, I'd make the argument that it's a *FAR* more intelligent idea to "outsource" to places with similar culture and language.  I'm a big fan of Canada (being Canadian myself), but there are American places to oursource as well: think about moving a development office from NYC or San Francisco to Boise, Idaho or Charleston, SC.    The cost of real-estate and talent is more than halved in those places.  And if you can pick a location that has a good CS school, and get a couple of your internal superstars to head up the team, you'll get a significant cost break WITHOUT most of the "fuzzy" issues that will creep up against your bottom line in 2-3 years. 

M

Michael Murray
Saturday, February 28, 2004

Well said, Daniel.  I'd not thought of it in that way before.

Matt Conrad
Saturday, February 28, 2004

The fact of the matter is, shrink wrapped software isn't outsourced. It's internal software that is being taken offshore and there are ALOT of jobs in that style of software.

Joel isn't ever going to offshore, Microsoft isn't going to offshore. It is the big telcos that are offshoring that produce software that you and I never see.

Michael Gall
Saturday, February 28, 2004

> Microsoft isn't going to offshore

Beg to differ.

"To meet the needs of our customers worldwide, we expect to continue to invest in a technical work force in India to assist us with our expanding product development, information technology and customer support functions," a Microsoft India executive was quoting as saying.

http://asia.cnet.com/newstech/systems/0,39001153,39139020,00.htm

The most dramatic example of offshoring is Quark, which builds QuarkXPress, the most widely used desktop page layout program in the US, probably the world. They moved about all their development operations from Colorado to India. There is still an office in CO but nearly all development and much of the project mgmt is now in India.

anon
Saturday, February 28, 2004

Daniel, you wouldn't convince a company not to outsource.

Development costs may be one-time, but they come in constant succession.

To the untrained eye, that sure looks like running costs.

Alex.ro
Saturday, February 28, 2004

Michael Gall,

All types of software work is currently being sent overseas and this includes some of the shrink wrapped stuff that is being developed by Microsoft, HP, Oracle, Sun, etc.

One Programmer's Opinion
Saturday, February 28, 2004

1. The book analogy is completely wrong.  A person buys the book to read the words.  They want the high-level plot, the lower level plots and the subtleties of language that go along with each word.  Book readers consume the words.  As a user of software, I don't consume the lines of code, I never see them.  In fact my use of the shrinkwrap software never even executes MOST of them since I don't go delving into every feature, just the ones that matter to me.  People buy software for the interfaces.  The User Interface being the most obvious, but in the case of Joel's software the interfaces with source control, or a web server are also relevant.  If these work, work well, work consistently and work resonably quick, I don't give a hoot how ugly the underlying code is, or whether the method names are in English, Entish or all the tongues of Men.

2. When I said Joel's core competency was the design of his programs, I was not talking about the design of his code, but rather the design of his interfaces.  They are intuitive and useful.  That is his core competency.  Joel should paint his interfaces as pretty pictures, describe what his software does in as visual a way as is possible and let a group of inexpensive offshore talent do the rest.  I agree with previous posters on this point: designing the architecture and coding can't be effectively separated.  However, they CAN be effectively accomplished by a group separate from the group that designed the interface.  I know, I've done this as a developer, the UI Gods were mightily pleased when it was done and I delivered.  Joel needs only do design and continuous QA of the daily product, let offshore talent handle the rest.  What makes this possible for the FogCreek, and many shrinkwrap packages is the relative simplicity of the interfaces.

3. Most offshoring (as has been said above) is not for shrinkwrap-ware like Joel's, but for custom backend software like the telcos.  This is WORST type of software to try and separate the interface designers from the developers!  Unlike much shrinkwrap software, *ALL* of the interfaces are complex.  Complex (and poorly documented business rules) mean the user interface is complex, it means that the database (which is another interface) is complex.  Interfaces that integrate to other backend systems are also complex with picayune little details.  These are the reasons this type of software is difficult to develop. Period.  Whether its done here or there.  And doing it there makes it worse because:

Interfaces mean communication.  Interfaces are the point of communication between the software and other systems/users.  Therefore Interfaces are the point of communication between interface designers and developers.

Joel -- Don't listen to the naysayers in the posts above.  Their reservations ARE well-reasoned, but are based on a bad data set as it relates to your software.  Most offshore development is backend business apps and as I've just explained backend business apps are the **WORST** types of apps to offshore.  You are sitting on the best types of apps to move offshore; you and a whole bunch of other small shrinkwrap software vendors.  Advantage goes to the first vendor to realize this and reap the benefits.

As an exercise for the reader: offshore your shrinkwrap software and report back the results.

Ken Klose
Saturday, February 28, 2004

I agree with me again's comment that in many organizations, the IT people are actively hated, or at least resented.  Cost may be the main reason given for outsourcing, but I believe there's also an emotional backlash element giving it momentum.

Ego coupled with black-and-white thinking is a chronic problem in IT, and ego friction costs businesses real money, just like language differences do when off-shoring.  In organizations where IT is primarily a cost center to be optimized, inflexible egos stand in the way of optimization-by-fiat.

Executives are betting big that the geeks are full of themselves to the detriment of the company's profitability, and the geeks are betting that executives just don't understand the true value of what geeks do and will get what they deserve if they outsource.  One side or the other is going to get some hard knocks, but the jury's still out.  Right now it's just a bunch of chest-thumping and positional bargaining.

As an executive, which would you rather deal with: a cost center with surly males half your age that cost as much per person as your highly-paid, well-dressed colleagues?  Or would you prefer a meek, "yes sir, I'll deliver that on time and under budget even if it kills me" cost center?  Which seems like less of a headache?  I don't want a cost center that's passionate about fundamentally changing my business in ways I don't understand.  I don't want one that re-invents itself every few years, demanding that we throw out our old n-tier architecture and move to this new service oriented architecture.  I want a cost center that does exactly what I tell it to do and no more.  And then gets out of the way.

When software is seen as a profit center, you have a fighting chance of doing things right.  My goal is to spend my career working for people who see software as a profit center, but those kinds of places are the minority.

Ken: even if shrinkwrap software is the best to offshore and backend business apps are the worst, the corporate cultures tend to cause the exact opposite decision.  I really think it's due to what suits perceive as profit centers and cost centers, and misguided ideas of how you're supposed to deal with them.

Oran
Saturday, February 28, 2004

Oran: Suits are a shield, they are a very effective defense against common sense and creative problem solving.

Conversly they are effective at attracting more money than the occupant rightly deserves.

JoS Reader: If you happen to be a suit... well... um... then I don't mean you, just everyone else in suits. :-)

Ken Klose
Saturday, February 28, 2004

Outsource the execs to Japan. Just as good leadership; half (or less) the cost.

Weee
Saturday, February 28, 2004

OK, let's try to change some of the variables. Suppose you found a super programmer, the kind Joel likes to hire. He gets along well with everyone, he's brilliant, and has skills you need except...he lives in Australia and doesn't want to move to NY.
But he's really into what your company is doing, so he offers to adjust his working hours for the time zones, set up a live webcam in his office, get a local phone number via VoIP and come to NY twice a year, and he sets his salary demands such that it doesn't cost any more or less to hire him than a local. And this guy's really above average. In the top 1% of people interviewed. Do you hire him?
If the answer is no, why not (from a technical viewpoint)? If the answer is yes, then wouldn't the problems we have with outsourcing now just be a matter of working out the kinks in the process?

MMS
Saturday, February 28, 2004

(I used to live and work in China, then business software consultant in canada, now tring hard  to trun myself into a shrinkwrap indie programmer and english is not my native language, but I still want make some points to you peers)

Most current software business in my understanding are composed in such steps:

(1) find requests or create demands in developed countries
(2) design it to follow developed countries' standards
(3) code and test
(4) document
(5) wrap/distribute mainly in developed countries
(6) support customers mainly in developed countries
(7) Relax and Goto (1)

The whole 7 steps smoothly getting together make a software business rock'n roll.

"Offshoring" only make part of step 3 lower cost under certain conditions. I say "part" because I totally agree Joel's "core competence" point.

Big huge customers are still in developed countries.

Standards are created by developed countries.

Core technologies are invented and protected by developed countries.

Don't worry, my western friends.

I believe only lower level food-chain programmer get long term laid off here(like myself). But hey, I also believe if I upgrade/reload/evolve myself to higher-level food-chain I will be in a good shape like you peers, right?

You may challenge what if developing countries become developed. Well, then money is useless anymore, we live in a utopia earth village (day dream ?)

A chinese programmer
Sunday, February 29, 2004

> First, book writing (and software, commercial software, at
> least) is not really about finding the cheapest way to get the
> job minimally done.  Seemingly minor nits can have a major
> impact on sales.

Often these minor nits have to do with the marketing of the software. Don't believe me? Think Microsoft.

Ralph Lee
Sunday, February 29, 2004

> he ships the whole package off to thirty Indian writers who each write a chapter in a month or two.  Using offshoring, John Grisham could pump out six or so novels a year.

How racist to suggest that Indians can not do as good a job as an american writer!

Outsourcing Giant
Sunday, February 29, 2004

"The most dramatic example of offshoring is Quark, which builds QuarkXPress, the most widely used desktop page layout program in the US, probably the world. They moved about all their development operations from Colorado to India. There is still an office in CO but nearly all development and much of the project mgmt is now in India. "

Quark Xpress - isn't that that program that lost 1/2 of their customre base with their recent version that was so incredibly bad and over schedule?

I love InDesign, will never touch Quack Xpress again
Sunday, February 29, 2004

Ken Klose, you say you have had success designing great UIs. Please share with us examples of these programs and name the situations in which you outsourced them.

Since you are saying you are an expert in these matters, it behooves us to find out the particulars of the expertise you claim.

Programmer
Sunday, February 29, 2004

First, I would comment that even though users do not care about the asthetics of the underlying code, they do care about these things which are affected by the asthetics of the code:

1.  Ugly code can hide bugs.  Bugs irritate users.  Bill Gates says that users don't pay for bug fixes, but buggy code could drive users into the arms of a competitor and ruin word of mouth.

2.  Ugly code is harder to maintain and enhance going forward.  I think that being able to quickly change and improve the codebase is definitely a differentiator for a small software house -- if the code is ugly, it slows you down.


I think that one reason Fogcreek would not offshore design and coding is that one of Joel's core competencies is hiring and retaining good programmers.  If his good programmers are in india, how does he interview them?  Will the offshore management keep the same programmers on the Fogcreek account permanently, or shuffle the high performing people around to a more lucrative contract?  Will they treat them right (pay them well, take care of their professional development, give them a nice office)?

bryan
Sunday, February 29, 2004

Offshoring/Outsourcing, no matter how you want to define those words and differentiate them is an issue that is totally not related the computer field. We happen to be seeing it in the computer field first simply because the people running business in the computer industry are the type of people that take what is happening in North America and want to do something about it. Namely to protect themselves.

Where does this come from? It comes from the same place that Alan Greenspan made the comments he did last week.  The unions have gotten so powerful that even in the fields without unions we have the same problem. Over paying for jobs (i.e. paying someone on an assembly line putting a door on a truck, assisted by a robot 15%+ more than a teacher) results in expenses that make costs rise, combined with doing “favours” for people (i.e. politicians) and laws that make it so that everyone on the globe is breaking a law if a cop wants to look hard enough (DMCA among others!). It is only in the technology industry where products still get better, faster and cheaper on a constant basis. This is the fundamental fact of capitalism and is not unique to technology. (capitalism = free market system of value for value trading, not looting such as Enron and tobacco practiced)  If you look at history costs went down while product quality went up and new product was continually coming out in all fields of the economy until the advent of unions and anti-trust legislation (i.e. pre Standard Oil).  Yes the unions were founded to ensure proper working conditions etc., however that isn’t what they do now and haven’t for more than 100 years.

By the same token, it is not coincidence that the technology sector is the only part of the economy that experiences the same process now.  The technology sector until recently has been the poster child for capitalism and the fundamental proof that it works, unlike other systems that have failed miserably.  In those same recent years, a more socialist policy has evolved.  (and Yes I’m going to piss off Linux nuts but here it goes)  Linux was the result of this socialist policy that has crept into technology. Make no mistake, it isn’t the problem in-and-of-itself, it simply is a symptom of the problem. It’s the belief that everyone is entitled to free software, and that team work is best etc. etc. that has started to erode the system that made the technology industry the last great industry in North America while all others are stagnating at best or failing.  Further, the technology industry had the effect of saving most of the other industries from themselves, because the technology allowed them to do more with less and thus side-step the socialist policies (unions are by definition socialist, brother!)  This saving is quickly coming to an end because there is little more efficiency to be gotten, and the people that create the technology are working as hard as is humanly possible for them to work. They can’t put any more effort into it than they are, thus the dream of socialism is at an end. No one has noticed yet. (Take a look at the price of a car now-a-days and you’ll see…. It’s getting so that a car is like buying a house!)

One large logical fallacy presented by the socialist point of view which has permeated all of the western world, is that monopolies are the result of capitalism. Monopolies are the result of controlling capitalism not unrestrained capitalism.  It’s only when the competitors voluntarily tie their hands behind their back in the way that they do business and another company does not tie their hands, that you end up with a monopoly.  It’s when Netscape chooses to re-write their code from scratch “because it’s a mess” instead of continue to compete to sell product that MS wins. It’s not because people use IE because it’s built in, it’s because there is no compelling product that is better than IE (yes complain now years later about Mozilla being better, but then remember Netscape 4.x for so many years while IE was getting better and better, and faster and faster while Netscape did nothing.  It didn’t matter if there was no IE in the OS, people still would have used IE because it was just better than Netscape regardless of cost, period.) In fact Mozilla proves my point, because now that Mozilla is so much better, a large number of people are using it, and the browser wars are back on, MS just hasn’t noticed yet. (More likely they don’t care because of the technology in Longhorn is going to change the way the internet is used, and the browser, per say, is going to be a thing of the past.)

So what is the point to all of this?  The point is that people like Bill Gates and company rail against this type of thing (did you see his testimony at the anti-trust trial?  This is the reason for it and why he sounded like such a jerk. He believes that he should never have been in the room, not because he didn’t do anything wrong, but because the government has no right to dictate to him how to run his business and tell him that he cannot make the best product possible. Similar to the women’s suffrage movement where many women would not pay a $10 fine simply because they refused to recognize that they had committed a crime in the first place….) and their solution is to say “screw it, I’m tried of people taking and taking and taking without giving value for value. If government is going to tie my hands behind my back then I will go where government can’t tie my hands behind my back.”

Does this mean that programmers are paid to much? No, actually programmers, for what they do are paid too little, but it’s a side effect of the process of getting rid of the rest of all of the rules and regulations of business that prevent business from having property rights over it’s own product (I have the right to sell my product to whom I want to, when I want to and if I want to, in the way that I want to. Government has no power over your property other than that taken by force.  Any law that circumvents property rights is immoral and against the public interest and as a result, an unjust law no matter the perceived evil.)

Consider that MS put VERY little into campaign contributions before their last anti-trust go around.  After?  A LOT OF MONEY.  Business should not have to bribe people simply to be able to do business and the CEOs see offshoring/outsourcing as a way to beat the system at it’s own game rightly or wrongly, short sightedly or not.

This is a war of capitalism. (I.e. the thinkers, the creators the traders of our society) fighting for the ability to create versus the socialist mentality that demands that the rich give to the poor simply because they demand it, that life is a business of favours for no value, that government is to be bought and paid for with a wink, wink and a nudge, nudge and a favour owed, or a photo not published.  To paraphrase Ayn Rand, Alan Greenspan’s mentor: “The creators/traders of the world are the motive power that propels civilization.  Without them, there is no civilization.”  The traders are taking their toys and going home. Whether they have thought about it that deeply or not (I suspect Bill Gates has… and I know Alan Greenspan has.) outsourcing/offshoring is the result.  And yes, this isn’t a good thing for America, because without Traders, America, the greatest, freest nation in the world will not exist.

(BTW, I am a Canadian)

Name Withheld
Sunday, February 29, 2004

- Offshoring of software development will be feeding the development of new businesses in India.  Companies and workers that today are coding for US firms will be forming new organizations competing with US firms tomorrow.  I suppose IBM and Microsoft looked at this and decided that competing against themselves would be preferable.

If the surge of Indian software development had simply started as the creation of new software firms in India that wrote competing products and entered the market head-to-head I think they would be getting a lot more respect.  Compare that to the firms that have the US worker train his or her replacement and then fire the teacher.  It's a whole other feeling.

- "Separate software design from software coding"
I've worked both ways, and both ways can work.  In large enough projects with teams having sophisticated managers and large  budgets, you absolutely have to have a good spec written before you code.  I've even worked on military projects where we developed the system the old fashioned way (design as you code) and then went through and extracted specs from working code.  And then went ahead and completely re-coded the thing (with different programmers) after first massaging and improving the spec.  Megabucks from good old Uncle Sam.

- On the other hand, I've also worked on projects where designers refused to edit the specs after coding started, even when real problems were found.  They insisted on describing the new solutions orally!  Even email was too much trouble for them. Drove me nuts because I still had to read the (wrong) spec for other things.  But we got the product out.

-I worked as a "Coder" in the 1980's on a Honeywell project that used their "Software Factory" methodology for an embedded real-time product.  It was "Write before you code" plus bureaucracy.

We absolutely had to have design and spec written by the mathematicians and engineers who had designed the special hardware.  Analyzing the spec I found subtle errors with huge effects, which I fed back into the design department.  The lesson I took away is that design-before-code works and the "low-level" humble coder is also a designer - you actually can't dumb down coding -  and this produces a better product. Since then I've never been too proud to take a "Coding" job in a structured organization.  What happens is that the "low-level" coder puts his or her energies into making a better implementation and not into discovering what  should have been discovered before.

-Writing code that uses a big API, like .NET or Java  coding, or using a database, has much in common with embedded coding where you use a peripheral chip with its "Register API".  How?  The spec is always incomplete and often wrong, and you have to code by experimentation to find out what the darn thing does.  And what you find out always impacts the structure of your code, not just the content of  a few lines.

You cannot pre-specify that kind of experimental coding, it would be designing the interface to a mystery box.

- When people say  that coding is design, they sometimes mean that coding is discovery.  It is quite normal for the part of the program that  you planned to write to take up about 10% of the time and effort, with unexpected things taking up the rest.  So building it twice, with a re-spec step in the middle that details goals and modules and stubs, can work very well, but only if you can afford it.  Maybe the Indians can.

They say that managing programmers is like herding cats, and the bean counters have always hated us for it.  I wonder if it's true in India as well.  And if not, what does it bode?

Warren
Sunday, February 29, 2004

> he ships the whole package off to thirty Indian writers who each write a chapter in a month or two.  Using offshoring, John Grisham could pump out six or so novels a year.

How racist to suggest that Indians can not do as good a job as an american writer!

I think he said that nobody can do the job of  John Grisham, we are speaking about outsourcing and  Indians are only and example. Spain was another outsourcing country , I'm spanish, and I don't think that 30 spanish writers can do the job of John Grisham.

The problem here is that  nobody knows if  IT  it's and art or an engenieering.  If it's and art then it  can't be oursourced.

José María
Sunday, February 29, 2004

It would be interesting to have a look at the statistics on how many outsourced software development projects failed. Is the ratio of failures the same as for the non-outsourced ones? Do you put your project at a higher risk if you outsource it (or some critical part of it)?

Davidson
Sunday, February 29, 2004

"One yuppie in a living room ... with a discussion board, mentioning a comment made by reader A in reply to a post by reader B commenting on reader C, with insight from reader D, isn't honestly adding much value. "

Hoping you don't outsource all the blog from here Joel.

;)

(just kidding)

Patrick FitzGerald
Sunday, February 29, 2004

IBM for example, still a world leader in software; I think one needs to realize that more than half of their employees work outside the U.S. and yet they seem to have no trouble retaining centralized control.  What this says to me is that you should never delude yourself into thinking that all the best programmers live in your home town, and if you as a corporation are going to walk the walk when you say "We endeavor to employ the best", then it's mandatory that you expand your search area.  Don't let simple logistics, like how to interview remotely, get in your way.  Change whatever processes need to be changed in order to make it work.

With the Internet being what it is, I think there is no excuse to need face-to-face anymore.  Many intelligent and professional people can do great work without the distraction of long lazy lunches at Salad Daze.  I haven't had face-to-face in two years and only now am I getting the recognition I've wanted during a 30 year career.

Anon Cow
Sunday, February 29, 2004

Canadian...

Linux is not the result of a "socialist policy" that has crept into technology and it isn’t a "symptom of the problem" -- it's the market's reaction to monopoly abuse and nothing more than that.  It's a perfectly natural reaction to market conditions and your own argument supports that.  If not for Microsoft's monopoly abuse that has resulted in poor quality at exorbitant prices, Linux would just be a hobby toy today.  Clearly, it's a lot more than that.

Companies like HP, IBM, Red Hat, SuSE, etc. are using Linux to provide solutions not because it's "socialist", but because they can maximize capitalist doctrine by eliminating Microsoft from the customer-supplier equation.  Yes, this is indeed a war of capitalism and as you say, monopolies are capitalism corrupted.

If Microsoft wants to be King of the Hill by bullying instead of playing by the rules, then everyone else just gives up and finds another hill to play on.  You can't beat a shrink-wrapped PC software monopoly by conventional means, so you change things so you don't need shrink-wrapped PC software.  It's standard playground tactics.

By the same token, if North American programmers want/need to make six figure incomes, then employers will look elsewhere in order to eliminate them from the customer-supplier equation. It's only natural.  If one employer does it, then others must do so in order to compete on price.  Globalisation is inevitable.

Best regards,

Anon Cow
Sunday, February 29, 2004

Daniel, John Grisham's costs go to zero the moment he publishes.  That isn't true of a programming staff -- development is an on-going and recurring cost to a company, unless they are all laid off the moment a product goes gold. 

For that reason, savings are actually quite significant when offshoring software development.  One doesn't necessarily relinquish control of their product design and therefore profits when they offshore.  Head office and sales remain within the original country, don't they?  One could argue that sales is the only profit generating function of any company and everything else is just a cost center.

Anon Cow
Sunday, February 29, 2004

I will contribute my individual experience with offshoring.

Two years ago, I had a friend, a recruiter, who decided to start his own jobs web site like Monster.com.  He outsourced to India.  Six months later, I talked to him again and innocently asked, "How'd it go?"  He replied: "$100,000 down the drain."  "Really, what went wrong?"  "Well, it worked but it had bugs.  When I tried to hire people to fix the bugs, people said the code was really bad and refused to work on it.  So, I got my brother and a friend of his to re-write it from scratch."  (Oops, he violates Joel's "no re-write" policy so maybe we take his experience with a grain of salt).

The wife of a co-worker works at a world-leading semiconductor manufacturer.  They want to outsource everything to India.  A few months ago, I asked, "How's it going?"  "Things are a little bit behind schedule but going ok."  Just recently, I asked again and was surprised to hear: "We're recommending to shift the entire project back to the U.S."  "What went wrong?"  "Well, they would always deliver on time but, to do it, they'd always drop features.  When we asked them about it, we could never get a straight answer.  They were never up front about problems; they would just pretend that everything is ok."

Finally, I work for a company headquartered in Asia.  When I go over to visit headquarters and talk to the engineers, they always talk about what long hours they work, much longer than I ever do.  However, when I get the code from them, it is all messed up: their code is overly complicated and buggy.  For example, their C++ code has all these methods with the same name but they are completely unrelated; they don't appear to understand polymorphism but simply noticed in books that a lot of methods in C++ have the same name.  They also have methods called "New" (yes, capitalized) so they always allocate classes by saying: "pObjs = CClass::New(4, sizeof(CClass));" which means 4 objects, each of the proper size rather than just saying: "pObjs = new CClass[4];"  So far, I've only been able to debug optimized code (rather than with no optimizations) because the project file is so complicated with lots of hardcoded dependencies.  Although I've never had the nerve to ask them, I really wonder: "If you guys work twice as much as me, how come you aren't twice as good?"  As near as I can tell, they spend so much time trying to overcome the unnecessary complexity and inconvenience of coding their projects that they never really have time to step back to consider how to do it better.  I'm just guessing but it looks like they just perceive it as: "There is 10,000 lines of code to write.  I write 100 lines of code per hour so I better just jump in there and put 100 hours in to get it all done.  Grind, grind, grind."  It is like "mindless mental labor" in the same way that digging a hole with a shovel is "mindless physical labor."

Those are my three experiences with offshore labor.  They are obviously too few to draw a general conclusion from.  But they do guide my thinking.

Name withheld to protect job
Sunday, February 29, 2004

It's a new world.  It takes special and specific skills to manage people remotely, and not everything works by remote.  One still needs trustworthy supervisory and 1st line manager people on site.  One needs to "keep a finger on the pulse" because working remote doesn't mean trusted to operate autonomously.

Consider offshore personnel as you would a silent partner in another city-- if left to their own devices they will either steal your store, or they will fade away into obscurity without producing anything.  New skills are needed in new worlds and not everybody is ready with those skills.

Anon Cow
Sunday, February 29, 2004

Another paper that talks about the interplay between design and coding is "What is Software Design" by Jack Reeves, published in "C++ Journal" back in 1992.

http://www.bleading-edge.com/Publications/C++Journal/Cpjour2.htm

rwh
Sunday, February 29, 2004

We have successfully "offshored" one of the products in our company, a small networking software startup located in New Jersey. I was the manager of this product and here are a few thoughts on my experience.

To begin with I should say that I am a naturalized US citizen of Indian origin. This certainly gives me an advantage in dealing with Indian since I understand the background and culture of the developers much better than an average American.

The product that we had developed in India is peripheral to our main product. Development on our main product  continues right here in New Jersey and will not be outsourced.

Our partner in India is a large offshoring company that is very used to dealing with clients such as ourselves. They are, incidentally, many times larger than us! We have had a stable team of about 6 developers assigned to our account.

When we launched the product, they sent two of the developers over to the US. The developers spent two intensive weeks functioning as a part of our team. during this time, we wrote some code and design documents. We got them setup with access to CVS, GNATS and our project management tools.

Development has proceeded fairly rapidly after they returned to India. I speak with them at least three times a week.  Lots of email and IM helps as well.

Brown Bear
Sunday, February 29, 2004

Here's what to do if you are think of offshoring.

1. Offshoring is not  a PAY AND FORGET operation.

2. If you think IT is your core competency, then build your own team overseas. Do not outsource it to other "OUTSOURCING SPECIALIST" company.  I repeat "Build your own team".

**Start your international branch**

3. Build your team from scratch, and stay overseas for three months and just train the hell out of your overseas programmer to your company culture and discipline.

4.  Any great and trained minds overseas are more or less equivalent to its counterpart in the US.

Summary: If your software is critical for your company, build an international development labs. 

How? Just hire a well travelled kids out from college to start the groundwork for you. Once the set up is done, send your  big shots over and stabilize the international company.

Repeat.

Dody Gunawinata
Sunday, February 29, 2004

> > he ships the whole package off to thirty Indian writers who each write a chapter in a month or two.  Using offshoring, John Grisham could pump out six or so novels a year.

> How racist to suggest that Indians can not do as good a job as an american writer!

Maybe there are some Indians that can do equally good or better job, but the problem is finding them. Even in America it is not trivial to find authors that match the style and quality of writing of  an author of this level of fame.

Anonymous Coward
Sunday, February 29, 2004

Regarding core competencies -- it is also very important to recognize that IT is a core competency in cases where it isn't apparent.

Some insurance companies for example, don't think IT is a core competency; they sell insurance, right?  But when you analyze their cost structure, you find that the reason why one company can charge 20% less for a policy with the same coverage yet still have a bigger profit margin is that one has better IT than the other, allowing them to manage the same number of policies with less people.

Ultimately, the difference IT capabilities is often the biggest reason for the difference in the price, features, and quality of a product or service.  Those who think they can outsource IT because their company doesn't sell software may be very sadly mistaken in the long run.

T. Norman
Sunday, February 29, 2004

Here in Adelaide, South Australia we are also starting to be hit by off-shoring:

a stack of IBM developers have lost there jobs as IBM prepares to move the work off-shore to India

new companies are starting up that send all their development work off-shore, just doing the consultancy and marketing work here


Off-shoring is a scary trend, and unfortunately we will see a lot of businesses going this way, as they are ruled by the bottom line.
Just look what happened to the fashion industry, can you name any labels that are manufactured locally?!

Sonya Weiser
Sunday, February 29, 2004

For example, John Grisham writes best-selling novels about lawyers.  Could he offshore?  Say, he plots out the entire novel, sketches out .....

... John Grisham could pump out six or so novels a year.  ... he's going to come out way ahead on gross revenues. 

John Grisham may not but Tom Clancy does. I have a copy of "Net Force" where Clancy develops the themes, hands it off to another writer.


First, book writing (and software, commercial software, at least) is not really about finding the
cheapest way to get the job minimally done.  Seemingly minor nits can have a major impact on sales.

In fact I have "Rainbow 6" as well. From the book has flowed Rainbow 6, Rainbow 6, II and III computer games.
Clancy details the plot, major characters and themes in the book. Game designer translates this into a playable game,
engineers create an engine to *realistically* translate the book into a game.

Look out for more of this (writers creating a story design,  technologists translating it into games). Hollywood is interested as games outstrip traditional films. So in a round-about way books  can be outsourced.

peter renshaw
Sunday, February 29, 2004

" ... “The creators/traders of the world are the motive power that propels civilization.  Without them, there is no civilization. ... "

hmm I like this one  "first they ignore you; then they fight you; then you win." ( http://www.linuxquestions.org/questions/archive/8/2001/08/3/5524 )

I'm no commo. I just will not let anything get in the way of reliable software - including economics. 

peter renshaw
Sunday, February 29, 2004

Joel:

WRT> core competencies.. read Clayton Christiansen's Innovator's Solution:
<Why sticking to core competencies is a bad idea: "It's dangerously inward looking. Competitiveness is more about doing what customers value than doing what you think you're good at.">

WRT> out sourcing: the real trend that an entrepreneur should have picked up is that "open source software platforms + internet + distributed development teams" will radically change the equation(s) wrt. software and IT products development and delivery. All this stuff about design vs. coding etc. is somewhat beside the point. What gets developed is a software product and if the manufacturing of apparel can move to China, and the manufacturing of semiconductors to Malaysia -- why not software to India, Russia, Ireland and Israel? Are there going to be problems and negative examples -- heck yes, but people who figure the problems out first are going to have first mover advantage. I recommend Berenson's "The Number" if you are interested in why this trend won't be easily dislodged -- it talks about what drives publicly traded companies these days, and has for the past decade.

Does this mean ALL programming (or ALL interesting, high-value -- pick your adjective .. programming) will move off shore? No.

Disclaimer: I'm a US citizen of Indian origin. And yes, these issues  keep me awake at night, as I suspect they do a large number of the other posters here.

Sundar
Sunday, February 29, 2004

Some food for thought....

Here's a real-life example of offshoring that's occurring in Australia.

Telstra, Australia's main telco provider, currently outsources pretty much all of it's IT work to IT services companies like IBM GSA.

Due to fierce price competition from Indian firms like Infosys that have significant offshore components to their development teams, IBM has been forced to renegotiate their contracts with Telstra and bring down their costs by in turn using IBM staff based in India.

This issue is a very hot political potato in Australia as Telstra is still majority owned by the Federal government - that is, the "Australian people". So sending Australian jobs overseas is not going to look good coming from a mainly public owned company. Telstra have been dodging the bullets by claiming "No *Telstra* jobs will be sent overseas" - note the emphasis on Telstra jobs, they are rather quite on the topic of already outsourced IT jobs going overseas.

The interesting thing to me about all this is that the pressure to offshore IT services seems to be based on cost. Why is this interesting? Well, some background history about Telstra and it's ITsetup...

In the early 90's Telstra did most of their IT in-house. Then the likes of IBM came along selling their outsourcing model and convinced Telstra they were better off outsourcing all their IT to a IT services company. IBM GSA (Global Services Australian), which is owned by both IBM and Telstra, was born.

Now the numerous expert staff, with a wealth of knowledge in Telstra systems, did not disappear. They were "transferred" from Telstra to IBM GSA. Then contracted back to Telstra .... at a much higher cost! Overnight, they went from being owned by another company and being charged out at much greater rates back to the original company. Same job, same desk, same environment.

I guess my point is that my pushing the outsourcing model in the first place, the likes of IBM laid the groundwork for offshore outsourcing. After convincing companies to outsource based on “core-competency”, it's only natural those companies would eventually look upon IT services as a commodity to sell off to the lowest bidder - where ever they may be based.

Anon (I may need a job with Telstra/IBM one day!)
Sunday, February 29, 2004

Sorry if I didn't read every comment here but to add a few more data points

*) Ulead (www.ulead.com) has been outsourcing their development for a while now, since at least 1996.  Whether or not their products are any good I'll leave to you.

*) How about this example of outsourcing.  Movie effects and animation.  Most TV animation is now outsourced.  The directors make storyboards and possibly keyframes and they hire Korean animators to do all the busy work.  Most movie effects are outsourceds as well, currently to studios in the states but the effects are done buy separate companies.  Soon those companies will instead be in Taiwan, Korea and possibly Japan.

Gregg Tavares
Sunday, February 29, 2004

Is Ulead offshoring work to one of their own offices located offshore, or are they sending work to an offshore firm?  There is a big difference.

T. Norman
Monday, March 01, 2004

++Is Ulead offshoring work to one of their own offices located offshore, or are they sending work to an offshore firm?  There is a big difference++

Not from the perspective of my Big Fat American Paycheck.

Ken Klose
Monday, March 01, 2004

While in India (circa 1999) I worked in development for a startup organized such that the entire engineering ops were in India. The only American personnel were marketing guys and the senior program managers. This arrangement worked pretty well, in 4 years the company was able to create enough value to sell itself off to the highest bidder. Happy result for everyone involved. The founders and senior staff have since moved on to their next startup.

My experience leads me to believe that the truly secure job is that of the competent program manager. People who can reduce business problems down to specifications will be in great demand in the coming years.

For people who wonder why Microsoft doesn't outsource more, I have a simple explanation. Outsourcing usually picks up when a company is undergoing hard times either financially or while recruiting talent. Since I have to imagine Microsoft does not have to worry about either, it can afford to take a more relaxed approach to outsourcing.

Alok
Monday, March 01, 2004

Me again and Oran are hitting the soft spot. In many cases the IT department is seen as a kind of "Middel East" zone : if we could only commoditize their natural resources we would be so out-a-there. Cost is often not the primary motif on the hidden agenda, but it is a great excuse.

Just me (Sir to you)
Monday, March 01, 2004

"Make me one with everything" by Chris Wenham. Raises a smile:

http://www.disenchanted.com/humor/zen-hotline.html

Ben Poole
Monday, March 01, 2004

Here is my own experience with offshoring. I am programmer working for Russian company located in Novosibirsk.  I am participating in a long run ousourcing project (it lasts more than for 3 years now). Our company does software design and implementation while our counterpart do marketing, sales, high level pecifications and provides feedback from users. It looks like successfull project (we have already released several versions of our software) and our partners are satisfied with it. In short our case supports opinion of Dody Gunawinata that in order to not to run into miscellaneous weird problems you have to have YOUR team you outsource to. Only difference is that we had already  been mature development team before the project started. Not everything here is cloudless of course.

When I joined this team almost 2 years ago, the meetings with discussions of a specification for new milestone used to turn into have-a-fun parties because there was too many misconceptions and contradictions in terms. (Russian programmers have a habit to express arrogance with respect to others. But dont be offenced, you can made them otherwise by showing good code :) But now these meetings are more serious and practical because our partners learned to write more deliberate and clean docs. We in turn now certified for ISO 9000 and pay more attension to regression testing. All that said this project is not going to the drain.

One major obstacle in the work is communication. Imagine, user founds a bug, reports it, it is sent by our partners to us, being fixed, update is sent back ..... All it tooks a lot of time. Another "use case" is specifications discussion which consumes time too (you can not just go to the next cubicle and chat for a minute to solve problem).

Here is another digression about outsourcing I can't help making. In our project is a lot of code which which have required from me intellectual efforts to create state-of-the-art algorithms I can proud of.  But. Not me not even our company is mentioned in "Credits"  of the program. This is disappointing and hardly can be covered by wages.  Money are not everything :)

Petr Gladkikh
Monday, March 01, 2004

Finally, vindication!
All this talk of code being inseparable from design reminds me of CP101 (first year computer science) when to get full marks we had to hand in the pseudo code we'd written "before" beginning to code.
Since the assignments were all in Mac Pascal, and Pascal is pretty pseudo-code like to begin with, we used to load our code into MacWrite and remove all the semicolons and parentheses.
Finally I can stop feeling guilty about this.

rhubarb
Monday, March 01, 2004

First programming and manufacturing are not in the same category.  It's not illuminating to say "because manufacturing can successfully move offshore, so can programming."  It's misleading.  That doesn't mean programming won't go offshore.  But it is different.  There's no need to communicate clearly with assembly-line workers.  In software development that need is paramount so the set of countries where offshore development will succeed is reduced by the need for a large number of fluent english-speakers.  India and the Phillipines are in.  Russia, China and Vietnam are out.  It'll take a few years for purchasers of outsourcing services to figure this out.

Second, there's a missing distinction or two.  ISV's creating software products do not seem to be going offshore in the same rush as internal corporate IT departments.  Corporate IT departments usually should NOT develop custom software from scratch.  Usually they do better when they buy software from ISVs and integrate various packages with custom programming.

I'm running an ISV.  I'm not going offshore.  It doesn't make sense to save the money at the expense of faster, more customer-responsive development in a somewhat well-run on-shore programming group.

Jim
Monday, March 01, 2004

[++Is Ulead offshoring work to one of their own offices located offshore, or are they sending work to an offshore firm?  There is a big difference++

Not from the perspective of my Big Fat American Paycheck.]

There is a difference in the American Paycheck.  Those who outsource to an offshore vendor have a high probability of failure compared to those with their own offshore IT department.  That failure leads to them shrinking or closing their business in the long run, meaning there will be fewer American programmers (or none) working for them.

T. Norman
Monday, March 01, 2004

I have managed off-shore projects, some successfully, some not so much. These are some of the reasons why it can succeed:

1. The project has a long time horizon.

2. Typically, the program is in second or third generation.

3. The technical choices are well understood.

4. There is a lot of QA that needs to be done.

Some of the myths:

1. Programmers in India are not as talented as here. [Wrong].

2. Communication is very difficult. [Not more difficult than between teams of different culters here; in a long term project, teams evolve to understand each other best.

Things that are difficult to outsource

1. Innovative software -- too tough to convey what we need.

2. Prototypes involving customers

3. Extreme programming style programming unless there the client is willing to place a person on location in India.

Unix guy
Monday, March 01, 2004

My employer had outsourced a lot of our software development to people in Hungary and Russia for years.  I inherited all of this code when I started here.  It was a mess of problems.  We've spent the past two years essentially re-writing the stuff they did.

Part of the problem was that my employer didn't do a good job writing good specs and requirements.  We didn't have any software people here who could accurately direct their work, and judge the quality of their software.  Your requirements documents HAVE to be perfect, expecially when you're crossing the langauge barrier.

Also, I was shocked at some of the stuff they tried to pass of as "release ready".  They didn't even put version numbers in their software!  Or, if they did, they kept calling it "version 1.0".  They'd do three or four releases using the same version number.  Try figuring that out.  "Do you have version 1.0 from Oct 5, or do you have version 1.0 from Dec 12?".

They did no form for formally documented test procuedure.  And there were some pretty gaping bugs.  It looked like they tested about 1/3 the functionality of the product, if that.

No consistency from project to project.  Every one of the overseas employees had their own way of doing things.  So none of the projects had any kind of consistency.

They had this desire to reinvent the wheel, especially with their Linux code.  Rather than use the services provided by the OS, they put together this massive "compatibility" library that didn't gain us anything, except a headache.

They would randomly switch development environments.  Half of the project would be written with Borland, the other half was Visual Studio.

Technical support was impossible at best.  You'd send them an e-mail, wait two days, and then hear "it's not a problem".

Comments would be in Hungarian/Russian, if there were any.  You were lucky to see one comment in 500 lines.

They'd stick README files in practially every directory of the project, and they'd be empty!

Change logs...  what change logs?  Why do we need those?  Oh wait, that's right, everything is version 1.0!!!!!

They'd send us an exported source tree from their CVS server, but would they give us a copy of the CVS repsitory?  Nooooo...

They had no idea how to layer a design.  Everything talked to everything else.

Bug tracking....  (snicker)

I know they should have been better managed by us here, but they seriously didn't seem to have any clue how to write professional code.

Outsourcing has left a bad taste in my mouth.  The support headaches have more than offset any cost savings.  Rather than outsourcing any more, we tripled the size of our software department here.  Things have never been better.  We've learned from our mistakes.  Our software department grew up.  Customer complaints are way down.  There are fewer bugs, and they get fixed faster.

Myron A. Semack
Monday, March 01, 2004

"I inherited all of this code when I started here.  It was a mess of problems.  We've spent the past two years essentially re-writing the stuff they did."

Muron,

isn't that typically the case for inheriting code? Seems to me this is not restricted to outsourcing as such.

(btw, love your blog. Keep it up!)

Just me (Sir to you)
Monday, March 01, 2004

Myron. Typo. Sorry.

Just me (Sir to you)
Monday, March 01, 2004

>Some of the myths:
>
>1. Programmers in India are not as talented as here.[Wrong].

IMHO, both sides of this argument are used to justify a given position. In other words, pro-offshoring people will say, "All U.S. programmers are bad (for whatever reason) so you should outsource to India", and the other side says, "All Indian programmers are bad (for whatever eason) so you should keep the work in the U.S.".

Something to think about next time you read an article either for or against offshoring.

Semi-Anonymous Coward
Monday, March 01, 2004

What gets developed is a software product and if the manufacturing of apparel can move to China, and the manufacturing of semiconductors to Malaysia -- why not software to India, Russia, Ireland and Israel?

You're not comparing like with like, don't worry, many people supposedly managing software projects can't figure it out, either. Software is NOT a product just like apparel. In apparel, and semiconductors, mass manufacture is the big cost. In software, it don't take long to run off thousands of identical copies - hence why everybody can pirate software, but we can't all pirate apparel.

Software development is an intellectual, creative exercise - from requirements to test, whatever order to you do them in. And therein is your're cost.

Software also has this weird aspect of code & visible app. The app *may* appear fine, yet may be unmaintainable due to the source code behind it. Parallels with apparel? No way!

Why can't we use offshore solicitors? The ones round here cost way too much. The law is just a set of logical statements, like a program. Perhaps the entire legal process could be moved offshore. Or offshore estate agents who charge a few % less than local ones?

Software is not a straightforward, manufacturing process, wherever you do it. Offshoring may just give you a little more money to play with to fix it when it goes wrong.

Mantissa
Monday, March 01, 2004

I love reading Joel. Have been reading it for along time.
Let me quote a wonderful part from this article.
"The only exception to this rule, I suspect, is if your own people are more incompetent than everyone else, so whenever you try to do anything in house, it's botched up. Yes, there are plenty of places like this. If you're in one of them, I can't help you."

This is so true.
Let's take hosting companies as an example.
How many of the hosting company owners have experience in server management or customer care.
Have been in business for so many years I have learnt a good rule. We all outsource most of the parts of our work.
1) We take servers from an NOC.
2) NOC takes bandwidth from carriers.
3) We depend on hardware from other companies.
4) We use helpdesk software not written by us.
5) We use billing software not written by us.
6) We outsource support.
The list just goes on...

For a hosting company a server uptime is a lot more important than customer support. Without the server being up for long it would not be worth having customer care in the first place. But then we depend on abc company to manufacture the servers for us. We depend on somebody to host the servers. We depend on yet another group to develop the OS. And then top it with a control panel written by somebody else.


Here's another interesting one from Joel
http://www.joelonsoftware.com/articles/Peer1.html
Here he moved his inhouse site to professionals (let's say an offshore location).

I do not say outsourcing is the solution to everything. It is best described by Bill Gates in his book "Business at the speed of thought". He talks about how to add value to products and services.
Also, even when one outsources, the idea is to work as a team, not give out a portion to a group and not bother about anything after that.
If anybody thinks that hosting is all about taking servers from a datacenter, adding a billing software and control panel to it and get the support done by an outsourced company he is all wrong. If it were true we all would have been millionaires.
One has to work closely with all these as a team.

The best team wins... :-D



Have a nice day

Regards
Amar


P.S.  Boeing the aircraft maker outsources it core competency. The engine is made by GE.  :)

Amarjyoti Krishnan
Monday, March 01, 2004

Just me,

You're right, it is pretty rare to inherit a project that isn't a disaster :-)  However, these were particularly bad.  Not the worst I've seen, but still pretty nasty.  When I first looked at the code, I seriously thought someone was playing a practical joke on me.

Needless to say, we now do code inspections :-)

BTW, thanks for the comment about my blog.  I'm past due for a posting.

Myron A. Semack
Monday, March 01, 2004

I think something that a lot of the posts are missing is the human factor of outsourcing.  Could it be that Joel might actually like his employees?  Maybe the realization of his dream, Fog Creek Software, involves the collaboration of people he's grown to like or new people he'd like to know.  This is especially true in small businesses where every owner of a company doesn't have visions of grandeur of becoming larger than, say, Microsoft or General Motors.  People can find enjoyment at their jobs and it doesn't always involve cutting every cost - sometimes it involves the social aspect of befriending people in a work atmosphere and getting facetime with those people on a daily basis.  This is a hard cup to fill if face time always has to be over video teleconferencing or whatever you use to contact your lower paid workers across the world or in a building a few blocks away.

Charles Feduke
Monday, March 01, 2004

Amar,
Boeing's core compency is the Air Frame, not the engines (which depending on model is either GE, Rolls-Royce or Pratt & Whitney),  At this time Boeing and Airbus are not outsourcing whole airframes (major assemblies maybe but not the Whole Air Frame)

A Software Build Guy
Monday, March 01, 2004

I saw it mentioned once but nobody seemed to notice.  Writing software isn't Fog Creek's only core competency.  The other is "finding the best programmers available."  Having very skilled programmers allows you to get more work done for less (high output developers are usually more cost effective), have higher quality products, develop new products at the drop of the hat, etc.

While I'm sure it is true that people in India can be just as good at developing software as people in the US, there is one huge difference when you send the work halfway around the world: control.  How can Joel maintain his high standards for employees in an office in India?  Sure you run into the same problems with any large multi-location organization, but we are talking about a small company like Fog Creek here.  I'd argue that it simply can't be done in any cost effective way.

Manufacturing and software development really can't be compared in any way (at least currently). 

MikeMcNertney
Monday, March 01, 2004

> he ships the whole package off to thirty Indian writers who each write a chapter in a month or two.  Using offshoring, John Grisham could pump out six or so novels a year.

Couldn't you have at least chosen someone who can write? As far as I can tell this is how Grisham produces books - certainly they read that way.

Talk about an unconstructive analogy.  Book publishing has long since pushed out any creativity in favor of predictable, reliable output by hacks like Grisham and Tom Clancy.

And its the same impulse! Rich moronic publishing executives got tired of watching star authors steal all their profits. So they developed systems to produce cheap, reliable and good selling (but noticeably BAD) books.
Bestseller lists fill up with nearly indistinguishable books and  people who have never read any good literature somehow think Grisham is a good writer - because he is compared to
the rest of the idiots.
Then they wonder why people stop reading books. Then their industry declines. Then they fire everyone and blame the authors.

Owen Byrne
Monday, March 01, 2004

"Manufacturing and Software Development can't be compared...".  Sigh.  Of COURSE they can be compared.  They're compared all the time.  People just ignore that the two activities have so little in common that most comparisons are bogus. 

Most of the Big M Methodologies are attempts to leverage the lessons learned in manufacturing into software development.  That's why people think outsourcing is a 'Good Idea', because it has 'worked' so well for manufacturing.  They don't see (and it's not obvious to them) that the two activities are so different that they aren't going to get the expected benefits.

What we need are good examples and talking points that clearly demonstrate why Manufacturing and Software Development are different, so comparisons between the two can be made more valid.

AllanL5
Monday, March 01, 2004

I read most of these messages. While I find them interesting, I think they all miss the point. I cannot say whether outsourcing will work or not, but the reality is programming job are moving offshore. They will continue to move offshore. As the barriers decrease, the rate will increase. Why? The US does not have a maintainable competitive advantage when it comes to programming intelligence. Programming is a commodity.

I tend to believe this is a zero-sum game. Look at NAFTA, this is the fate of the programming community. As labor becomes more fluid, companies will find ways to exploit these differences. The greater the difference, the greater the explotation potential, the greater the pressure for exploitation. I think it behooves most of us to look for niche markets, like Fog Creek. A niche market exploits specific labor barriers. Argue all day about whatever talent you think Joel has (and I think he is talented) he has no advantage against any person from any other country other than those intrinsic to himself. I do not want this to be a rant on micro/marco economics, but programming is not a part of this equation.

It is disheartening to be on the wrong end of Moore's Law.

Sean
Monday, March 01, 2004

So when will we start offshoring the pointy hairs?
You know the bean counters and CEO's! I would think that people in India or China have these basic counting and management skills! Right!

Offshoring is like the perfect "Dilbert" comic strip. :-o

You might not want to believe it; but one day everyone in America will be working at Wal-Mart! Except that is for the few pointy hairs that own it. ;-(

Thank god for small business like "Fog Creek"!

CF
Monday, March 01, 2004

Sorry my english is not well enought to express myself with clarity but i hope that you can understand me (I am from Spain...) I agree with the great part of the message of this  forum... It's quite sure... great companys have been moving to new places.. but it is only for great companys not for small business software.. Certanly I can't see my company kick off the program departament only to moving it to India to make it cheaper than it is now... Je je je it's seems to me a joke.. Great companies,Microsoft,Oracle... companyes where the quality and the cantity(cantidad y cantidad,amigos) of their software and the millions of $$$$ that they produce can be duplicated or triplicated... Sorry for Joel but the only place where i can see him moving to is to Israel...and sorry?¿ ;) many great companys and many great programs have raised from there...
I agree with the comment above my message small companys,familiar products easyer to maintain it all what we could obtein...
And talking about Outsourcing.. i hope that no one censure me but... OUSORCING SUCKS... to great companyes hvae been working in my company to develop a erp,crm... neither have finished and have left the job before finished it...(i have to thanks in part because i join this company for this..) We have left millions in this and now only two persons have been building the system that two great companys(Deloitte Touc,Tragsatec) have abandondo without any kind of documentation,information,design.... Signing a contract with an outsorcing it's a bad thing....
That's all thanks Joel,Thank's people who has wrotte here a message i hope that no one of my words have hurt an outsorcing developer ;P. And again sorry for my english...Adios y a cuidarse amigos..

Pedro Garcia Rodriguez
Monday, March 01, 2004

Outsourcing has apparently become the newest Silver Bullet in producing functioning software at the lowest cost possible.

It's not.

If you cannot create a high performing IT department/team here in the US, you cannot create one overseas. You will end up with a cheaper underperforming IT team offshore. It's as simple as that.

But here's the reality. Every company needs to find ways to maximize output given resources and outsourcing is a very appealing option (You can get motivated and experienced developer for $20,000 a year overseas. Not so in the US. Cost of living are simply much cheaper in many countries)

In the end, the essence of going international is to find the best talent you can get (global talent supply is much bigger than US alone) at the most cost effective price.

Outsourcing/internationalization is inevitable. You will find plenty of failures and horror stories of outsourcing in immediate future, but that doesn't mean the tide will turn. Mistakes are simply part of the learning curve.  People will learn and adapt

If you are a US citizen, emulate what the Indians and Russians(and others) have done in the past decade. They travel in search of the most interesting and profitable work anywhere. Be travel ready.

Dody Gunawinata
Monday, March 01, 2004

GREAT discussion. While thinking about all of this, the BEST ANALOGY I have ever encountered popped into my head -- and I just HAVE to share it. "Programming" or "developing", as we normally use those terms, means the act of building software. But it actually includes TWO things (at least) -- 1) Imagining what to build, and 2) Actually creating the code which implements your imagination. Note, though, I'm NOT talking about requirements vs. coding. Even if someone hands you perfect requirements, you still have to IMAGINE how to implement it. Will you use a linked list or a hashtable? Will you use the Command pattern, or is that too much overhead?

SO HERE IS THE ANALOGY -- "Programming is like PAINTING ART, in that it requires the creator to envision something, then attempt to create a tangible manifestation of that something, then modify the vision, then modify the manifestation, in tight little iterations until the project is complete."

Think about it. Could Michaelangelo envision some piece of the Sisteen chapel, and then DESCRIBE to someone else how to paint that piece? Then, say "No, no, the baby's expression should be more playful, try again?" Then, move on to the NEXT piece??? That is a ridiculously clunky process to imagine, and we all know it could never work.

Building software is a process of Creation. The Creator needs to envision it, then make it tangible. And iterate. If you try to chop that Creation process into bits and divide it, you're shooting yourself in the foot. Even with teams doign software development, the Architects or the Leads or whatever you happen to call them are the primary creators, and you better have all development work tightly woven with them.

Charlie Flowers
Monday, March 01, 2004

Alot of these arguments address the problems with an American business outsourcing programming work, but what I'm curious about is how companies like FogCreek will compete with an Indian version of FogCreek, entirely located and run in India, with developers and management just as smart as those at FogCreek, yet charging 1/5 the cost?

I hate to say it, but we tend to have a bias against Indian developers capability, but in actuality, they do have people on top of the bell curve just as we do here.

Thus with almost none of the problems that come with off-shoring, a fully Indian company will be difficult to compete against. 

Perhaps cultural issues will be an impediment, but if the company is run by smart people, this can be dealt with easily.

Phil Haack
Monday, March 01, 2004

One has to take into account the motivation factor.  Listed below are some typical motivators for developers:

- Pay
- Making a great product
- Working with happy customers/users
- Nurturing long term relationships with co-workers
- Building business contacts
- Loyalty to company
- Building a reference that can be used to get future jobs
- Possible payoff of stock options
- Individual recognition
- Fear of being held personally responsible for failure

Offshore contractors can generally only benefit from the first two.  In-house employees benefit from all of the above.  Offshore employees are somewhere in the middle.  In the equation of "Aptitude + Motivation = Success", the Motivation portion is often overlooked.

Perhaps the crappy code people are seeing from offshored projects is the result of someone asking "why should I write good code?" and not really having an answer.

Bill Carlson
Monday, March 01, 2004

Crap!

Transnationals are the good guys of globalization, and they've  perfected the issues of dealing with overseas offices for decades.

Getting communication between central offices and outsourcers right is just a matter of time.

There are really no technological or commercial obstacles to offshore outsourcing. The obstacles that exist are indirect, and lie in the political aspects of the social and economic consequences of the trend

juanco
Monday, March 01, 2004

There seems to be a lot of searching for good analogies as a way of understanding the nature of what's happening with outsourcing.  The best big-picture analogy of IT I've found is Pat Helland's Metropolis analogy.  Not only is it entertaining, it's very well argued and, I believe, accurate.

It's the first presentation under the Architecture Strategy Series.
http://msdn.microsoft.com/architecture/overview/series/

Oran
Monday, March 01, 2004

P.S. on the above presentation: it's streaming-only, but you can download it with a free tool called Net Transport.  If you then want to be able to skip around in the presentation, you can re-encode it with Windows Media Encoder.

Oran
Monday, March 01, 2004

Owen Byrne writes: "And its the same impulse! Rich moronic publishing executives got tired of watching star authors steal all their profits. So they developed systems to produce cheap, reliable and good selling (but noticeably BAD) books. "

The term I think describes this is "Extruded Book Product".

Remarkably similar to quality work, but not, quite.


I'd also mention (in response to earlier posters) that it's not that Indians couldn't write as good as Grisham or Clancy, it's that a bunch of collaborating Indians couldn't write as well.

But, a bunch of collaborating Americans couldn't write as well as Arundhati Roy.

It's the dissipation of the vision among multiple authors (who are just writing for a paycheck, rather than from inspiration) that's the problem, not the ethnicity of the authors.

Jon Hendry
Monday, March 01, 2004

This whole topic really has nothing to do with coding, or software. or architecture or the like...

It has to do with MONEY - plain and simple.

If I had a mortgage that cost me $80.00/month with food and other expenses not totalling more than $100.00/month, I too could charge the same as my Indian counterparts - and architect/code circles around them.

But the fact is that I (we) are caught in an American economy that has reached a certain level of valuation - so the average white collar worker (with a family) in this country has to make a certain amount of $$ in order to 'survive' in this situation.  It has nothing to do with talent, or culture or any other such nonesense.

So here we spin tales trying to make sense of all of this.  There is really nothing to make sense of.  Indian providers (or any other offshoring provider) will inevitably only be able to provide a bell-shaped curve of talent.  It will all shape out just like it has in America.  Not everyone will have the aptitude for this type of work and there is no way that you can package up the art of software development and divy it out into 'repeatable tasks'.  You can really only do this on, at max maybe 30% of any software project.  For the rest you better have some serious talent and you know those folks (the talented ones) are going to be jumping around looking for the best $$$ because human nature is Universal.  So the prices are going to start moving up - and it's already happening.

And who would want a culture / work force of mostly software developers anyway.  For cripes sake, give me a break - there is much more to life...

The off-shoring trend is a knee jerk reaction to American executives being lazy and uninformed in the 90's, thinking that somehow their brilliance made the economic boon of the 90's.  It was nothing like that.  It was mostly stupidity and hype just spiraling out of control.  American executives still don't understand IT.  And you can tell because they want to ship the 'problem' overseas.

So now we see these executives under the gun, having to make cuts and actually justify their existence.  So hey, we can just ship out all of this 'high tech', 'high priced' work overseas.  It's such a joke it's laughable!  The company I've worked for has outsourced various projects over the past 7-8 years and we're just about to retire the last piece of Java crap we've received from over there and we're moving on!

Outsourcing: Crappy version control, misinterpreted specs, late nights of miscommunications.  10 minute code changes that take two weeks.  Oh and yes - the inevitable 'that wasn't in the spec so we will have to charge you more!'  Yes Sir! - offshore providers may have a cheaper hourly rate, but they are not stupid.  They know how to stall and they know how to not give one inch on the spec until you cough up another $20,000.00 for 400 hours of 'programming' that an in-house talent can have done in a week and a half.

And technology - oh yes - you'll get technology.  Our first .NET project came back with 'Technology'.  We got back a COM+ Layer, a Business Object Layer, a Data Access Layer, an XML Layer, a User Interface Layer, a WebService Layer and a .DLL Layer. It now takes our in-house maintenance staff 3 days just to add a field to a screen.  In the specs we asked for web services and a GUI front end.  Period.  We were techno'ed to death.  And during the whole process the user didn't get what they asked for, so we had to rip it back in-house and finish it.

Guess what - outsourcing is just taking the same IT problems you have today, and placing them half-way around the world - so you can make your users even more pissed off because you've now increased the time to solution. 'brilliant'...

And still like lambs to slaughter we go, thinking that the Great American Tech Sell-Out is some 'MacroEconomic Trend'.  It will be fun to see the CEO that has jumped on the bandwagon watch a couple of his plants go down because of crappy code.  And yes you haven't invested in your American talent, sitting on site, so they have lost the passion, discipline and knowledge to save your IT butt just like we do day in and day out now without your knowledge!

My advice is this: If you're still working in IT, just do the best job possible.  Serve your customers because eventually they will have to come back to you because no offshoring trend is going to compensate for the harsh realities of day in/day out IT work.  I am not against sending some work overseas.  But it should be the right projects with the right impact.  Everyone in the world has the right to make a living - Indians, Asians, all Peoples, even Americans.  No American worker has asked to have to make $40-$80k just to survive in this culture.  It's just they way it is. But there is no way we should be punished because things got out of hand in the 90's. 

Fight back by doing the best job possible and make it unthinkable for your customers to even want to go anywhere else.   

Frank
Monday, March 01, 2004

Offshoring is not bad per se. What happens in companies that look for "local" programmers? They try to get hold of the best yet cheapest they can find, since all companies only have a certain budget.

If you can't find them in town, go look someplace else. It might be cheaper but not easier, because:

Managing programmers is equally important, no matter if they are in the next room, or in the next time-zone. My company (I am from Vienna, Austria, btw.) once offshored some work to Jordan. It didn't work out, but not because of incompetency THERE. The problem was: noone managed them.

By managing development work I mean: discussions, reviews, etc. of evolving software designs.
Imagine you have some programmers in the room next door and only talk to them via E-Mail. Lots of meta-information would get lost.
Would you feel good about visiting your in-house development team only once a month? But that's what most of the time happens with offshored teams.

I recommend to everyone reading the article "What is Software Design" that was cited earlier in this thread (by rwh on February 29).

Key learnings from this article are:

- SW design is like prototyping, etc. in engineering.
- Offshoring in engineering works well, because the "build" can (quite) easily be done by anyone.
- In SW development, the "build" is done by compilers, linkers and the like.
- Therefore: SW design (which companies want to keep in-house) is finished when the whole thing is ready to be packaged, NOT before coding starts (which they offshore).

So to me it seems that: if you compare offshoring development to offshoring engineering, you actually would have to compare the PACKAGING of SW, not coding.

Bodi
Tuesday, March 02, 2004

One very common argument I've heard wrt offshoring is that "costs decrease, therefore consumers benefit."

The argument assumes that cost decreases in the production of software will result in savings for consumers.

Other than a few very competitive niches, however, software is 99.9% priced based purely on what you can get the customer to pay for it.  You can see countless examples with commercial/open source hybrid projects where the commercial version is just a rebranded open-source offering with some support.  One is $0, the other is $bignum purely because it is advertised and supported.  Fedora and RedHat cost the exact same amount of money to make, but Fedora is $0 and RedHat is $199 per seat per year. 

Likewise, customers don't give a rats ass that it cost a lot more to develop Daikatana than it did Half-Life.  Daikatana sucked, so it immediately went to the $5 bin.  Half-Life provided a superior value and therefore stayed at $30 for years and years.

Any savings from outsourcing will do absolutely nothing but line the pockets of the execs and majority shareholders of the company doing the cheap outsourcing.

The only benefit that could possibly trickle down to consumers would be the existance of projects that nobody would have started because they weren't economically feasible(sp?) without out-shoreing.  Unfortunately, most of these would tend to be custom business app projects which are the most problematic to successfully out-shore.

Richard P
Tuesday, March 02, 2004

If offshoring is such a disaster, as described within this thread, I suppose it will end soon: it's not the time in which companies waste money just for fun.

If Indian programmers are so bad, as described in this thread, I suppose that the outsourced jobs will be returned to the absolutely brilliant American programmers.

To be frank: it seems to me that a little bit too much whining is going on. Not yet at the same level of F***edCompany, but already quite much.
Phil Greenspun is blaming immigrants for American fat asses, and here people is blaming Indians for their poor coding.

I hope that the economy will recover also in the real world and not only in the stock exchange, so this boring/racist/stupid/unuseful whining will stop.

Marco Bertini
Tuesday, March 02, 2004

Corporate growth often comes from outsourcing your core, and then focusing on growing the next big thing. 

If you have something 'down' (that is: you are already very good at) perhaps you should aim at doing it for everybody.  Like Diners Club and billing for example. 

If you aren't good enough at your 'core' to do for everybody, perhaps you need a new core.

Richard
Tuesday, March 02, 2004

It's also about what you want to do. Those who want to make money by whatever means can think of outsourcing their stuff, but those who want to do good software (and make money "as a consequence") aren't going to outsource, uh, "software development"!

Personally, I'd think of outsourcing documentation (translation), security (hiring other organisations to find security problems with your software), testing perhaps!

Manish Jethani
Tuesday, March 02, 2004

I kind of agree with Joel's view point of  "If it's a core business function -- do it yourself, no matter what". What I would specially like to add is "If it is a development
work -- do it yourself" --  I think work that does not require direct face to face communication can be outsourced.  One specific function which I think that can be outsourced is a major part of the software testing. This is like simulating Netscape's model, where "customers are your testers", where a company can hire a bunch of software testers for fraction of a cost to do your testing. If I am not wrong I strongly think this is the model, which Adobe follows, and this is the work which many Indian software companies actually do.

I think software development and design are core interelated function of a software's development which requires a face to face communication  of the developers.(NO, video conferencing never works, trust me on this one). While initial and core testing should always be carried out onsite, I think a major part of testing could be outsourced
offshore.

I think outsourcing development done many companies is a short term goal (mainly to cut costs  in order to show positive earnings in the forthcoming quarters), which unfortunately has long term repercussions. A couple of reasons is
(i) the place of design and development are seperated, hence progressive design is
    stopped. A face to face communication is absent which affects the outcoming
  product's quality and of course the ship date.
(ii) What we call a "schedule" is totally disrupted.
(iii) Since the company developing the code is different from the parent company,
    well how good and cheap do you think maintainence and updates is going to be.
(iv) One of the problems is when you write code for other companies, is that your
    effort is never going to be the best. Its like working on a project for which you
    are possibly never going to get kudos.

While software testing, specially testing of nearly finished products or product modules is more like a "sweat shop activity", one can paid better for getting
x bugs/hour - I was just kidding....partly.

What actually happens is when we ship a design from place A to place B, is that
the design gets shipped but not the ideas. Think about it.

Rama
Tuesday, March 02, 2004

By the way, isn't he confusing offshoring with outsourcing? Oracle has "offshored" its development to India. Well, Fog Creek can't, or they don't need to.

Manish Jethani
Tuesday, March 02, 2004

i have no experience with outshoring but this article made me think that it is possible:
http://martinfowler.com/articles/agileOffshore.html

And about the hiring standards like a lot a people mencions, you can found here the detail for a application developer:
http://www.thoughtworks.com/career/devArchDyn.html?fce661ec0147a7ba86256a8c006cf135/91bccb4fac0b39e0862569620050debc

Orlando
Tuesday, March 02, 2004

offshoring... sorry

Orlando
Tuesday, March 02, 2004

Just a thought, but didn't New York offshore tasks it didn't want to do it self (Hotel Maids, Ticket Collectors ...) to immigrants; not offshore par se, but many of the advantages.

bobby
Tuesday, March 02, 2004

Good article from Fowler, but that was describing offshore development with offshore employees of the same company. Getting agile practices to work with an offshore contractor is a whole 'nother ball game, because with them simple changes often require expensive contract renegotiations.

NoName
Tuesday, March 02, 2004

"Getting agile practices to work with an offshore contractor is a whole 'nother ball game, because with them simple changes often require expensive contract renegotiations.
"

NoName, this is the biggest disadvantage for contracted out offshore setup.

You will end up by default with a waterfall set up because the outsourcing company will want to cost every single feature point at the beginning (so they can maximize profit) and feature change request is a bitch.

This can work for a limited number of software development range, but if you want to do innovative software, it can't be done this way.

Dody Gunawinata
Tuesday, March 02, 2004

India also is the home of more than 120 million Muslims--one of the world's largest Muslim populations.

Cameron Reilly
Tuesday, March 02, 2004

Here's my thinking on this, outside of the whole question of whether or not quality suffers. My understanding of economics could use some improvement, and perhaps somebody can correct my thoughts, but as Americans lose jobs do to offshoring, or are forced to accept lower paying jobs due to the same, will there not be a shift in demand for many products in the economy, simply because fewer people can afford those things? This includes a shift in the demand for the very same products that are being offshored.
As demands shift, won't suppliers have to lower their costs? And as they lower their costs, won't this decrease their profits, thereby diminishing the benefit of offshoring?
On the other hand, as the typical offshore worker begins to make more money, he/she will be able to afford more; so, will the demand for goods in other countries increase? Will suppliers start to make more money from the countries to which we offshore? It seems to me that the effect of all of this will be to gradually equalize the economies of the various nations, but I'm not sure that that will improve my overall quality of living. What happens when the American economy loses its competitive edge? Is that what we want?

Looking at it from a different perspective
Tuesday, March 02, 2004

My prediction is that most companies that offshore a significant portion of their software development will suffer heavily for it within the next 3-5 years and maybe even go out of business, unless they did it with their own offshore IT division.

Those that gain a competitive advantage due to offshoring will be those that chose NOT to offshore while their competitors crumbled with it. And those who set up their own offshore subsidiary and managed it well.

T. Norman
Tuesday, March 02, 2004

T. Norman sounds like somebody who works for AMC talking about Toyota.

Anon Cow
Tuesday, March 02, 2004

Richard, you say "The only benefit that could possibly trickle down to consumers would be the existance of projects that nobody would have started because they weren't economically feasible(sp?) without out-shoreing." and by that you must mean projects like improving the quality of our existing products, as well as development of new ones, right?

So, the only benefit that could possibly trickle down to consumers would be prodects that are of better quality at reduced prices, which is what the 1st world is built on.  Nobody in North America would own a computer if it was built entirely in the U.S.A. because we couldn't afford it.  Likewise a television and all the other audio/video components, and game consoles, and vehicles, etc. etc. etc..

Software is simply the next commodity to be sent offshore so that we can afford it.  That's all.

Anon Cow
Tuesday, March 02, 2004

Frank, globalisation is inevitable and nothing you do to improve your quality or quantity of output is going to stop it.  You have only two choices available to you, work for $5 per hour, or build a wall around the U.S..  The latter has been tried more than once and didn't work.

Anon Cow
Tuesday, March 02, 2004

"My prediction is that most companies that offshore a significant portion of their software development will suffer heavily for it within the next 3-5 years and maybe even go out of business, unless they did it with their own offshore IT division.
"
This assumes that the outsourcing practices and companies didn't improve, which is a pretty big and bold assumption.

Dody Gunawinata
Wednesday, March 03, 2004

Take a lesson from history and read up on how to construct software. It is almost the same process as twenty years ago, OOP and XML aside.

Brooke's Law will tell you more about outsourcing than any CEO:

Adding manpower to a late software makes it later.

This is true. Software isn't like constructing. All the big players for the last thirty years has tried to make it, and that's why we have things like UML -- but all has failed miserably.

Most horror stories above could just as well have happened without the 'oursourcing' part. Taking over software projects is very hard. Spanning projects over a hundred developers is extremely hard. It just doesn't scale, no matter how hard we try.

Outsourcing, implying that we're talking about only a part of the process and that the outsourcee should be exchangable, has only got a chance to work in the software-as-factory-assembly. Think waterfall and very detailed specifications. My prediction for the future is that it will find its niche in very large scale business software for Big Companies. Outsourcing will be a win for IBM, SAP and big consulting.

It is unfortunate that waterfall specs and UML has gained quite a large foothold in places where it obviously is overkill. I believe it is because there is an inherent feeling in the software architect as more important than the coder. The architect will strive for a bigger paycheck and to keep it that way.

Truth is, in software the blueprint is the product. No matter how many abstraction layers you create, underlying crappy code will show through. The best software is made by small and mid-sized developer firms, agile to changing conditions and writing most specs as they go. Spend all the money on quality certifications and object oriented specifications you want, you will only slip the schedule even further.

Jonas B.
Wednesday, March 03, 2004

["My prediction is that most companies that offshore a significant portion of their software development will suffer heavily for it within the next 3-5 years and maybe even go out of business, unless they did it with their own offshore IT division.
"
This assumes that the outsourcing practices and companies didn't improve, which is a pretty big and bold assumption.]

Software development practices and companies haven't improved in 20 years, period.  The mistakes described in The Mythical Man Month are still just as common as when that book was written.  Ain't no reason to believe that they will improve offshore or locally.  If something happens to make software dev. improve significantly offshore, that improvement will likely be done locally as well.

With offshore outsourcing, the interests are too mismatched for it to be sustainable and profitable for the client in the long run. It also is not getting any cheaper. Offshore in-sourcing (hiring offshore *employees*) is another matter, and does have good prospects for success with the companies that have the patience and know-how to do it right.

Mark my words. Wait 3-5 years, the events will validate my predictions.

T. Norman
Wednesday, March 03, 2004

Well said, Jonah B!!!

I have a question about the attitude of management (and the general public) towards software development in the offhshore countries. Do they show similar contempt towards those actually doing the work? In the UK and US this attitude is endemic (hence Dilbert & the PHB).

Recently I read an article stating that in India, software developers were not regarded as anti-social subversives, in fact they are very highly regarded by society as a whole. It's not just software, in the UK at least we have a very anti-intellectual bias.

Don't know why, but all engineering work is regarded as 'getting your hands dirty'. Administering and (mis-)managing is regarded as not just different, but of much higher status than actually making anything.

Anyway, one or two people have suggested that companies only offshore so long as it's profitable. I think the reasons for offshoring are more political than financial. As Jonah B and others say, we could do software efficiently right here, but Agile processes take power away from managers who are clueless in software but experts at contract haggling, time sheet fiddling and  Gantt chart fiction creation (ie about 90% in any big firm).

Companies are not logical, rational beasts, always moving to the position of most profit. Otherwise they'd never go bust. They make bad decisions, even worse they make no decisions that require real change. Those higher up the hierarchy dislike change more than the rest, as they have most to lose. Offshoring presents an illusion of change, while the same old power politics stays in place.

Back to where I started: are some other cultures more respectful of intellectual work? If so, I may well be heading your way! What are property prices liek in Bombay these days?

Mantissa
Wednesday, March 03, 2004

Offshoring ....Wise guy pull up your pants..

Teach a monkey how to write code, give the pseudocode it will type it for you (ofcours!! you got to pay it in bananas). If you can do everything why did you recruit people in first place. Recruiting people to your organisation is a kind of outsourcing work. have you ever imagined a guy working for you for 5 full years understanding your software, leaving you to start a competetion to you ... it happened many a times. 

if you can work on whatever is available in the world you need atleast a million years. There are lots of oppurtunities, give the mundane task of writing code to anyone else. You are a architect, designer and a visionary. You have to envisage how to make more profits than to see which buffer of the heap is leaking? thats not ur job. If that is yours close your shop and work for me :(.

A CEO is the one who knows everything but makes others do all  the things. You are not God to be everywhere. God only can collect requirements, analyze, design, code , implement and maintain the same software. We are mortals we got to die sooner or later. You are talking about few pennies here and there. Make more profits give it to your people who has been with you all these years. Its payback time dude :) pay for your shareholders, customers, employees and yourself . Dont talk like a non-thinker my dear visionary...

http://geekblogger.blogspot.com
Wednesday, March 03, 2004

I live in a country in Eastern Europe.

After WW II, the Russian army came and forced my country to accept communism. People here didn't want communism - we were a capitalist country, and were quite prosperous.

Today, because of communism, the economy is DOWN. It's fscked up.


In the US and Western Europe, a kind can go to university, not make a lot effort there, and still get a good job, afford a good car in 2-3 years, maybe a house in a few years, etc.

In Eastern Europe, you go to university, learn like hell, then get a job, work like hell, and it's still impossible to buy yourself a car - you barely have money to eat.

I had to save money for several years in order to afford to buy a bad second-hand car!


Now, which part of this situation is my fault?

Is it my fault that the economy is down? NO!

Is it my fault that my country was a communist country?

Hell no! What could my country do against hordes of countless russian/soviet soldiers and tanks pouring into my country after WW II?


A few years ago, something happened.. I heard of this thing called outsourcing - I heard that some guys in my city were getting 400-500 US $ per month to develop software for companies in the US and UK.

At the time, the sum seemed very large to me. The local firms barely paid me $ 100 per month as a programmer.

I got into such a company which worked for firms in US.

Then, after a few years, I started my own software development company.

Now I'm one of those "evil" companies that the firms in the US contract software with.


Is it your fault that I work cheaper? NO.

And yet, I work cheaper and so some of the work which previously came to you now comes to me.

You see, history is unfair. You win some, you lose some.

In the last 50 years, we (the people in Eastern Europe) were the ones who were badly screwed by communism.

Today and in the next few years, you will be (a little bit) screwed by the fact that we work cheaper.

History is unfair, you win some, and then also lose some. Get used to it!


In this thread, a lot of people made a lot of arguments against outsourcing.

Some of the arguments are good and valid arguments, but there are also a lot of arguments full of wishful thinking.


If you manage the outsourcing process correctly, and have a strong team in both countries, then you will succeed and save a lot of money.

The programmers in Eastern Europe are not worse than the programmers in US.

Also, we are not just "code monkeys". We are "working from spec" and doing "contract programming" because until now we didn't have the money to invest in serious product development.

If you take a custom programming contract, the risk is low and you will probably get the money you spend on developer wages.

If you develop a product, then you invest a lot of money in programmer wages, and you can recover the money or not.

In the next few years you will see more and more software products coming out of Eastern Europe and India because the local companies have earned enough money to sustain serious product development.

Maximum Overdrive
Wednesday, March 03, 2004

[Software development practices and companies haven't improved in 20 years, period.  The mistakes described in The Mythical Man Month are still just as common as when that book was written.  Ain't no reason to believe that they will improve offshore or locally.  If something happens to make software dev. improve significantly offshore, that improvement will likely be done locally as well.]

Norman, that statement is probably true if applied to US based company.

Right now, you cannot assume that the trend will continue because what we have here is a globalization of programming work, where people from different cultures and background are attacking similar problems.

A lot of programmers from Russia have a very strong Mathematic background for example and that influence the way they approach software creation. India has the most companies with CMM level 4 and above. Korea/Japan will again have different approach to software engineering.

What we are seeing right now is the accelleration of the darwinian process facilitated by the reach of the Internet to the software development practice and culture.

Software development fits globalization like a glove due to the low cost of start up. All you need is talent and a minimal amount of capital investment. This affords many tallented people around to world to start up their own and challenge any position hold by previous players globally.

Dody Gunawinata
Wednesday, March 03, 2004

"Norman, that statement is probably true if applied to US based company."

The pathetic practices of US based companies is the reason why US companies won't be able to do offshore outsourcing successfully.  They are not good at managing requirements and specifications carefully enough to get what they really want from the offshore contractors and keep costs under control.

For example, the US client asks for bread and the contractor brings white bread.  But they really wanted rye bread.  They asked for bread and they got bread, so they can't blame the contractor.  As a result they pay them once for the white bread, and pay them again for the rye bread.  Employees (local or offshore) would have either known that rye bread was needed from the beginning or would have asked before delivering.

Granted, many of the same issues are present when outsourcing to US consulting companies.  However, at least in those cases there is usually no pretense that they are using the contractors because they are cheaper than employees; they acknowledge the expense and use the contractors for increased expertise and/or capacity.  But when they are offshoring work because of lower cost, success is not not just about completing the project; it also must be done cheaper than doing it in-house.

T. Norman
Wednesday, March 03, 2004

> Alot of these arguments address the problems with an
> American business outsourcing programming work, but
> what I'm curious about is how companies like FogCreek
> will compete with an Indian version of FogCreek, entirely
> located and run in India, with developers and
> management just as smart as those at FogCreek, yet
> charging 1/5 the cost?

As a person who has visited overseas and thought a lot about overseas businesses, this question is interesting.  There are a few reasons that I have noticed.

1.  The U.S. is pretty unique in that people are willing to take risks on small companies.  Elsewhere in the world, new graduates line up to get lifetime jobs in insurance companies and huge consulting companies.  I kid you not: they really do.  In many countries, their first job is their only job, for their entire life.  So, they pick carefully and shoot for stability.  They don't risk joining a startup, especially if it pays less.

2.  In other countries, providing local basic services is an easier way to succeed at than competing globally.  We take modern discount mega-stores for granted but, in less developed countries, these things are rare.  In some countries, opening a McDonald's is virtually a license to print money: local people with money want access to worldly items and, simply providing things that we take for granted, is extremely profitable there.  So, many people do not want to create software businesses when they can do things like this.

3.  It is very difficult to get capital in other countries.  Government corruption often dictates who can start businesses and who can't.  Upstart businesses can often be crushed by powerful people who want to get control of the business and cash flow.  They can use the police and government as their personal billyclub to clobber people.  (Not to mention assassination, the mafia and so on.)  Money just isn't available to somebody whose only qualification is that he has a good idea and experience.  Even in Europe, getting money for a business is much, much harder than it is here even if one doesn't have to contend with the criminal element.

4.  There is just a different mentality.  Some foreigners worship Americans and simply cannot help but see them as superhuman (and, thus, they cannot compete against them).

5.  Geographic biases are different.  Asian companies understand everything about mass production and understand virtually nothing about marketing (except Sony).  Asian companies easily slip into the role of being suppliers.  Europeans, by contrast, understand everything about branding and nothing about mass production.  When I travelled in Europe, they always had these tiny little plants all over the place.  "BMW makes cars here," the guide would say.  There!  In that tiny little factory?  Space is very expensive and European companies seem unable or unwilling to create the massive, Zaxxon-like manufacturing plants that occupy America and Asia.

6.  Overseas companies are often considered second best and are poorly represented in the U.S. which is a huge consumer of products as well.  Being an expert at Indian preferences is not as good as being an expert at American preferences because India does not consume nearly as much software as the U.S.

Now, I've addressed the question worldwide.  As for India, I think that maybe they can eventually compete toe-to-toe with American companies, in time.  So far, I've only heard of a few Indian startups in India.  There is probably also a reason that many Indians leave India to make money, too.  Why don't they stay there and compete?  I don't know.

Still, I'm not sure that cost is a real differentiator in shrinkwrap software, like Fog Creek makes.  When Joel talks about pricing, he talks about how much he can charge, not how much it costs to make.  Charging $50 instead of $300 for a program doesn't automatically bring more customers; sometimes, people think that a $50 is just a cheap knock-off (even if it isn't).  Lowering the price sometimes just makes people think that you have poor quality.  Similiarly, having more engineers available (because they are cheaper) sometimes does not speed up programming or give the company any other benefit.

Anonymous
Wednesday, March 03, 2004

>"Alot of these arguments address the problems with an American business outsourcing programming work, but what I'm curious about is how companies like FogCreek will compete with an Indian version of FogCreek, entirely located and run in India, with developers and management just as smart as those at FogCreek, yet charging 1/5 the cost?"

That's not going to happen on the basis of cheap labor, because the total cost of employing an Indian programmer is much higher than 1/5 of the cost of an American programmer.

The Indian programmer's salary might be 1/5, but the cost of just about everything else in the equation is equal or more expensive than in the US.  That includes office real estate, electricity, Internet bandwidth, hardware and software.  Even if Indian programmers worked for free, they would still cost more than 1/5 of an American programmer.

For them to charge 1/5 for their product and still make a profit, it would have to be on the basis of lower quality or functionality (i.e. less time invested in the product), in which case they wouldn't even be competing in the same space with Joel.  Otherwise it would have to be the result of higher productivity, and it is extremely difficult to top the small and talented Fog Creek crew in productivity.

T. Norman
Wednesday, March 03, 2004

Outsourcing can work in specific situations.  My former employer produced CAD software.  Barriers to new CAD products are pretty high, so management knew it needed to get lots of functionality done as soon as possible.  Management decided to hire an Indian company to help us out.

At this point, many people would cringe.  However, we hired a company that had already done major work for other CAD vendors.  They already knew what needed to be done to support various features; they had done it before.  Essentially, their previous experience with one of our largest competitors served as training for our product, and we gained valuable insight into how our competitors software worked.

Overall, it was a good experience.  They integrated easily with our development processes.  They had no problems learning or using our defect (I *hate* the "b" word) tracking system.  The only headache we encountered was mild lag in discussions during design and defect resolution.  Luckily for us, their programmers would often stay very late to talk with us when we arrived at the office first thing in the morning.

Paul F. Williams
Wednesday, March 03, 2004

Dody and  Maximum Overdrive; both very well said.

Anon Cow
Wednesday, March 03, 2004

" ... My experience leads me to believe that the truly secure job is that of the competent program manager. People who can reduce business problems down to specifications will be in great demand in the coming years. ..."

problem with this one as companies like Infosys are gobbling work in systems analysis. So this may side step analysis inside companies.

peter renshaw
Thursday, March 04, 2004

Paul F,

Although your company was on the beneficiary end of that experience, it demonstrates how one company's decision to outsource can be of a greater benefit to its competitors than to itself.

T. Norman
Thursday, March 04, 2004

T.Norman> Although your company was on the beneficiary end of that experience, it demonstrates how one company's decision to outsource can be of a greater benefit to its competitors than to itself.

Yep, it shows us again that "don't outsource your core competencies" is a very wise statement, and has many aspects!

Davidson
Thursday, March 04, 2004

I appreciate the great comments on offshoring; I'd have to say after reading all of them (not too carefully, I'm afraid), I was struck by so many ethical questions.

The "core competencies" of my business endeavor should always, ALWAYS be placed in the most capable hands I can find on Planet Earth. If those hands exist in Kuala Lumpur or Bangladesh or Hong Kong, then so be it. It's nauseatingly arrogant to assume that the only place to find talent is on the city block where I grew up.

Consider all of the factors involved in the offshoring and outsourcing decisions that companies make. Cost is one legitimate factor; however, if it's the only emergent consideration behind the decision to send jobs overseas, then it's fair to question the ethics of the decision. I really don't think that "cost" should ever be the only factor in such an undertaking. Solving the business riddles and economic equations of offshoring requires deep calculation, and sometimes cost is the least significant factor. Ever heard of Six Sigma?

The bottom line of the balance sheet requires prudent attention, but it should never be the focus of your organization--unless, of course, you're Gordon Gecko.

I firmly applaud Joel's obvious stand for "quality," as defined by his company and his products. I daresay that his employees represent the same.

Scott Judd
Thursday, March 04, 2004

It just occured to me that any co that can still deliver on time by slipping features, has the XP thing well under control.

Karel
Thursday, March 04, 2004

The balance sheet is the ultimate reason why the companies are in business so it has to remain important.  The trouble is when the next quarter's balance sheet takes precedence over the balance sheet of 2, 5, or 10 years from now.

NoName
Thursday, March 04, 2004

Is offshoring the real point?

If a US company hires another US company to write software then communicates using email, CVS or whatever over the web and phones, is that much different from using a company in Bangalore, Manilla or Auckland?  (There is an issue if you set up an initial face to face, travel cost.)

Isn't it about picking people who know what they are doing and that you can work effectively with.  Guy's with a clue!

There are certainly dogs in all countries and hopefully really good people too.  But there are likely to be really few companies who get 10/10 across the board including how communication works.

That drives you to going in-house if it really counts for your business.

If you are a  "non technical manager", especially if you dislike the programmers who regularly mock you,  going off shore may be attractive.  When you confuse hourly rate with project cost it can be particularly attractive.

Some work might be about crossing the "impedance mismatch" between OO and relation, with very little other code thrown in.  For that it might be OK to pick lowest cost (or better still use a code generator).  If you need to maintain it the best approach can be to throw the old away and start again (after all there's a new release of the generator / new ways of programming now!!).

For core stuff I say you need more than architects who are also coders.  You need people who understand the business and design and coding.  Then you have programmers who are key corporate assets.

I'd love to see setups where coding is not an optional skill.  Places where just about everyone can code even if she isn't doing coding work.

Coding shouldn't be a specialist skill, it should be part of what most people can do.  Like numeracy and literacy.

Mike Gale
Thursday, March 04, 2004

Lots of postings... Didn't make it all the way. Sorry, if repeating someone.

I'd say that the size of a company decides a lot. If a 30-50 person company is already a big crowd with some "crowd" laws, the 3-8 person company is in a totally different category that can defy all the logic in the world.

So, one can talk and study the major tendencies of off-shoring etc in a big company, but there are probably some small companies out there succeeding in doing something terribly "wrong".

Mike Berns
Thursday, March 04, 2004

If you are wondering about difficulties and solutions in working with offshore developers, just examine any open source projects . You will learn a lot from examining the processes in those projects in order to make sure you have a better understanding on what's involved.

Dody Gunawinata
Thursday, March 04, 2004

The current trend in off shoring is a reflection on how our profession has failed to improve.

There has always been the expectation that we would discover the golden bullet or perfect process that would reduce development time and improve quality.  This has not occured.  It might never occur.

Meanwhile the need for code rapidly grows as do the scale and complexity of software projects.

If the software development had consistently improved we would not be having this discussion now.  There would not be a need to offshore since the productivity of developers would have improved greatly and therefore costs would be contained.

Tools have greatly improved over the years.  Practices have improved somewhat.  Neither have kept up with the complexity and sophistication of applications demanded by the marketplace.

Is it all doom and gloom?  No.  There will always be ample opportunity for good developers.  In my opinion software development is one of the best ways to make a living.  We will all just have to work harder to make the big bucks and stay employed.  Think about other engineering professions such as mechanical engineering for a model.

One last cynical point.  Consider the statistic that 50% of all large software projects are cancelled before completion.  From a bean counting point of view if I offshore I can reduce the cost of my failures.  Even if offshoring increases the chances of failure to 75%, it is still cheaper if I'm paying less than half for my developers.  Heck I might even start up two parallel projects just to increase my odds of success.

Doug Durham
Thursday, March 04, 2004

"Think about other engineering professions such as mechanical engineering for a model."

But isn't this what we've been doing for decades...and failing at?  We've been copying manufacturing and engineering practices for how long? 25 years maybe? And still, as you rightly say, many (certainly in the bespoke corporate world) projects are pulled before release, or cost way over budget.

Maybe, just maybe SOFTWARE ISN'T HARDWARE!!!! After all, nobody would use an engineering process to produce a play for a theatrical production, or a piece of art. Successful sports teams are not ISO or CMM accredited.

The way forward is to realise that the idea of software as engineering is fundamentally flawed and explore software development as creative problem solving, as the Agile crew are doing. Software is not a physical think, like nuts, bolts, engines, training shoes and all the other things that get succesfully outsourced.

Outsourcing, this is a concept from the hardware manufacturing world and should stay there. Some patterns mentioned above, I believe, will work. Eventually the coders will develop there own ideas and not want to be just code monkeys anymore. Companies that can handle the whole project from requirements to final delivery can succeed, to.

The big failures, IMHO, based on the essential reality of the nature of software, will be those who send a wadge of UML diagrams, or Use Cases, whatever, to be 'coded up at low cost' by a team the will never directly meet.

Mantissa
Friday, March 05, 2004

"Physical think" !!!!!

I meant "Physical thing", of course. Freudian slip??

Mantissa
Friday, March 05, 2004

Mantissa,

I was not clear.  I was not encouraging us to think about Software engineering like Mechanical engineering.  As you state they are totally different.

My intent was that from a career path we should get used to being more like mechanical engineers.

ME's go to school just as long as CS majors.  Traditionally they have only made a fraction of the money for their troubles.  On top of that finding and keeping employment is problematic for a straight up ME.  CS is becoming more like that.  It will evolve into being an *ok* job with *ok* pay.  You are not going to be able to strike it rich without starting your own company or moving into a non-technical role.

That said I still believe that software engineering is a great field.  It is much more interesting to develop a new solution to a complex problem, than to design yet another hinge, or fastener.

Doug Durham
Friday, March 05, 2004

[The big failures, IMHO, based on the essential reality of the nature of software, will be those who send a wadge of UML diagrams, or Use Cases, whatever, to be 'coded up at low cost' by a team the will never directly meet. ]

Now that will be a recipe for failure.

You can improve your rate of success by treating the whole entreprise as a collaborative work, instead of dumping ground for code.

A lof of successful open source projects work in a distributed manners with developers scaterred around the globe. It can be done.

Instead of sending specification and say, do it as written, the other team will need to be introduced to the whole business rational and model behind the software. The whys. 

Anyway, I've written more than necessary about outsourcing in this forum. This would be my last post.

Here's my top ten on offshoring:

1. Spend $2000 and 10 days. Fly to India or Russia or Romania. Discover these places yourself. Talk to the developer community from these countries.

Meet with as many local software companies as possible.

2. Try it. Allocate a budget for it and set the goals for this experiment. If you don't allocate budget, you won't be successful. Learn from this experiment.

3. Avoid outsourcing company specialist rep in the US. Do no [1]

4. Examine successfull open sources projects. That's how you get things done with offshoring projects.

5. Btw, make sure your IT team is actually in good shape. Otherwise outsourcing won't work. If your team is lousy, fix this first. Let go your poor performers, cut down your number of projects and secure your best people.

6. Use offshoring as  a mean to expand your capability, not replace your current "in good shape" team.

7. Allow your current staff to learn and adapt to this new style of development. Make sure you put in your budget travelling allowance for your people to travel.

8. No Silver Bullet.

9. Pay attention to your current process and fix them. If your current internal process is lousy, your offshoring effort will fail.

10. You will save money only if you are successful. Keep that in mind.

Dody Gunawinata
Friday, March 05, 2004

John Grisham doesn't outsource but a load of other writers do. Jeffrey Archer is the prime example.

And nearly all politicians do it. At least  nearly all those that win elections.

Stephen Jones
Friday, March 05, 2004

Joel,

Software systems, embedded products are complex.
India's infrastructure currently lacks the system expertise to complete projects of large breadth and scope, at least now.  this isn't an idle statement, i know failed projects from CSCO all the way to new fledgeling startups that can't get their work done, their schedules complete, and god help you during integration. 

The Cs (capitalists), they don't deserve the VCs moniker) cause they don't venture anymore.
are exporting new jobs, wishing and hoping but not delivering new systems, ... wonder given the results and experiences above why they continue.

if you're large, global national, and can export corporate process, culture, somewhat uniform development and communication infrastucture, then you stand a chance fo success.

the way you do things is important. 

given the salary increases in India, 20%/annum, and the attended costs of doing above, the headcounts costs are a serious underestimate, compared to the investment of above.

it's not all about headcount costs, properly designed offshoring can be expensed..and that's the real reason i think companies are doing it.....  taxes can be reduced by outsourcing american jobs.

this problem is one of lack of expertise in system building and design.  software isn't so easily divided, into components and then later integrated without great interfaces and that won't happen if you don't have expertise in system design, development, debug and maintenance.  think about process in most startups, it
barely exists often....  this creates a huge bottleneck.

IN the 80's and early 90's japan was considered a formidable adversary.  yet the competency of even large software developers in major firms, like Sony lacked experience with building large, complex systems, interfaces and sophisticated programing models.  it took several years, several generations of product designs to catch up

india isn't any different, and with salaries growing at 20%/annum.  by the time the core competency is sufficient, they're will be no cost advantage.

in the end, one has to think what kind of company do i want to run, what's the vision.... and this virtual let someone else do the coding, without all the other pieces ain't gonna happen fast. and is kind of dumb, especially for complex systems where intergration and interoperability are key requirements.

no i think individuals like yourself, Fog Creek, realize a serious competitive advantage, a more holistic corporate vision.  and will continue do so.... and thrive.

you just can't headcount your way through an under- or inappropriately- resourced project with an ill conceived design, and badly or poorly crafted interfaces.









i

kurt
Saturday, March 06, 2004

The San Francisco Chronicle is running a series on outsourcing:

http://www.sfgate.com/cgi-bin/article.cgi?f=/c/a/2004/03/07/BUGMJ5FA9G1.DTL

Eddie Dickey
Sunday, March 07, 2004

I find all this geo-centric discussion interesting in today's global, collaborative environment.  Developers from all over the world have designed and built some of the most complicated software products known to man.  They have figured out how to work together to build world class applications.  Going "offshore" doesn't compute in a highly-interactive development environment with people from all over the world collaborating. 

Marty Morrow
Monday, March 08, 2004

I am one of many who have been hearing the outsourcing panacea for years but have yet to see it work. Doesn't mean it can't of course. I am loathe to add yet another subjective or hard to prove 'feeling' about it one way or the other.
I for one would feel better if it didn't seem to be the rule that the ones that always feel the strongest that outsourcing is the answer are the same people that I find to be the least versed in other aspects of software development.

Erik Freed
Monday, March 08, 2004

The issue of outsourcing is something that just needs the application of good old financial principles. The problem is actually quantifying costs. Many might believe their revenues will remain consistent, regardless of the quality of the product. Or do not 'budget' for a drop in quality.

The mantra 'do not outsource your core competency' is generally true. BMW may move manufacturing to other places, but most of their design is done at the same places. No need to be any different. The synergy betwwen the teams must be preserved. If moving something to India means communication becomes a problem, whether because they are generaly sleeping when you are awake, or that you do not understand each other easily, then a problem has been created.

Productivity should be the main concern.

Maynard Kuona
Monday, March 08, 2004

The big mistake these corps make is that they think lower per-person labor costs can be a competitive advantage in software development.  Many CxOs are saying that if they don't do offshoring they will lose to the competition.

What they don't get is that competitiveness in software costs is not achieved by going for lower per-hour/per person costs, but by going for higher productivity.  Productivity differences outdo per- hour cost differences by orders of magnitude.  It is insane to sack a proven productive group that knows your systems and your business and replace them with an arbitrary team of slightly cheaper programmers on the other side of the world.

Hire and retain the right people, and get your internal practices and architecture in order, and you'll save zillions more than by going offshore.

NoName
Monday, March 08, 2004

One theory about outsourcing which hasn't been expressed is that the off-shoring movement is a way of off-loading older workers and their payroll and pension liabilities.

You can't be accused of discrimination if you sack the entire workforce, you see.  The sort of companies which are supposed to be moving (moving backend system support and maintenance) are also the sort which are most likely to long-servers with out-of-date skills.

Slowjoe
Tuesday, March 09, 2004

Didn't we go through this back in the early '90s? Basically, a short-term way to save money, at the expense of the long-term? Management would float these outsourced projects that would crash and burn in 3 or 4 years, and move on to another company before the turds came back to hit the ground. Then they could point to all the "savings" they made while they were there. Good times.

But this time, things are different, I think. I don't think people are as willing to put up with it, as they were before. That or eventually, these outsourcers will learn enough about how to write software, to just do it themselves. What's so special about management, that it has to be done in the US? Take the logic to its conclusion, and you've just shipped the whole computer industry overseas.

I dunno, as for myself, if they drop-kick me out the door, I'm not going back to the corporate world - I've got plans in place to find a quiet corner of North America, and stay out of history's way. If I write software, it'll be for myself, and not for the suits.

Programmer
Tuesday, March 09, 2004

So much interesting discussion, if only the decision making managers read any of it...

There seems to be an underlying 'theme' on the last few posts about outsourcing being about politics at least as much as efficiency. Sadly, my observations during 15 years in the 'industry' (artistry?) would back this up.

Surely the issue is productivity? For decades certain people have been pointing the way, the agile movement is the latest in this trend.  Yet Corporate IT Drone World ignores all this and still treats software like manufacturing a rather dirty object.

The trouble with Agile is that it reduces the power of the managers. XP attempts to have development teams interface directly with customer. No need for Gantt charts and months of contract negotiation. No surprise that there is no real takeup of any Agile methods in Corporate Drone World, despite the possibility of real productivity gains.

I recently read that developer salaries have been declining (in real terms) in the UK, yet management salaries are still increasing ahead of inflation!!! This despite the still colossal failure rate and budget overruns of 'Plan Dictated' development.

I'm seeing management overhead of way over 30% on projects. It's not surprising that there's no money left to actually do the development, other than through outsourcing.

So at this point typical non-tech management has 3 choices: 1) Continue as you are. Put up with the high failure rate, as long as *your* managers are satisfied enough to keep your salary rising.
2) Consider Agile processes. Possibly more productive, but mega-risky in that they go against much of traditional corporate culture. Lead Architects, 80-year old FORTRAN coders and the 50% of developers that are below average will struggle in this brave new world. Oh, and you've just made yourself redundant as there's no need for all that planning and all those meetings anymore.
3) Same as 1), but outsource the development. You now have more planning and admin than ever before. You're now head honcho over 30 devs instead of 10. Fits into corporate culture, Lead Architect is still happy. And think of the savings made when those below-average producing, but way-above-average earning developers are laid off. Savings that may well keep IT managers pay increases ahead of inflation for another 5 years.

What I'm saying here isn't meant to apply to the whole software industry. Just the sector known by various names, such as 'Corporate IT', 'Bespoke', 'The Dilbert Zone'.
And regardless of outsourcing, it's a sector that I'd recommend getting out of, if you are serious about developing software. Now where's my escape pod...?

Mantissa
Tuesday, March 09, 2004

"It will be fun to see the CEO that has jumped on the bandwagon watch a couple of his plants go down because of crappy code...."

It's worth noting that most projects of consequence will never reach that point -- a company that really depends on software will just see new versions tied up in in the 'Acceptance Testing' phase for endless months and years of troubleshooting, tweaking, and fixes.

Jeff Eaton
Tuesday, March 09, 2004

Doug, what a load of crap to say that offshoring results from "our profession" failing to improve.

First, offshoring is driven by short term cost savings. Nothing more. I have never seen anyone claiming it's because local developers have failed to improve.

Second, if, as you suggest, programmer productivity had improved so that costs were lower, then offshore costs would be lower too. That argument goes nowhere.

Third, criticisms about software development come from wankers who have never developed software, will never be able to develop software, and know nothing about it. Those arguments are not valid. The fact that you use them suggests you're a user or manager, or else an exceptionally unprofessional developer.

Similarly, your use of the mechanical engineering analogy is trite and, like your other arguments, naive.

Fourth, the reason "50 percent" of software projects fail is that they're run by managers who know nothing about software. By people who think that "our profession" has failed to improve.

Since offshoring is being driven by those same managers, the proportion of failures will increase.

echidna
Tuesday, March 09, 2004

I have been on both ends of the offshoring argument. The main bugbear about it is the stigma of possibly loosing your job.

For example. The company I work for has long since been outsourcing work to other companies. We had a fixed small team for outsourcing and the system worked quite well, although the amount of documentation we wrote we could of done the work outselves.

I have also been in international teams (with each team working on different functionality). It worked quite well. I can only assume that is because no one was taking someone elses job.

Now recently it has all gone to hell. A lot of my US counterparts have been let go while thier work has gone to India or to us (Ireland). US Developers now clam up if you need any help on issues like for example all the comments removed from files or why 20 of the files are basically copies of themselves and do nothing. To give you the idea of hostility I had one developer find 5 year old documentation for a different version and hand that over as documentation for the current version and deleted any recent work.

In order to keep competitive against other countries my offices have laid off a lot of long term developers and hired fresh out of collage graduates. Some of them are good, but for the most part you are training them again stuff that you wouldn't have to bother with the people they laid off.

The writings on the wall for where I am though. I can't see them competing for long and I reckon in 2-3 years the software lab will cease to exist.

I don't begrudge someone who has talent but I can't compete on the cost of living here and that seems to be the main thing a lot of us are fighting.

Peter M.
Wednesday, March 10, 2004

echidna,

As someone who has personally developed software and lead teams for the last 18 years I have had ample opportunity to gain informed opinions.

As a U.S. developer is my opinion that U.S. developers are the best in the world.  They are passionate and deeply devoted to their craft.  The productivity of U.S. developers can be held up against any in the world.

Software projects continue to get more complex.  There is a greater need for software development than ever before.  This will not stop.

There has not been a significant improvement in software development technolgies in the last 20 years.  Virtual machine technology is a huge advance, however it has not produced a 10x improvement in productivity.    Agile technologies make development more predictable and sane, but not great deal faster.  Its more about avoiding mistakes than producing code faster.  (One could argue that its all the same.)

The same code gets developed over and over again.  Perfectly useful old code gets dumped.  Developers are presented with the same problems and issues.

The internet happened.  Cheap telecommunications happened. 

All of these factors have conspired to make offshoring appealing.

To reiterate, if software engineering had experienced great productivity gains we would not be having this discussion.  This is by no fault of U.S. engineers.  The complexity and fragility of software have made it difficult to efficiently develop and reuse software.

Since no technical solution has been found, the market has found a solution for us.  Cheap offshore development.

Keep your skills up to date and work hard, and you will always be able to find work.  (It also doesn't hurt to accumulate a nest egg during the good times.)

Doug Durham
Wednesday, March 10, 2004

Have you ever worked under insecure managers who were too afraid to let you control any piece of work because you might (according to them) overshadow them and perhaps take over their jobs? If yes, then did you enjoy it?

Indian developers are expected to work on software without having a say in specifications or design. I guess this scenario is okay if one is a fresher. Not if one is an experienced developer.

Developers with many years of experience can add so much value to a software product in terms of best practices, usability and design. Yet, in India, they are expected to just code. Don’t move your core competency indeed! If you don’t, then how do you expect Indian developers to be passionate about their work, envision the bigger picture, to realize the direction that their product is supposed to take? One is given a specific task to execute within a rigid framework and yet expected to ensure that it the product is A-one and revolutionary. Experienced American developers should try working on projects without getting any ownership or recognition. Wonder if they will end up disillusioned after a while when, with all their talent, they are only expected to write lines of code in a predefined manner. Essentially, slave labourers waiting for Big Master to issue commands.

Luckily, talented developers in India are moving out of American companies in hordes, either starting their own companies and creating their own products, or joining small indigenous start-ups. Ask any of your offshore recruiters – they will tell you that it is getting very hard to fill positions in India. One of the biggest American software companies, for example, offered jobs to a couple of great developers I know and they refused them because they just did not want to write code while taking orders from their bosses in the US who are too afraid to relinquish even a bit of control to their Indian counterparts. 

I honestly wish that U.S. companies would shut down their operations in India because it might harm us in the long run. We do not want to any increase in the 0.25 percent of the population (yup, it is that tiny a percentage - the Indian economy is not dependent on jobs from the US) working as coders and customer services operators. We want people to work on local projects that can make India self-sufficient. Incidentally, the paucity of talented developers is causing American companies to hire third-rate people and will probably lead to even poorer quality of work. Hopefully, it should accelerate the process of American companies moving out of India.

By the way, those of you who worked at the Microsoft facility in Redmond: you know exactly how good, or bad, Indian programmers are.

As for the numerous implications that Indians are not as competent as Americans… Well, I saw the syllabus of an American eleventh-grader and I learnt everything in that syllabus in seventh-grade in India. Does that make me think Indians are more intelligent or competent than Americans? Nope. Intelligence and competence are attributes of an individual, not a race.

Natasha Fernandes
Thursday, March 11, 2004

"As an executive, which would you rather deal with: a cost center with surly males half your age that cost as much per person as your highly-paid, well-dressed colleagues?"

i always had the perception that software developers were young and single and making large salaries and that these were the people losing jobs to outsourcing. the april edition of fast company has actual photos and stories of people who have lost their jobs to outsourcing/offshoring. there are many in their 50's and 60's who have lost their jobs after decades of work and won't get them back. they're too young to retire but too old to start over. i think the theory of companies using outsourcing/offshoring to cut their baby boomers and their resulting costs for health care and retirement has some credence.

outsourcing/offshoring may indeed be a short term solution or a long term strategy. in the next 8-10 years, as the boomers retire, skilled workers will be a hot commodity. perhaps companies *are* thinking ahead instead of thinking of short term gains and working out the kinks of working globally now instead of later.

it's my understanding that jobs were sent to ireland and the irish were joyful that their dreadful economy was picking up. then, jobs were being sent to india and indians were joyful their lifestyles were improving. now, labor is cheaper in china and jobs are moving there and china is about to explode as a consumer market.

in some ways it is heartening to see a global economy emerge where resources are being more evenly distributed. i said "resources" though, not "wealth". it is heartbreaking to see the effect on individuals. it makes no sense to "save" money by depleting our income tax/consumer spending base. perhaps the legislature needs to get involved as far as new tax structures, caps on outsourcing and better healthcare/training/unemployment benefits to slow down the train a little.

for a gobal model to work it needs to be truly fluid. you cannot export jobs while restricting the movement of people and goods. jobs move to other countries because the labor is cheaper. the labor is cheaper because the cost of living is lower. yet, countries restrict the ability of people from other countries to work within their borders. so, people can't follow the jobs that leave. i would be happy to live and work in another country for a fraction of my salary if my cost of living was a fraction of what it was here. likewise, people from other countries should be allowed to work here if they prefer.

for commerce to be truly global and without boundaries, then the world community needs to remove physical/political boundaries to allow a natural shifting of resources.

denise
Thursday, March 11, 2004

"As a U.S. developer is my opinion that U.S. developers are the best in the world."

It's that sort of attitude that is why outsourcing is happening. Sorry but you are not the best in the world. You may have some of the best in the world but not all.

Peter M.
Thursday, March 11, 2004

"outsourcing/offshoring may indeed be a short term solution or a long term strategy. in the next 8-10 years, as the boomers retire, skilled workers will be a hot commodity. perhaps companies *are* thinking ahead instead of thinking of short term gains and working out the kinks of working globally now instead of later."

No, when the Boomers retire, their jobs will simply disappear. Sorry, but all of us in the Younger generations are on our own, amidst the rubble of this crumbling economy. The Boomers will be lucky if they can retire, the way things are going. They believe in their 401k's so much - I wonder what will happen when they wake up to find it was all just a mirage. At least we don't harbor such illusions about the future. There will be no social security for us, and I laugh to think that any 401k will be there for me either. Thrift and saving will be there for me, just as it always has. I don't worry about the long term too much.

I suspect that this round of outsourcing will end much like the previous round of outsourcing went - failed projects and wasted money, with a good chunk of the computer industry just obliterated. And the management culprits that started it all will stay on or get promoted, at least while there still is a computer industry left in the US. Eventually, they will get outsourced too, but timing is everything.

I don't think the answer is government intervention - about all government seems able to do is raise your taxes. I don't think the politicans are going to be motivated to help, in any constructive way.

I dunno what the real answer is. Save your money. Don't have kids. Don't marry. Don't go into debt. Realize that you still have choices you can make, albeit hard ones.

Programmer
Thursday, March 11, 2004

I have been reading this discussion for a while with interest, awe, and in some cases a bit of concern. 

First a bit about myself.  I am naturalized US citizen of Indian origin.  I started out as a developer for a systems integration firm and have since been managing a product company.  We have been offshoring development for the past few years and have successfully brought to market a web-enabled, shrink-wrapped product entirely designed here, and entirely developed in India.  The product is now available for electronic download and can be installed in a matter of minutes. 

Our product is currently being used by our sister companies and by customers in the US.  We offer front-line support here, but development and bug-fixes is done in India.  All our customers here have become dependent on our product and the moment something goes wrong we get a call.

For collaboration we make heavy use of Instant Messaging and Fogbugz along with exchange of information using very detailed documents.  Interestingly we have integrated our product with Fogbugz, enabling us to be more responsive to our customers.

I personally designed the product by using Access to directly design the database, and simple HTML screens in Front-page for the user interface.  I used Visio for screen flow, and Microsoft Word for written documentation.

Also, I have become over time more involved with the business side of things and have made all attempts to stay technical, though due to time pressures I haven't been able to do much literal coding.  Hence, while I don't have time to put down real working and compilable source code, I can whip out pseudocode quite fast that the developers in India can convert to working code.  So even though this is double work, it's a small component of the overall effort, done only when absolutely needed, and in our experience very effective.

Given the state of our finances at the time we started developing this product, there would have been no way we could done this by hiring developers here.  We have another product on which we are still doing development and on which we have our primary focus.  The business case for our new product was fuzzy.  The only demand at that time was from our sister companies which would not have generated any revenues for us as a business group.  We could have spent a lot of time and money in developing a marketing plan, a business case and then developed it here, or taken a smaller risk and had it developed offshore.  We chose the latter, and among other things, found a new way at least for us, to do what we do.

There has been enough discussion about the challenges of communication problems, culture issues, etc., and we have had our share of them. 

When I was growing up in India, I was often exposed to commentary in the western and sometimes local press that pointed out to the Indian political leadership and rightly so, that the Indian economy should be opened up to foreign investment and marketeers.  It was only after a near economic catastrophe in 1991 that the government finally opened up the economy set the proverbial tiger loose causing at least partly, India's advances in software services.  Bear in mind that this tiger still has some shackles on, but that's a different conversation.

I am dismayed that so many people in the world leader of the free market system cry foul when a provider brings to a global market product at a lower price.  But it's not surprising.  When one's wallet hurts one doesn't really care about how the global economy works. 

I saw many comments about why offshoring doesn't work, and how it's an ineffective way to approach software development, etc.  I however, didn't see too many ideas on what we should be doing as a community, if IT people can be characterized as such to deal with it.  So I thought I would suggest a few.

In my association with companies that have nothing to with IT, i.e. basic brick and mortar companies, I have seen that there is a huge potential for increased productivity and efficiency.  Too often and I must admit I have not been immune to it either, we IT folks completely neglect the business problem at hand and instead go down the path of attempting to architect, once again, the most elegant, massive multi-threaded super-scalable system using up valuable design and development time.  It's like using a howitzer for a rabbit hunt. In the time you spend loading it, all the rabbits run away.

There's one thing that we just can't outsource or offshore, and that is customer intimacy.  If IT people only take the time to truly understand the problems and business of customers or users, there is a huge amount of value they can add.  I don't mean casual understanding like, "oh they sell this and this and they make money".  I mean a deep understanding.  Who are their customers?  Who are their suppliers?  How do they order the stuff they sell?  How and why do they package and deliver it the way they do?  How to they take orders?  How do they decide what to sell, or make? What are some of the quirks of the business?  Literally get inside the head of the user.

We must realize that all offshore companies' personnel have the disadvantage of never having the opportunity to get that level of intimacy with customers and users.  And there in lies a great opportunity.  Obviously some will be flexible enough to change to adapt and others wont.  But in a global dynamic economy what else could we expect?  After all these countries that are providing offshoring are going through their own pains at political, social, cultural, and personal levels to adapt to provide these services and compete globally.  Just like they are adapting at this very moment to address the problems in offshoring pointed out in the various posts on this forum.

At a national level, I think it's all about knowledge and creation of wealth.  Knowledge is power.  As long as we are ahead of the world in knowledge, and the ability to convert that knowledge into wealth AND own that wealth, we'll be okay.

This translates into some simple rules for us as a society, businesspeople, and individuals:

1.  Education at all levels and of all types should be at the forefront of the national agenda.  Technical education is often looked down upon as less glamorous and as one contributor mentioned often associated with "getting one's hands dirty".  There's already a trend in decreasing engineering enrollment in schools, and majority of grad schools in technical pursuits are foreign born (like myself).  As an aside, there was a bit of this tendency in the company for which I worked before.  There seemed to be a notion that if you were technically strong, you couldn't understand business or manage a business unit.  What hogwash!

2.  Companies that offshore work should do as much as they can to retain as much equity as they can in these operations and if that is not possible, then at least the ownership of the intellectual property.  They should also invest in understanding the legal environment of the offshored country so they have the teeth to enforce violations.  Above all, know all they can about the offshoring operating environment.

3.  As individuals we cannot afford to stop adapting.  Instead of saying why it offshoring doesn't work or wouldn't work or shouldn't be done, if it affects you, then figure out how you can add value and figure out how you can articulate that value to your customers.  Even if you're an employee, look at your company as if it were your customer and justify your salary from a value perspective.

I apologize in advance for the rambling nature of this post and if I have offended anyone inadvertently.  It's just that this is clearly an important issue and one with so many facets that brevity would not do it justice, at least in my mind.

If anyone wants to discuss this more, know more about my product, or converse at a personal level, please send me a private message.  I hope this was somewhat helpful.

Name Withheld
Thursday, March 11, 2004

"I don't think the answer is government intervention - about all government seems able to do is raise your taxes. I don't think the politicans are going to be motivated to help, in any constructive way."

this isn't true. currently politicians are proposing and working towards efforts to shift some of the economic burden from displaced workers back to their companies. a lot of state governments are refusing to award contracts to companies that outsource/offshore their work. others have plans to increase the tax burden on companies that have more than 10% of their workforce offshore. there are other ideas and proposals in the works. don't give up hope!

denise
Thursday, March 11, 2004

"this isn't true. currently politicians are proposing and working towards efforts to shift some of the economic burden from displaced workers back to their companies."

That's just going to make companies reluctant to hiring new employees in the long run.  It's already happening in Germany.

"a lot of state governments are refusing to award contracts to companies that outsource/offshore their work."

That's just going to increase everyone's taxes.  Also, in general state governments want businesses that export their goods to foreign countries to move there.  This policy will hurt those companies.

"others have plans to increase the tax burden on companies that have more than 10% of their workforce offshore."

This will just render doing business here unattractive and sources of financing will move to locations there are friendlier laws.  Remember that a lot of capital in the US economy is sourced from outside the US.

Name Withheld
Thursday, March 11, 2004

----"a lot of state governments are refusing to award contracts to companies that outsource/offshore their work."-----

This is almost certainly to run foul of WTO agreements.  You'll end up paying more taxes and seeing manufacturing jobs lost as other countries bring in retaliatory tarriffs. And State governments might find they've saved no jobs in their own State since they will be have to allow out-of-state competition.

Incidentally 'Name Witheld''s analysis is the best I've seen.

Stephen Jones
Thursday, March 11, 2004

Doug, if development was cheaper in America, then it would be still cheaper in India. Your argument that there has been some sort of failure in improvement in America makes no sense.

Secondly, there has been a massive improvement in development anyway. Compare what a developer in 1980 or 1990 could produce in a day with what can produce today.

echidna
Friday, March 12, 2004

NameWithheld, an important reason that technical occupations have been unattractive for American and other Western students is that business has undermined pay rates for such jobs.

Stephen Jones, the American government has been very successful in making car manufacturers establish auto plants in America. Government intervention occurs far more often than is apparent at first glance. China and many other nations do very well at it.

echidna
Friday, March 12, 2004

The USA does pretty well out of making special cases for protectionism.

The thing with trying to prevent outsourcing of public services is that the US, together with the EU, is the greatest beneficiary of this. They're going round the world, sometimes using the threat of withdrawal of World Bank or IMF funding as a lever to prise open relcaltriant administrations, demanding that developing countries do precisely that.

Stephen Jones
Friday, March 12, 2004

"Doug, if development was cheaper in America, then it would be still cheaper in India. Your argument that there has been some sort of failure in improvement in America makes no sense."

It does make sense.  If something makes development 50% cheaper in both India and America it makes a bigger difference in America.  For example, a $6mil American project becomes $3mil while the same project in India goes from $2mil to $1mil (plus overhead as described below).

There are time, management, and logistical overheads that add to the costs of offshoring regardless of how cheap it is on the other side of the ocean.  Even if Indian programmers worked for free, to an American firm they would still have a nontrivial cost.

If some breakthrough made things sufficiently cheaper enough in both places, the American project might drop to $1.5mil, while the Indian project drops to $500K plus an unchanged $1.2mil overhead -- making the American project cheaper to do.

NoName
Friday, March 12, 2004

Let's look at things that do get outsourced. Webhosting gets outsourced a lot. You can do it in house, but it seems that leaving it up to others makes sense.

I would argue that it is commodification of the whole webserving system that lead to it being outsourced. Since none of the parts of the system can change very much, and since they are all well-known and standardized, that leads to multiple suppliers of these systems, which drives the price down and attracts people to outsource.

Wheat is a commodity. Oil is a commodity. Is software a commodity? Are really long numbers commodities? That's all programs are, at the end of the build - just a really long number.

I suppose the kinds of software that have to conform to as many standards as possible, is probably in danger of becoming a commodity. OS's, for example. But even so, nobody ever gets into an argument about wheat specs - no, I wanted *this* wheat, not that wheat. Wheat is wheat is wheat. It's so spec'd out PEOPLE DON'T EVENT THINK ABOUT SPEC.

I think some people get the impression that since the physical capital requirements of software development are low, it follows that anyone can do it. And if anyone can do it, then it must be a commodity. I mean, anyone can grow food, and anyone can be hired off the street to make cars, right? What's different about software?

From what I've seen, there are very few real programmers out there - most people tend to produce abysmal code. I can't tell you the number of boneheaded reverse string impls I've seen over the years. Most of them don't work. It's a rare occasion that someone will get an ineffcient impl correct, and it's even rarer to get a real efficient impl out of someone.

Nah, this is all about US management, and how f'd up they are these days. If there's one thing I've seen more of than bonehead programmers, it's bonehead managers.

We could probably produce all the world's need for software, if we identified the truly competent people, put them into small teams, and then let them work. However, managers rarely get the people they want, but almost always get the people they deserve.

I don't know how many times I've seen a bonehead manager staff up a project with bonehead programmers, to the point where nothing was getting done. And instead of blaming the manager, they fire the programmers (usually the ones that most threaten the security of Executive Director Bonehead) and then outsource the whole project, leaving the same bonehead in charge. Now, on top of incompetence, we have 18 hour timezone changes, and 12,000 miles separating the two. Add in a badly (or well, depends on which side you're on) written contract, and what would have died with a whimper, flames out in an angry bang of phone calls, finger-pointing, ass-covering, and money-loss.

Bottom line, money got wasted, you taught a bunch of foreigners how to write software, and you made a bunch of people unemployed, probably the ones who were getting the job done. Because the contract wasn't worded right, you've probably got a steaming pile of code that you're going to have to hire another flock of boneheads to try to get right. If you're lucky, maybe there's one or two people you'll get by chance that'll counteract the effect of all the others you hired.

Most great software I've seen has been written by small teams of a few competent people, who aren't really being "managed". How many people did it take to write Quake2? How about Half-life? Or SimCity 2000? Dollars to donuts, even the original Windows NT team was probably quite small too. The linux kernel team is quite small - only a handful of people really maintain the kernel day to day, and I believe that only one person actually wrote the thing to begin with.

anonymous strikes again
Friday, March 12, 2004

"Are really long numbers commodities? That's all programs are, at the end of the build - just a really long number."

So that is what I have been doing wrong all these years studying, passing exams, designing, documenting, coding, fixing bugs, supporting when all I had to do was type a really long number. *sheesh*

Simon
Friday, March 12, 2004

"NameWithheld, an important reason that technical occupations have been unattractive for American and other Western students is that business has undermined pay rates for such jobs. "

I wouldn't even know how to begin to respond to that comment without analyzing the specific situations in which this has occurred.

However I can say this:  the company where I used to work, where business types would look down on techies was acquired a few years ago and is a much smaller and less valuable entity today,  while the world's richest person goes by the title, "Chief Software Architect"

Name Withheld
Friday, March 12, 2004

The interests of big business are driving the off shoring of jobs. EVERY professional job is at risk of being off shored due to labor arbitrage not free market dynamics!

Silence Or Compliance
Raymond Donald Pairan Jr.    
Copyright (c) 2004 All rights reserved.

INTRODUCTION
This paper is just a further elaboration on some of the topics that I presented in my work entitled “The Economy” which I hope has inspired the moral, the passionate, and displaced future working slave class to start inquiring about their ultimate condition within the hands of the business/political elite. It is absolutely wonderful that certain members of the media have started to question the direction and motives of the business/political elite and have beat the bushes where they’ve been hiding thus exposing their true motives to the clear light of day. But make no mistake the business/political elite will stop at nothing to eliminate any opposition be it ethical government, the media, or any other encumbrance that inhibits them from achieving their goal of creating a subservient working class and a contrasting unencumbered business/political elite power base.

SILENCE/COMPLIANCE
At this point in time the media has the business/political elite (forgoing referred to as the controllers) on the defensive at least within the United States, which is in the mist of a presidential election year. Make no mistake the controllers would like to and will eventually silence all media dissent against their planned worldwide domination of all elements that can negatively effect their goal of sucking every last drop of revenue from the world into their realm. If this means devising a means of quelling dissent from those within the media that don’t wish to go quietly with the controllers view – so be it. Keep in mind that money and power are the driving force of the controllers and everything and anything that inhibits their eventual control over these elements in their eyes must be eliminated. This could mean the off shoring of media jobs to compliant outlets such as India where in the case of the English speaking world there exists a future working slave class that speaks English rather decently. The controllers could then eliminate media disseminated descent to their plans of complete global control over all the factors of production including the eventual working slave class. This means that no job is safe from the plans by the controllers to evolve all jobs into mere subservient, compliant, malleable factors of production. Time is limited for the controllers and others that support the free trade (code word – free) subjugation over all workingmen and women. The ideologue's within the future working slave class will blindly follow one another lock step onto the slave ship that will set sail for their future of no dissent, compliance, no morality, no freedom, no future but one of subservience. The time is very near at hand so those within the media that are the moral voice of dissent must take our case to a fever pace in order to expose and keep all rouses from becoming the new molded distorted facts that can be espoused by the controllers. For the controllers their religion is money and power because for them nothing else matters. If they can gain control over not only you the educated working, the hard factory working, the service sector working, then they will be free to build a truly worldwide free market economy where they are free to do what they wish when they wish it.

BEND THE TRUTH LIKE LIGHT THROUGH A PRISM
If you say something enough and if you change the dynamics and distort the facts to your liking then eventually it will be believed by enough people to become the truth. Basically, the controllers just prior to taking complete control over all media dissent will be hard pressed to dispute facts such as 3 million jobs lost in under 3 years, poverty within the United States at record high levels, whole town centers across rural America with a preponderance of vacant store fronts, a trillion dollar deficit, most states within budget crisis, a college education now getting further from the reach of most Americans, and the list goes on and on. Historically speaking when facts don’t convey what the power elite (in our case the controllers) wish than they just change the way those facts are presented so they convey a distorted picture favorable to those in control. This is nothing new and has been employed quite successfully by those in power many times in the past in the form of propaganda. We must maintain focus on the standard measures used within the past and not let the seeping of new measures (touted by the controllers) distort the facts.

THE TIME IS NOW
It is imperative that we work with the media while it is still free to convey the truth about the controller’s objectives and goals. Time is quickly running out for the average working citizen to maintain some semblance of influence over their respective governments. The controllers will and are gaining control over these governments covertly, directly, and through draining the government treasuries converting partially effective governments into impotent shells of past power. Once the controllers are finished with governments than even the political elite will be at jeopardy of becoming obsolete. So those within the political elite may be enjoying the fruits of soiled money conveyed to them by the business controllers but make no mistake once the business controllers have achieved their objectives they will dispose of even the political elite thus eliminating this drain on their coveted profits. There exists one goal of the controllers and that is to extract and drain as much wealth from the world as is possible. The controllers have no God, no religion, no morals, no scruples, and no conscience but only one overriding unquenchable desire – the complete control over all aspects of their bottom line. They will stop at nothing to satisfy their additive need to acquire more and more wealth at the expense of anything that gets in their way. Any worker that is currently employed by a firm that has global reach over its factors of production (and this doesn’t include many small to medium sized firm’s playing by the rules) are at risk of being eliminated. This includes every imaginable profession since there currently exists the technology and desire (by the controllers) to out source any profession – first and foremost the media (the thorn within the controllers side). It is imperative that in the next few weeks and months that all of us that count ourselves among the working class keep abreast of issues, meaningful relevant facts, and not be swayed by propaganda spewing from the controllers. We must make our voices heard through written, vocal, and peaceful dissent to the path that the controllers are leading us down. We must not and cannot follow the controllers blindly into a future of no government and working slave subservience. Remember the controllers will use key phrases such as “free market”, “household survey”, patriotism, and many others to sway global opinion towards their way of reasoning. Also, keep in mind there are many honest, decent, caring employers (mostly small, medium, and large sized businesses) that are playing by the rules and respect their workers, and communities. It is probably only a few but powerful firms making up the Fortune 500 that are the real controllers of a destiny of worker subservience. I will continue to write the unpopular truth be it what may come. You should continue to question, reason, and judge the facts and not be swayed by propaganda. Let the facts speak for themselves because they surely will if given the chance!

Raymond Pairan Jr
Saturday, March 13, 2004

A number of respondants have said that "This is the way things work - everything is moving off-shore".  Actually, the only two areas where there is a significant move from first world countries is in manufacturing and IT.  Although the Internet enables other sectors to move they aren't moving.  Retailing is not moving.  Look at the lack of success of the Internet grocery companies. Even most Internet shopping is done by buyers within the same economic zone as the seller.  So the associated transportation, market research, etc. jobs stay put.

Manufacturing is a special case.  Today the world's manufacturing industry is going through what the agriculture sector in the United States went through a hundred years ago.  In agriculture, rising productivity finally became a large enough factor that the production of the product (grain in this case) was no longer influenced by the price that could be paid by the consumers.  Think of Econ 101's price-demand curve.  As you lower the price demand increases but before you get to a price of zero the demand has crossed the axis.  People can eat just so much food and it doesn't matter how low the price is they just don't want any more.  With the capabilities of modern manufacturing lines it is possible to create more finished goods than the market can consume no matter how close the price is to the raw material price.  So what's a company to do?  They can create more demand by advertising and trendy marketing.  They can innovate and meet customer demand with something that is so new it will bring a premium price and be a compelling alternative to what is presently in the market.  Or they can cut away at the already thin labor component in the price of their product.  Absent any law telling setting a rule on how the game is to be played, cutting labor costs is both the easiest and least imaginative, and innovation is the hardest.

IT, and programming in particular, have no raw material price.  All the cost is either labor or infrastructure (machines, offices, etc.). GNU/Linux is not socialist as one of the posters here has proclained.  It truely follows the capitalist model that when labor and infrastructure are free of cost so will the software be free of cost.  So what does a company do to compete in software?  They can innovate, producing a compelling app in a new area.  They can market, producing demand where there was none before.  Or they can look for ways to reduce the cost drivers of labor or infrastructure.  Going to a country where wages and infrastructure costs are lower has the same appeal in software as it does in manufacturing.

But as several posters have pointed out, software is embedded in a cultural set of values, both for its development and its use.  If the values are not shared then what is developed will not be acceptable to the user.  We are closer today than at any time before in history, but there is still not a world wide culture and set of values.  We can't even agree on how to represent the decimal position (comma or dot - on the line or raised).

Verisimilidude
Sunday, March 14, 2004

Hi

Who were the biggest automakers in the world years ago. the us. whos the biggest now japan. they started small, it wasnt as good. guess they just beat the hell out of everyone over time.

i think software will follow a similar trend.

just my two cents

another coward
Sunday, March 14, 2004

A number of posts take the position that software development is more akin to a creative process than a manufacturing process. Further, that failure to recognize this and instead treat software as a manufacturing exercise is incompetent management.

Whether this is true or not doesn't matter. The business community has a strong preference for software as manufacturing, especially for very large efforts.
Repeatable process, predictable schedule and cost, transferable knowledge, etc. Measurable software quality. The ability to scale up development by overcoming the problems posed by the mythical man month.  The field of software engineering has not made much progress in these areas.

Outsourcing/offshoring isn't the business community's answer to this, but it's part of the equation. There will be a continual push to make software development more process oriented and less dependent on the skills of individual developers, and outsourcing/offshoring fits with the model.

anonymous
Monday, March 15, 2004

So programs are just long numbers, eh? Are you serious?

99898979979974467621982332342434343723764323923223232 is a really long number. But it's not a program.

All programs are actually sequences of numbers, but not all sequences of numbers are programs. Books are just sequences of words. The cost is in the arrangement of the sequence. 

Any task can be reduced to such meaningless hyperbole: sport is just a set of bodily actions. Manufacture is just fixing things together. Trees are just tall brown things with fiddly green stuff on top. The Mona Lisa is just some powdered pigment slapped on an animal skin.

Management is just random mouth noises....

Mantissa
Monday, March 15, 2004

Apologies, Anonymous Strikes Again,  despite my crude sarcasm, I actually agree with most of what you say!!!

There's been a huge influx into software dev in the last decade. Many with no aptitude have got their foot truly in the door, whereas they wouldn't have stood a chance pre-internet/Y2K boom. As you say, managers appointed these people, then managers gave the inexperienced too much credibility.

Also we now have this 'full life cycle' principle. Grads with <1 year experience are producing requirements 'analysis'. When I started, mid-1980's, it was assumed it took *many* years experience and high natural ability to analyse. Doesn't matter how loudly the PHB's shout "we need you to be full life cycle", we will tend to be better in certain areas. I accept that Design/Code/Test should be done together. But I don't accept that Requirements/Domain Analysis should be chucked in too.

So back to outsourcing, again I think it could work, so long as a solid requirements doc is outsourced to be designed/coded/tested away from initial source. I don't agree with drawing the line at analysis & design at home. Code and test overseas.

Mantissa
Monday, March 15, 2004

The main reason for outsourcing is corporate greed.

"Corporate profits are up 30% since the end of the 2001 recession, according to the Commerce Department. And dividends paid by the Standard & Poor's 500 companies have increased 19% in the past two years. By contrast, 2.3 million jobs have disappeared since 2001. And weekly earnings for the average worker in 2003 rose just half of one percent in two years, after adjusting for inflation, the Labor Department reports." - USAToday OP/Ed

The problems with software development come from poor management. Managers are too afraid to fire incompetent workers. At the same time, they have unreal expectations for new job applicants. They have no clue how to manage their labor resources. When a project is cut, so are the people. Doesn't matter if you are a star employee or not.

I agree with the person who said that if India wants to code, let them compete against US software developers. Instead, they are content to steal US jobs because they are cheap labor.

Verizon Data Services Employee
Monday, March 15, 2004

I'm sorry to say, but this comes across as a bunch of (somewhat) whining  Americans who can't stand being beaten at their own game*.

Only at the start of the thread did someone touch on the real "crime" on outsourcing - loss of intelectual property and giving a leg-up to future competition. Sending jobs offshore is a very efficent way to build up competition to "your" businesses by providing the skills and experiance. No one has learnt from the rise of Japaneese or Korean industrilisation and the effect on car manufacturing or consumer and component electronics. No one remembers why the freemasons were origionally formed.

Being more efficent than your competitor is one way of gaining an advantage. Dominating a market by producing something your competitor can't is another.

Looking for the short-sighted cheap fix, American companies started this whole process. It now infects everyone. See the comments about IBM and Telstra (our biggest telco by far). Michael Moore asks the US execs - "when is the profit enough?"

I'm now involved in providing training to these "oversees" workers because the demand in Australia has dried up - all the jobs are going to India and China.

Example: Think Hollywood is top notch? Lucas's ILM best in the world? What size was the country that picked up eleven Oscars recently for possibly the biggest movie trilogy ever made (LOTR)?

you're in big doo-doo now, boy-o's. No closing this Pandoras box! Lets see some REAL free trade for a change and see how the USA likes it!


* I have lots of US/Aust examples if someone wants to argue...

barry.b
Monday, March 15, 2004

"The cost is in the arrangement of the sequence."

You and I aren't too far apart. Yes, I was being a bit over-the-top on long numbers. If any old long number could do, I would say that programming would be a commodity, and we could all go home, and find something else to do. Leave programming up to the random number generators.

Here's another activity that's substantially similar but isn't getting outsourced - musical composition. Who's to say that a guy overseas can't write music just as well as a guy over here? Perhaps people in foreign countries have different ideas about what good music consists of?

I guess the computer industry analogy would be, they want an original orchestral sonata, they want it for $5/hr, and they want it to be worthy of playing in Carnegie Hall.

Oh, and they don't want hire anyone particularly talented to write this musical piece - any old bonehead will do. You see, we'll design this special musical composing <i>process</i> - and that will allow us to make up for the fact that nobody we hired can do anything more complex than "Three Blind Mice".

anonymous strikes again
Tuesday, March 16, 2004

Glad you weren't offended Anonymous Strikes Again! I admit to knee-jerk reaction to your 'big number' comment as I've heard managers of the, as you accurately say, 'boneheaded' variety actually believe this sort of stuff.

Now I admit that their can't be much more to say on this. But I'd like to reiterate (not re-waterfall) that I have no problems with the intellectual ability of far-eastern developers. Such is the anti-intellectual bias in most major western corporations, I'd like to believe that they're technically way ahead of the west. Not a problem to me.

In smaller companies that I've worked at, skills are generally very high. But in the larger firms, probably employing the vast majority of devs, I'm regularly amazed at the ignorance and lack of interest in development, at all levels.

I estimate that the 20% least skilled developers could 'disappear' without anything other than a beneficial effect on the industry. More money to spend on those who can do the job well, less time spent dealing with the damage done by the boneheads.

Of course, in the real world, managers have not a clue who  the most productive are, so they'll just get rid of anyone. In fact the more skilled tend to be viewed as 'trouble maker' types, so will go first. Also amazes me that mgrs have no interest in measuring productivity at all, perhaps worried how they would show up if objectively measured?

My best hope is that the future of software will involve smaller teams, maybe 'consultancies' of experienced, pragmatic type developers doing most of the work. Bigger companies will move out of development, maybe outsourcing, maybe realising that they don't actually need much of the software they're building. (The post about companies demanding complete bespoke apps at huge cost, when they could probably 'glue' standard office apps for the same result, strikes a chord with me).

This will leave an smaller home-based industry, but with much of the 'fun' of developing restored, and most of the freeloaders moved on into politics or something.

Mantissa
Tuesday, March 16, 2004

I'll draw an analogy from architecture and building to software design and coding. A few months ago I had a conversation with the project manager who supervised the construction of the Getty Center museum. This is a huge and complex building which purportedly cost US$2B. He complained that the architect came onsite all the time and frequently made changes to newly finished portions of the building right after those portions had been finished. This ProjMan complained that the architect was a pita and caused a lot of extra cost. Personally I think the building complex is extraordinary, and told him so. The compliment was intended for both the ProjMan and the architect.

A few days ago I mentioned the story to a friend who is a contractor/builder in Silicon Valley. He replied that it is entirely appropriate for the architect to frequently visit the site and make changes during construction, even to pieces that have already been built. That is what happens when the visualized project is actualized. He laughed about the ProjMan's complaints, and said that is also his job - to manage the project so that it ends up looking the way the architect envisioned it.

I assume a similar process happens in software design and coding. But if the coders are far away and the designers are out of the loop, how can the actualized product be exactly like the envisioned thing?

dano
Tuesday, March 16, 2004

Just from observations in the corporate world.

1.Good developers want to produce work that they can be proud of.  There goal is quality.
2.Managers want that same work to be delivered by a date that was arbitraily decided before the work was defined.  There goal is to meet their smart goals.
3. The customer wants their requirements met.  Their goal is full functionality.
4.Upper management wants that same work to cost less.  There goal is their bonus.

Guess who usually meets their goal, often by expensing costs over several years, creative (but legal) accounting, and sometimes outright chicanery.  Outsourcing is just the newest way that goal number four is met.
A successful project is: On Time, On Budget, Fully Functional
The sad thing is that if management valued the developer's goal, the other three would be met in most cases and outsourcing would be based on the quality of the work done and not how cheap it was.

HC

HC
Tuesday, March 16, 2004

barry.b, it's hard to understand your point.

You seem to think it's only America harmed by offshoring, yet you provide examples of its effect in Australia. Do you understand what you're saying?

By the way, I'm in Australia too. You should not presume everyone here is American.

echidna
Wednesday, March 17, 2004

barry.b, you understand what's going on? Greedy and stupid managements are driving offshoring, in Australia as in America and the UK.

The arguments you see in Australia that we are a beneficiary of offshoring are ridiculous. New Zealand's Lord of the Rings is a different subject.

echidna
Wednesday, March 17, 2004

This country is about being creative and doing it better and faster than the next guy. The jobs being pushed offshore are eventually going to be done by AI programs, so the shift will be temporary, unless we are what everyone thinks we are, fat, dumb, and lazy.

Stop compaining and get inovative!

Scott.P.
Wednesday, March 17, 2004

The comment by 'anonymous' on outsourcing music is actually spot on with the original comment in this thread.  Much of the music created for American movies and PC games is written by an American composer (read software designer), but performed and recorded (read coded) by orchestras (read developers) in Russia and Eastern Europe.  The cost for a musician there is much less than the cost of an American musician.

I agree with a previous post, that the heart of this is  innovation.  Traditional offshore manufacturers have locked down the processes involved in building a product, but the products themselves are still invented elsewhere.  Of course, this is changing, but only by making other countries more innovative, not stealing the innovative spark from the countries where it currently resides.  Raw talent is not something so easily exported.

The question then becomes, who is the innovator in the software development process?  The designer, or the developer?  Or is it a hybrid?

If developers are not part of the innovative process in your company, then offshore.  However, if this is the case, and software development is your core competancy, you have bigger problems than offshoring to worry about.

AJ
Thursday, March 18, 2004

RE: is software development a creative process or a manufacturing process:

Development in the small is largely a creative process.  Development in the large is largely a manufacturing process.  So once you get large enough you can "manufacture" creative processes.  It's only an approximation to manufacturing, but if you're big enough and you squint, you're just a factory of ideas.

Not sure if that helps anyone, but I find the thought useful.

Oran
Thursday, March 18, 2004

Mixed metaphor city,  Aj!!!

The musical score is not the design - it's the source code! Think about it - the orchestra/musicians are the processor, following the instructions written by the composer. So the composer parallels the programmer/coder, not the designer.

Presumably the 'build' if the construction metaphor equates with actually recording the music.

Really, isn't it about time software stood on it's own two feet and made it's own metaphors? I think there's a long way to go, but the Agile movement is at least one step in this direction.

Simply, software is not like anything else at all. It is something new. Thats why we're so bad at building it - none of our existing models fit, yet too many of us continue shoehorning them in. In my experience, the companies effectively developing software are those comfortable with software as software, with no desire to be considered 'engineers' or 'designers' or 'architects'. They just get on with it and get the software done. Outsourcing is not an issue with them. It's a solution to the wrong problem.

Mantissa
Friday, March 19, 2004

"Much of the music created for American movies and PC games is written by an American composer (read software designer), but performed and recorded (read coded) by orchestras (read developers) in Russia and Eastern Europe."

I disagree. Coding is composing the sheet music. Compiling/interpreting the code, is the equivalent of playing the musical piece. In fact musicians do give personal interpretations to pieces they are playing. Don't confuse the two.

Compiling costs are so low, that they are free for all intents and purposes.

Computers are strange businesses - all the money is spent up front on research and development, while the manufacturing costs are next to nothing. Someone said that the first chip out of a fab literally costs the $2billion it took to make the plant, and all the subsequent chips are free, more or less.

I would argue the same thing is true for software. The first WinNT CD's true value was probably $10million, or whatever they spent to code and debug the OS. All the subsequent CDs are free, from their point of view.

The moive industry is similar in that regard too. All the costs are in shooting the scenes and assembling and editing the shots. The subsequent manufacturing costs are miniscule in comparison. You could argue the true cost of the first showing of a movie is the $10million or whatever it took to make it, and the rest are free more or less, from the moviemaker's point of view.

You can't offshore software development without it all going overseas. Do you really think those guys in E. Europe and India and China really want to work for some clueless bonehead, when they could write their own stuff and sell it direct to the customer? They're just saving enough capital up from these consulting gigs until they can strike out on their own.

anonymous strikes again
Friday, March 19, 2004

Most of the arguments above seem to have an assumption that developers belonging to a few countries are the only ones who produce great code and have innovative ideas and you will get quality assurance from them. I think its time for them to reflect on their understanding of "nature of man" rather than spend time on analysing why they are loosing jobs due to outsourcing.

Harris
Saturday, March 20, 2004

Hi,
I work in India. First - I am not doing offshore development. I develop products for sale in the Indian market. So no comments on workable or not workable, cost effective or not cost effective, morally right or morally wrong.

There have been some comments Offshored code equals Bad code. I want to share some aspects of the culture in India which may be useful to people thinking of outsourcing.

People who do well in their studies are celerities. They do endorsments. They get interviewed. Their mothers get interviewed. Mothers will share things like how she used to get up at 4 am everyday and wake up her son/ daughter so that she could study. How she made sure he attended the best tutions and made sure he studied 14 hours a day etc.

But all this is at a cost. The students are interested in scoring 100% in all their exams. Nobody is really worried about being a well rounded personality etc. If it part of the syllabus for the exam they will make sure they know it well enough to get 100%.

So if you want good code, all you need to do it make it part of the syllabus. Say that one of the metrics you will measure is how "clean" the code is. And say text book for learning to write "clean" code is XYZ by ABC. Don't need to waste your time setting up training programs or anything like that.

If writing "clean" code is outside the syllabus - nobody is going to waste time even finding out what is clean code. If it part of the syllabus it will get cracked.

Am I saying everybody in India is like this. I am saying that the people working in outsourcing companies are likely to be like this. People who are thinking outside the box are probably doing something else. People who love coding and writing "clean" code because of the pleasure it give them are likely to be trying to do product development or setting up small companies etc.

S. Govindkrishna
Sunday, March 21, 2004

I notice and effect of this in Saudi (where the IT workforce is predominantly Indian).

If you look for a book on programming it will always be related to the language. Try and get a copy of McConnell, or Brooks or Togliatti, or any book not specifically tied to a language is nearly imppssible, unless it has been set as a text for a uni course.

And the same applies when I go to the Sri Lanka importer to look at the computer books he gets from India.

To make things worse, Indians officially can't buy from Amazon.

Stephen Jones
Sunday, March 21, 2004

http://www.despair.com/discovery.html

Its all about companies "saving money". Now whats so bad about that? For a second, forget IT .. Any worker/engineer in a foreign country has a different living standard and living costs. Breathing in the US has always been more expensive than breathing in india. If an indian can work for a US company "at home" and deliver the same quality for a much lower salary, companies choosing these people _could_ have a competitive advantage. And since software is that soft you can actually put it on the internet or have it being produced somewhere else and delivered via wire, why not take the chance?

Splitting the team
This would only work if they had a very high development standard, including specs, architecture etc.. and great communication. So could this "virtual" company actually have their core teams being splitted up around the globe (say architecture+design: USA, fine design+impl: india)? This would be risky, because chances are quite low people from different teams could accidently meet at a coffee machine and get into some real communication. Or lets just ask the indian team if they would agree upon splitting up, half the team in india, the other half in china. "man.. they are just doing the device drivers". No way. So I think teams will have to stay at one place, eerrh even in the age of VPNs. Lets say within the same building? People that write the software are actually quite organic entities.

Software Crisis
Here in germany a lot of IT projects have failed/are failing right now. Of couse this is mainly project management - even if developers were the bottleneck, the project managers failed to tackle that problem. But saying that developers are too expensive is a nice excuse, of course.

The team moves
Now I think the fun or the problem starts as soon you ship the requirements (as precisely drafted out as possible) and you get "the software" rolled-out in time (also beta tested?). Now this would be quite hard to beat, because these guys are as fast as you and only take 40-50% of the cash. Still, overall risks are high. But they can be lowered as soon as the company itself has a subsidiary in the country and supervises all things. Thats what SAP is planning right now. Hey, they are only planning to create 15000 jobs in india instead of Walldorf/Germany because they are challenging the asian market. Sure...

The only thing people here can do is increase quality and concentrate on rolling out ...

Amanjit Singh Gill
Tuesday, March 23, 2004

I think outsourcing/offshoring is inevitable and that instead of discussing more it is better to accept it. Good or Bad, Profit or Loss, Goverment or People, talk about any aspects and what you see finally is a complete waste of time and energy.
21st century, right from the beginning brought a lot of changes, this is just one of them.

Like it or not, outsourcing & offshoring will presist and mature in the coming years.

As you like it.
Tuesday, March 30, 2004

I understand why companies are offshoring.  I don't know if this is being shortsighted about companies bottomline but I understand the logic. Why shop at Target when you can get the same or almost same quality goods at Wal-Mart.  But my question is why stop with programmers, why not VP of development or CEO.  India does have a good set of management and engineering schools ( IIM, IIT etc). So why are the CEO's offshoring only programming jobs. Why can't board of directors elect to have an Indian CEO who is paid 90% less than an American CEO.  There are lots of successful ones ( Infosys Narayana Murthy , Wipros Azim Premji to name a few).
and where do we draw the line the Indian MP makes 95% less than an American MP so should we offshore the MP job ( I am sure it will help the budget deficit). and oh how about sending our judiciary to be run by the Indians. Indian Judiciary is based on good work by Lord Macaulay. Where the hell do we draw the line. Next time when Intel's Craig Barrett says we need to keep up with technology education, ask him to hire his next VP of Marketing from IIM, Ahmedabad and see how his mgmt team reacts to that .

Mad-As-Hell
Wednesday, March 31, 2004

At the higher levels, managements and investors become intertwined.  Being a CEO is a high paying and prestigious job, a kind of "gift" that can be given to an influential investor's friend (or to himself).  A major shareholder is not going to outsource a plush job.

Large shareholders should not but often do operate at the expense of small shareholders.  If a guy founds a company and it becomes successful, he often populates the upper levels with a mixture of his friends and outside hires.  For the friends, the jobs are a "thank you" for being there in the beginning.  Some of the friends actually do operate well at that level, some are decorative and some are merely dead weight.  A subset of the friends and the outside hires end up doing the actual work and the rest get a free ride.  The expense is carried by all shareholders but the "giving" shareholder is the only one who gets the benefit of being known as a "great guy", "a real friend", "loyal" and a "guy that did me a favor".  And, really, who wouldn't want to give gifts to their friends that are very cheap (but very valuable to the receiver) and have a bunch of chums around that tell him what a great guy he is?

Can companies afford it?  There is a good amount of slack in the system; companies do not instantly go out of business when an inefficiency is discovered.  The dole can support quite a few people; more than 50% by my estimates.

Why not can their butts if they do nothing?  Investors have friends and college roommates, too, and they don't like to give their friends the finger.  Really, they don't care that much and keeping a bunch of people on the dole generates a lot of good will and loyalty.

Daniel Howard
Friday, April 02, 2004

I have run outsource projects in India recently coming back to Europe.  IT wage inflation in India is outrageous:  30%/year or higher.  The Rupee is strong and I predict in 3 years, India will have effectively priced themsleves out of the market.  Indeed work is being outsourced from India to the Ukraine/China in some cases.

I came to the conclusion that only long-term relatively large projects are likely to succeed with outsourcing.  One-off projects of, say, less than 15 man-years effort are pretty well doomed to failure.  This is because you need a lot of communication between project managers, product managers, architects, system testers, deployment staff across countries and timezones and relatively small projects will not have the investment clout to set all this up.

I am now looking at setting up a long term outsource project in Eastern Europe.  The time differences are marginal (for Europeans) and you can get around most of Europe with a couple of hours flying.  The costs can be very low whilst the staff are highly educated and often speak excellent English (and sometimes German/French plus a native language).  In this world of fierce competition, outsourcing can sometimes save your company and save jobs...

A word of (probably obvious) advice, however.  Do not rush into outsourcing, do all the due diligence, get as many of your people as possible to meet their people face-to-face (no, it's not cheap) as it suddenly becomes obvious that Petrov or Dilip are not being sarcastic with their emails, it's just the way they talk.  And watch the political in-fighting in your own company, there could be plenty of people only too willing to sabotage an outsource project.

Chris Powell
Sunday, April 04, 2004

Offshoring, like many have said takes up a niche of a market and not the whole market and those here who truly love to program and are not dot com bandwagoners will survive.

Offshoring too is but one trend among many more to follow.
It can also help the affluent here compose of more things cheaply and combine greater ideas. It also may lead to another kind of "bubble". There are still many dreams in technology left to fulfill.

If we really want to compete, we have to come down in price and train our children. (ie: Boise Idaho) and maintain our dreams.

The biggest problem with offshoring that hasn't been mentioned to death already (communication)...is more specifically the fact that many people who are contracted out...regardless of location, will not do a design and will jump into coding too quickly....Nor are they concerned about churning quality since they have deadlines. Their concern is to make the interface nice at the expense of the "engine". They might be able to evolve something out...but it will not have a long life. Most software doesn't anymore...unless it is something ongoing like an application service.

Biggest problems: performance and maintainability and possibly not even meeting the specs.

Anonymouse
Monday, April 05, 2004

Offshoring seems perfect for the pr0n warehouse industry too. And a few giants like IBM, SBC, etc.

Anonymouse
Monday, April 05, 2004

The reason is that IBM knows *what* to offshore.

Anonymouse
Monday, April 05, 2004

Whoah!  So much to read.  Glad I stumbled on this today.

I work as an independant consultant building small apps for different companies.  I'm usually the recipient of outsourced work.

I charge 6 times what the average Indian or Chinese developer/programmer/coder charges.  And I have no shortage of business.  In the last two months I've worked with clients who've had their foreign developers "disappear", in one case after receiving full payment.

I could probably charge double what I charge now and still have no shortage of work because I pass the ultimate test.  I don't over-sell my skills, I follow up on phone calls and RFPs, I keep good records of communications and don't "forget" to do things I commit to.  Sometimes projects go over slightly in time, but they never go over in budget (a compromise my clients are almost always happy if not simply willing to make).  I run a thorough QA process before delivery and I run a bugzilla installation (sorry Joel :P) so that my clients can always reach me with issues after a release.  Etc., etc., etc.

We would all like to think that these things are things that every software company does.  The fact is that they're not.  Companies are running overseas because the work is cheaper.  They'll (happily) reconsider hiring domestic/local developers again after a few failed attempts to outsource.

I'm not too worried about the outsourcing trend.  There are plenty of couter-balancing factors that will provide work for those of us who should really be in the industry in the first place.

Laran Evans
Monday, April 12, 2004

There is NO offshoring epidemic.  The
job downturn happened because of the
dot-com bust.  A few hundred
thousand jobs, does not an
economic movement make.

Check the numbers -- bush&co are right.

You all are moronically falling for the
hysteria, nothing else.

Joel can offshore or not, it doesn't matter
in the least.  It's his decision, and it should
be.  Nobody should be able to dictate
to him that he must offshore.  Or that
he must not.

No name
Tuesday, April 13, 2004

I am in my final year bachelors degree studying in Bangalore, India. I want to add something to the context of off-shoring/outsourcing.

Bangalore isn't all about off-shoring. People here see off-shoring as a way of gaining valuable experience in the global context of software development.

The out-sourcing/off-shoring moment here in India was just a stop-gap arrangement. People got a good look at how software works [ both in terms of developement, and management/marketing ] and now there is a visible shift towards start-ups. Indian companies making products for the world market.

I have been offered a job by a local software company that sells it's product worldwide. They are paying me an insane amount, about 3 times what IBM India pays. And i know lots of other guys who quit their "out-sourced" jobs to join start-ups. This company is not going to use "cheap" as a selling proposition. It is going to use "value". "Our product is better than any in the market."

A new company sets shop in bangalore every week. These are the people who learnt about software and set up their own shop. Nobody wants to do outsourced work. But they are willing to look at it as a learning experience.

True, in 4-5 years, the outsourcing moment may die out, India may "price itself out". But by that time, we will have global companies, based right here. We will have more Made in India software.

bangalore dude
Wednesday, April 14, 2004

As a noncoding manager of IT people I probably automatically fall into the category of bonehead, according to most of you.  But I think you all ought to understand that managing is hard.  I have managed people whose work I understood compeltely and it was hard.  Managing something you only incompletely understand is harder.  So why do I manage IT people?  Because I run a small IT company.  Why do they let me manage them?  Because if left to their own devices they would not produce economically useful goods, at an economically viable cost.  I am their interface with customers.  I am their interface with economic reality.

In large corporations, those "greedy sob CEOs"  have jobs are a lot more difficult than most of you imagine.  They have lots of people working for them doing work they do not understand.  Not just coders and developers, but accountants and mathematicians and engineers and marketers and scientists.  Every last one of those people have complaints similar to yours.

Large companies waste lots of money.  They make mistakes.  However if they don't do the most important things right, they cease to exist.  Every single large corporation in existence is the product of a Darwinian struggle.  They have to be doing a lot of things right that are invisible to most of us.

Frank
Wednesday, April 14, 2004

Offshoring is a global way of working through internet. Surprisingly, this trend was predicted by a visionary director at MIT Media Lab in 1992.

Offshoring cannot be stopped. It has to be accepted & people need to find the other ways to deal with it.

Ankur Patel
Sunday, April 18, 2004

"Large companies waste lots of money.  They make mistakes.  However if they don't do the most important things right, they cease to exist.  Every single large corporation in existence is the product of a Darwinian struggle.  They have to be doing a lot of things right that are invisible to most of us."

Feedback loops in big companies tend to be sloooow. Indeed management could be driving the company into the ground, and it wouldn't crash until years later. Meanwhile, they line their pockets, and jump only when it becomes obvious to everyone else.

Also there's the big number factor is play here. Someone said that going from $100 to $110 is real work - going from $100mil to $110mil is inevitable.

If we're going to use biological metaphors here, I would compare large corporations to the dinosaurs of old.

Bonehead Coder
Tuesday, April 27, 2004

Why doesn't Joel outsource the blogging. He could spend more time working on CityDesk, and less time writing and fact-checking the blog. I'd like to see him do it for a week, just for the humor value.

On the fence
Wednesday, April 28, 2004

The blog has been fascinating but I've yet to see confirmation of what I has suspected is happening for years now.

Software is largely a black box for most people in American organizations. Along with this comes the fact that the people who practice the black art of software development are seen as socially inept and mere functionaries with no real stake in the business only in their particular flavor of the month programming technology. WHAT'S REALLY AT WORK HERE IS THE FACT THAT COMPANIES SEE A WAY TO KILL TWO BIRDS WITH ONE STONE. Not only can we pre-emptively quash any form of labor organizing once these folks become less cowboys and more interested in collective well-being but we can also MAXIMIZE CONTROL. In JK Galbraith writings I recall him building a very convincing case for organizations sacrificing profit for the sake of MARKET AND RESOURCE CONTROL. To understand tis, imagine you are a Romanian student right out of college and been working for 2 years for $300 a month in Bucarest. You get a chance to join the evil empire and jump at it. So you'r over here in redmond. Now ask yourself, under what circumstances would you choose to leave? Other than personal issues, there aren't any.

no indentiy
Wednesday, April 28, 2004

I didn't complete my thought although it was just to repeat that I don't think the motivation is profit maximization at all. It's the opportunity to acquire a very compliant labor force that drives offshoring. In Industrial Organization theory there is the concept of 'potential' competition. The idea is that the effect of potential competitors 'waiting in the wings' is to restrain anti-competitive, monopolistic behavior among economic players. Well, this idea has it's applications in dealing with the technical work force. If we can put the fear of Jesus into these geeks and get them to fuilly appreciate that there at 8 million skilled programmers in India alone, maybe their behavior will be restrained and productivity enhanced. I know mine has!

The reality however is that my cost of living cannot be sustained on what IBM will pay a programmer overseas. What do firms do when they have a natural cost disadvantage? They specialize and find niches where greater added value can justify the above normal rate of return. So for me to get 70K a year while my counterpart gets 9k, I have to find 61,000 in added value I contribute. Given the state of the economy here in the PNW, this might not be possible so my alternative is to exit the market. Unfortunately, with technology changing rapidly the barriers to entry in three years will create another programmer shortage (as there was an engineer shortage and a teacher shortage and an MBA shortage over the past 20 years at one time or another)

The harsh reality may be that like televisions, shoes, apparel, steel, etc. this might be a game American's can't play. Yes, short term dislocations but we are at a juncture where the major economic engine of the US economy can relocate. And 5-10 years, right before 77 million baby boomers will be expecting the US Gov't to come through on their promise of Social Security Income the tax revenue will fall dramatically further bankrupting the system. We all know what the political elite will do when tax revenue falls, borrow from our kids, why of course.

Well, in a free market economy nothing is sacred. If only we could find a way to offshore 3 million Federal Government workers.

no identity
Wednesday, April 28, 2004

I would like to point out how most american posters use first person when addressing the issue as if offshoring had to do with the US only.  Saying 'here' in this page doesn't mean a particular place in america (it would be stupid to assume 'here' as the location of the server). 'Here' in a public weblog means 'somewhere on earth where there is an internet connection'. 'Us' means all the internet community and 'our jobs' means US IT developer jobs as well as Indian developer jobs.

So americans care for their work going offshore? When offshoring started to affect 'blue collar' jobs it didn't seem to matter that much to higher classes. Now it's getting to the white collars and everyone gets suddenly nervous. Would an american programmer work for the money an indian makes? Of course not... an american expects to get a house and a car, maybe even a huge SUV. Have you questioned yourselves why indian programmers wages are so low even when they normally go through a very demanding educational process? Do they have a choice to get anything better with less effort?

The problem comes with expectations. We work hard at university so we get a nice job so we get a nice house an raise a family with commodities, etc.

"In Eastern Europe, you go to university, learn like hell, then get a job, work like hell, and it's still impossible to buy yourself a car - you barely have money to eat" - maximum overdrive, somewhere up the posts

You think it is unfair to loose your jobs to these guys? The unfairnes is in that, with equal effort, people gets much more in one country than in the other.
Boundaries are a great invention for this inequities but think of the 'multinational' in 'multinational corporations'. Someone is getting great incomes out of the existence of boundaries. That's globalization! Someone in the US will have to readapt his career or find a new job elsewhere, thinking that 'an indian stole his job'. In the meantime an indian who worked his ass off just to be a humble programmer will work with an income way below the fair recognition of the benefit he produces. In the end a corporation will make huge loads of cash for the sake of its stock price. You can point at indian programmers and say "american IT developers are still the best in the world". It's great for the corporations, to have workers of different countries blaming each other while they quietly fill their pockets.
A great deal of the problem comes from how the american government has unleashed corporations, letting them get their way, and how greed is now the only ethical rule for CEOs in these corporations. Nobody thinks of enterprises as a service to the community anymore. Hell, It even sounds cheesy to say in this cynical days!
And if you think it will revert somehow to a benefit for the US, well I myself worked offshore in spain for Accenture with a lower wage. It would be fine if it hadn't change it's offices to some 'fiscal paradise' (or whatever it's called in the states) just to evade taxes. The only winners in this trade were Accenture stockholders.

It was not my intention to offend americans, some of which are close friends of mine, but sometimes you guys just lack a global perspective, as if the world somehow spinned around north america. My apologies for saying that...

Yet another oppinion
Thursday, April 29, 2004

The world doesnt spin around America. How could they , when so many Americans over the last 30 years have been affected (personally or within their family) by loosing a job or having a lowered wage because of some other muli-thousand year old civivilization that is somehow simultaneously both more intelligent, humble, harder working, and educated yet at the same time overwhelmingly less wealthy than in the United States. That cominbation of course isnt possible, but proponents of offhoring (like Microsoft and Walmart) and people who think somehow Americans have it all wrong (such as yourself) want us to belive it just the same.  If the US didnt sacrifice the lives of countless kids to stop Japan, would anyone even be left in Asia today?

To get to the point, it will come down to cost, and it always will. American manufacturing has always been superior, and producing better products being "on shore", but that didnt save it. Software and services will be next. Im training some Indian guy right now; he has no house, no wife, no kids, no life, and works for 1/5 of what I do... how the hell can I compete with that? Sell my house, dump the family, and start working for 100 hours a week for less pay? ha... no way. All the education in the world cannot save America. The only way to make money in America is to find somebody else to do the same job for less. Education, hard work, and pride in your work is passee.

Personally, Im flying to Nigeria next week. Im going to train several small tribes how to write reusable Object Code to deploy mission-critical business apps over a hetergeneous collection of storage systems. Their salary is 2 pounds of mud an hour, plus one bowl of rice every quarter if they meet their goals. Say goodbye to your jobs, Mother India! Nigeria is the next big thing... think Bottom Line corporate America!

Joe Stanley
Friday, April 30, 2004

I was going to add a comment, but decided to outsource it :)

Anonymous#101
Saturday, May 08, 2004

First, just wanted to mention that I jive with 'Name Withheld', 'anonymous strikes again', and 'Mantissa' regarding effects of outsourcing on software developers and the industry as a whole.

Personally, I find the entire "offshoring phenomenon" to be refreshing.  It is simply a natural consequence of mis-allocation of responsibility.  No point in arguing with folks on either camp that have their @$$ on the line.  However, a perfectly good time for those of us in the field of software development to take a step back and evaluate our positioning in the market.

Where do we first look when we seek work?  Why are we in the field in the first place?  How does "offshoring" affect us personally, and what are we going to do about it?

Some generic/crude observations are:

* We look at large software companies for work.
* We seek to solve complex problems and grow and learn in the field.
* The large software companies seek to 'reduce cost' with widely arbitrary interpretation, jeopardizing our employment.
* We hope to ride this out and come out unscathed.

So, taking this as a programmatic problem to be solved where the above are input criteria, where are the constraints, the boundaries, and flow to be optimized and organized?

My approach in considering this routine has been the following:

1. The producers of goods are the programmers.
2. The consumers of goods are the users/clients/customers.

The optimal flow is to facilitate production->consumption to occur seamlessly and w/o clutter.

Suggestions for optimization are the following:

1. Get rid of corporate overhead.
i.e. management ladder (CXO), Sales, Marketing, HR, Blah. 

Note: Give them what they're most afraid of, organization made strictly of programmers, making the rest obsolete.

2. Make it viable for producers to organize.
3. Make it easier for consumers to find producers (visa versa)

Possible pseudo-code:

function new_career(){
  a. Start to evolve your 'skills' to include personal engagement with clients/customers.
  b. Take advantage of the "locality" factor (face-to-face, on-demand, prompt response, language equality).
  c. Start an independent consulting firm on the side.
  d. Find good local partners to beef-up your portfolio/credibility.
  e. Network with other similar development shops around the globe to build releationships.
  f. Seek active income w/in your locality, seek passive income projects as larger joint ventures with other firms you've come across along the way.
  g. Quit corporate imprisonment (if haven't done so already)
  h. Build relationship with local university & recruit few prospective students and teach them the craft.
  i. Grow as $$$ allows.
}

The challenges for the individual programmers are apparent for each step.  I'm keenly interested in soliciting ideas & collaborating with others to implement what we can do as a community to foster the transfer of power back to the folks that should hold it in the first place.  I'm envisioning creation of an open source development model rip-off website with commercial flavor plastered all over it (with all the goodies: articles on incorporation, on engaging clients, meeting others with same vision, enabling distributed commercial joint-venture projects, etc.).  I'm willing to invest my most valuable asset: time.

For a shell website, check ours @ http://www.corenova.com (of course, it has no functionality yet) :)

Peter K. Lee
Saturday, May 08, 2004

With all the incessant noise and debate around offshoring and the backlash against globalization, we often forget how open markets benefit everyone.  Imagine the negative impact our own economy would suffer if we closed our doors.  If you are in the IT industry, you no doubt consider yoursefl inherently brilliant, well-educated, and driven.  If your job is directly impacted by this phenomenon, remember these traits and put them to use to find your path back to a successful career and enjoyable life in this ever-increasing global economy.

Anyone interested in more perspectives and discussion surrounding offshoring, I encourage you to read more from me and several other IT experts at http://blogs.ittoolbox.com/outsourcing

Big Picture
Tuesday, May 11, 2004

Hi, this is Fable from Shanghai, China. I happened to see all of ur discussions. Acturally, I'm a new marketing specialist in this business.

I got an response from an American software company, who told me that he's really insulted by my sales letter. I just can't understand....

Every company strives hard for its survival, development and success through all kinds of means. We are no exception. Outsourcing is a  business solution, simply a way of saving your cost and achieving a win-win goal,which has no intention to challenge ur solid tech. force.

This is my point of view in offshore outsourcing. I have a question also. How do u foresee the prospect of offshore outsourcing in China and on which occasions you will think of outsourcing ur project to China.

I'm all ears at ur ideas. Sincerely I wanna learn sth. from all of you senior experts here.

May be reached by fshen@shanghai-digital.com

truly
FABLE

Fable Shen
Tuesday, May 11, 2004

Please visit http://www.OffshoreXperts.com for more information on offshoring and offshore outsourcing.

Chris Hearn
Friday, May 21, 2004

My oldest daughter is a Freshman at MIT majoring in Computer Science. She got the computer bug like her old man did 30+ years ago. Hopefully she'll be able to find a job when she graduates in 3.5 years. But things aren't looking good.

This whole situation of outsourcing jobs to places like India makes me sick. The companies that do this are just trying to make higher profits. They can still be profitable if they keep the jobs here. But their CEO's and other high ranking officers won't be able to make their $10m/annual salaries and stock options.

When the Auto industry and Textile industry started to outsource their products overseas there at least was a solution to the unemployeed workers (at least for some)....RETRAINING....

So what is our Government offering our outsourced engineers now..RETRAINING....My question is....RETRAIN FOR WHAT? These people already have BS ,MS and PHD's in a Math or Science dicipline. Many of these people have IQ's of the top 1% in the world. Where else do you go?

The latest report the government is spewing, is that when US companies outsource these High-tech jobs it creates more jobs here in the US. TRANSLATION - When BurgerKing outsources it's Software Engineering department to India, they'll be able to hire more burger flippers and fry makers in their stores. THIS IS GOOD FOR OUR ECONOMY?????

Our country as grown in prosperity and wealth because of the oppertunities we've been able to strive for. By letting our tech jobs go overseas, where do we go? What do we have to strive for? People like my daughter who have IQ's of 150 or more...What kind of jobs are they suppose to persue if we let our technical jobs go overseas? There is nothing left for highly intelligent and highly motivated people in the US to strive for.

In one study it's estimated that within 10 years over 6.6 million high-tech jobs will be lost to foreign markets. Within 20..almost all high-tech jobs will NOT be in the US.

I don't have a problem with high-tech jobs being competing on the Global market.....WHEN IT'S A EVEN PLAYING FIELD...I can't compete with a Engineer in India. They have a MAJOR unfair advantage. Their wages won't even pay the taxes on my home. I can't take that kind of a cut in pay. It's not a matter of buying a home or car, it's a matter of even making enough to provide shelter and food for my family.

As for Software design vs Software development. This is obviously spoken from someone who doesn't know anything about software development. A good SW developer IS a SW designer. They are one in the same. Only some of the very low tasks are deligated to SW developers who don't know how to design. These are the ones with 2yr degrees from some Votech school and less then 1 year experience. Sure you will may have a SW architech who has a overall design plan. But he/she isn't designing the whole thing. Especially on very large projects.

I get a little angry when I hear people saying that places like India and China have every right to American jobs as anyone else. Companies like IBM, Microsoft, HP....All built their companies with American workers, sold their products to Americans. They grew to the hugh companies they are mainly through American workers and American dollars. India accounts for less then 1% of Microsoft sales, and less then .5% of IBM sales, yet they are the ones benefiting from any new SW jobs IBM and Microsoft have.

It is NOT globalization that is driving this....IT'S PURE GREED.

MikeInNH
Friday, May 28, 2004


I'm extrasens, I search the disappeared people and a thing. I can extract interesting for you  information. I can cure incurable illness. If interest my services write:
extrasens2000@yahoo.co.uk

I'm extrasens
Monday, June 07, 2004

I manage and develop within a small software group in Wisconsin.
Every time I fire up my portable I've arranged for it remind of these:
---
In theory there's no difference between theory and practice,
  but in practice, there is.

You can take the software out of the programmer,
  but you can't take the programmer out of the software.

Good software developers should be nihilists.

Think globally, code locally.

Design for the ages, code for the moment.
---
These may seem a bit too cute, but they're mnemonics for ideas
I've accumulated slowly and painfully with experience.
Okay, so the third one is a wee bit opaque.
Stare at it a while.  I'm referring to "Nihilism" as the core
set of beliefs that denies the existence and possibilities of natural
laws or, in general, nomological considerations.

What these force me to remember is that it *matters* who implements
the design.  Especially the second and third maxims.

A good reason for keeping "core competency" together is that you really
want a shop with an "ethos".  This observation is borrowed from an
interesting article about the original WinNT development team and the way
in which the environment created by its initial participants didn't scale well
as the team grew:  the "ethos" was hard to maintain as new people came
into the project after roughly the initial release.

Such an "ethos" typically goes beyond the software team itself and
should extend to most of the company, at least for small companies.

So maybe I should add an (avowedly anti-offshore, anti-outsource) maxim
to my list:
  "The family stays together."
or maybe the more verbose variant works better:
  "It's easier to act as a unit when you're placed as unit."

Thomas Kammeyer
Wednesday, June 09, 2004

Daniel, i'm a long time poster, so I've seen lots of Outsourcing discussions on this board over the last couple years. That was very well put arguement against it.  Nicely done.

vince
Tuesday, June 15, 2004

Wow! hot topic!

Lots of opinions.
If you want a real-world perspective, read on...

I'm a tech project manager of a professional services company (yes, heavy client engagement) who successfully engages in offshoring (not outsourcing). We are based in the UK and we have about half our team in our New Zealand office. Our codevelopment model has been proven again and again in recent years with our clients (who are all in the UK). Success factors I see are:

- investment from the top in ensuring the communication framework is as high-bandwidth as possible. There are various ways we do this, and it poses its own unique problems but in the balance is a distinct competitive advantage
- high-degree of cultural similarity lubricates the wheels (we work alongside an Indian outsourcing provider with one of our clients and the communication / cultural barriers let alone quality issues even with some of their team locally-situated are a constant issue)
- 'round the clock' development -- our NZ team is well, in NZ : ) so between 11 and 13 hrs ahead of UK (it could work well in the west coast of  US as well)
- low cost (50%) of the NZ team passed directly on to the client

New Zealand shouldn't be discounted -- it worked for Lord of the Rings  / Way of The Samurai / Frighteners etc etc , it works for us, it might work for you too : )

Julian Harris
Saturday, June 19, 2004

The Off-Shoring dilemma is real.  Not only software, but any job which can be done overseas (not in person) is at risk.  We do need to try and enact some restrictions on this folks.  I personally have joined a group working to do that. 

They are called the AmericanSoftwareAlliance.Org

Check these people out, they are fighting big business with big business concepts and it seems to be working.  This fight is just now starting to take form. Don't have regrets, weigh in on this issue.

Jason Newton
Wednesday, June 30, 2004

I read the link and it is interesting debate. Let us introspect for a moment.

1. World is increasingly becoming interdependent and so it will become a better place to live.

2. All of us are good at some thing and so we try to do more of that.

3. West has mastered the art of innovation. IT will not exist but for the kind of innovation which the west did. So it is contributing to grow the world economy and so contributes in poverty elevation from countries like India.

4. The innovation happens as it is opened and keeps its economy competitively.

5. It is also innovative as social protection is left to the government and economy growth is left to the business men.

6. Out sourcing builds the economy as the organizations can service the world and not just its country.

7. Outsourcing also brings business into the nation as lot of software are sold and these software’s are built by companies like Microsoft, SUN, Oracle to name a few.

So over all west should focus on innovation and use the people resource of the east to service the end customer.

S Ranganathan
Thursday, July 15, 2004

  If you had to replace all of your programmers right now, with no knowledge transfer from the old ones to the new, could you do it?  Couldn’t happen, right?  Three years from now, when your coders and testers are long gone, the outsourcing firm you hired decides to triple its rates because they realize they are your sole supplier, that is they have a monopoly, on your application knowledge and they see it is time to cash in.  “I’ll go to another outsourcing firm,” you say; but who’s going to train the new people?  The old outsourcing firm refuses or has gone out of business, so no help there.  Even though you find another outsourcing firm that has people with the right technical experience, years of experience in your language(s) and a software development process, etc, but you’re medical insurance firm and they don’t know the business.  You still own the code, it’s off in a sever somewhere, all two million plus lines of it, plus databases, plus reporting, etc.  Yes, the new guys you just hired all have 15+ years experience in the language(s) of your application; however digging through two million lines of code to figure out what is going on will take awhile.  The application just went down; triple rates begin to look good.
  Outsourcing looks like a good deal, all those cheap programmers overseas who don’t ask benefits, not from you at least.  It’s just like what happened to the manufacturing and apparel jobs going overseas, or is it?  Got a problem with your overseas outsourcing firm all you do is take your widget engineering schematics or clothing patterns, everything you need to know is in those plans, and find your self another factory and boom you’re back in business.  Not so with programming and your application code because with software it is more than knowing the language(s), it is the expertise in knowing your application and knowing your business.  People can’t just jump in and start coding because the may not know your business and they definitely don’t know your application.
  When you outsource your coders, you are giving up control of the expertise with your application.  You may have documentation that will help in a knowledge transfer, but can you really get a complete understanding of your application from documentation.  Plus how complete and up to date is that documentation?  Even with documentation it takes a long time to track down software bugs and make code changes.  Without a good  knowledge of the application, those code changes you just made could break other things. It pays to have people that know your application, the system and your business.
  You are giving a monopoly on that expertise to that foreign outsourcing firm, in fact you are paying them to do it too, and you will have to pay either to get it back or to give to yet another foreign outsourcing firm.  Think of how long it takes to get a new person up to speed, it takes them awhile to learn the business and they have a team lead with several years of experience showing them the ropes.  How long to it take to train up the outsourcing firm to do the job they are doing now?  Plus you had your old programmers, the ones you laid off afterwards, train the new outsourced programmers. After a few years your outsourcing firm will become the sole experts on your application and you could end up paying dearly for that.  Good luck finding your old programmers and bringing them back, remember all those happy memories of the layoffs?
  Some other nightmare outsourcing scenarios:
1)    All the code for your new killer application just hit the web because of a disgruntled overseas employee.  Think Microsoft was happy about their Windows code hitting the web?
2)    They introduced a huge bug that costs you millions of dollars in lost revenue.  What are you going to do, fire them?  Are they going to pay you back for the loss?
3)    An overseas employee steals customer data, credit card numbers, names, addresses, or health records, and sells it.  Who will your customers sue, you or some company way overseas in a foreign land in a foreign court?

When one of these things happens, it is just a matter of time until one does, you boss, your shareholders or the US Government will demand that you have control over your data and your applications.  Having a monopoly over your application expertise and data is critical to your business’s continued existence. You may be in the medical insurance business but it is your software applications that processes and pays all of your claims. How much will you have to pay to retain that monopoly or to get it back?
  Outsourcing will cost you more in the long run.

mike wilson
Friday, July 16, 2004

*  Recent Topics

*  Fog Creek Home