Ian Bicking: the old part of his blog

Respecting The Programmer

This is an edited version of a post to python-list.

And, if they are willing to go offsite [to find Python programmers], why not go to India and save lots of bucks?

In general, Python requires you trust your programmers. People give Java grief about its restricted environment and static typing, but if you don't trust the programmer to do a good job, at least with Java they (maybe) can't mess things up as badly for everyone else working on a project. You can mess things up royally with Python. I like working with a language that respects my intelligence -- no final classes, no type restrictions, no (truly) private methods -- but that's not without its costs.

In general, Python rewards highly-skilled programmers with a considerably increased productivity, moreso than in low-level languages. We talk about how Python is also easy to learn and maintain, and that's still true, but it doesn't mean that it evens out the differences in productivity between programmers. In fact, quite the opposite, it makes those most productive programmers more productive and more valuable. That Python is easy to learn and maintain means that there's less risk in using a highly skilled, highly productive programmer. In other languages you risk being left with a program that only another highly skilled programmer can maintain, and that's less likely to occur with Python (for an appropriate definition of "highly skilled").

Also, Python encourages agile methodologies, even if you aren't explicitly trying to use agile methodologies. They just work well. Agile methodologies also work well when you can have a more intimate relationship between developer and project manager or customer. Hiring in India or elsewhere makes that intimate relationship harder to create.

Finally, to be frank, Python is not the language for companies who expect mediocrity in their programmers, and I think that outsourcing is for companies that expect mediocrity.

I don't mean to insult Indian programmers -- certainly there are Indian programmers who are just as good as a good programmer in the U.S.: able to communicate well, able to work independently, able to intelligently judge tradeoffs, etc. But those aren't the cheap Indian programmers. This isn't about nation of origin. Outsourcing is about turning programmers into a commodity, and you can only make a commodity out of something where quality isn't an issue. In the case of programming, that means you must expect the lowest common denominator of quality given the constraints. Because shitty code is always shitty (even in Java) the constraints for outsourcing typically include heavy-weight methodologies and a high degree of formality.

I think it's stupid to look at programming as a commodity, but it's way more stupid with Python. I don't think outsourcing will hurt the Python community.

The corollary: if you don't want to be outsourced, focus on methodologies and tools that respect you as a programmer, that respect your intelligence, judgement, and motivations. If you do, you put a bit more power in your hands, away from institutions. You don't want to be a sharecropper and you don't want to be a commodity.

Created 16 Dec '04
Modified 16 Dec '04

Comments:

You seem to assume Indians are unable to learn, do intelligent stuff and, eventually, surpass you (i.e., American programmer). That is nothing but bigotry. You must hang on to this idea of superiority when, in fact, the whole point of discovering outsourcing was that there was no such thing. If outsourcing happened, if the job is average, maybe it's because /you/ were average, and overpaid. What will happen when overseas programmers discover high-level programming, abstraction, write decent compilers, grok the kernel? Or should I rephrase it? What will happen when /you/ discover the rest of the world isn't dumb? Will you sit down and cry? Because the only one difference here is that you, as an American, live in a confort bubble. You consume to much, read to little (never foreign literature in another tongue), have all the opportunity available, a whole bunch of money for research, etc, etc, and nothing but historical conditions after WWII made you special (i.e., the fact the Europe was self-destroying and the U.S. was selling them weapons). You have /no/ idea what /we/ go through, the scraping-and-saving to buy $100 books, to keep up-to-date, to get into top univeristies (hey, even /your/ universities). Make no mistake, the average Indian programming is probably worth twice his weight, while Americans are overweight. Hello, world! (I am sorry if I sound angry, but I am sick and tired of American programmers whining, when they have it so easy, and coming onto everybody with that attitude of superiority. The Wright brothers didn't invent the airplane, Santos-Dumont did, and he flew it right smack in the middle of Paris, /against/ frontal wind, and /everybody/ saw it. The Wright brothers: they claimed the did it, nobody saw it. So tipically "superior.").

# Angry Bitter

That is not what I was saying! The point is that outsourcing is being done in an effort to commoditize of labor, and as a commodity our value is driven down. When we are cogs in a system of heavy methodologies we can be replaced and manipulated; when we are intelligent actors working with customers and employers who are close to peers than controllers, then out value is higher, and we are no longer interchangeable.
# Ian Bicking

Bigot? That's a harsh word. The point was being made that American companies are making the mistake of treating programmers like commodities. To illustrate his point he mentions the common practice of outsourcing to India to put warm bodies in front of computers. He certainly doesn't say that as a rule programmers from India are not competent. He does say that overly cheap labor from India is usually not as competent as their better educated more experience Indian counterparts. I would make the same claim about US programmers. Infact, his opinions seem to be more critical of America, then anyone, or anywhere else.

However, in making your point about your perceived bigotry against Indians you go on to call Americans overweight, Not well read, ungrateful, etc... You also make questionable comments like "Will you sit down and cry?". Given these remarks it's hard to take your claim of someoneelse's bigotry seriously.

# Byron

To illustrate his point he mentions the common practice of outsourcing to India to put warm bodies in front of computers. He certainly doesn't say that as a rule programmers from India are not competent. He does say that overly cheap labor from India is usually not as competent as their better educated more experience Indian counterparts. I would make the same claim about US programmers.

I actually meant to go further: the low-paid programmers put in front of computers aren't allowed to be highly competent, regardless of their actual aptitude.

# Ian Bicking

'angry reply', whoever he/she/it is, and one might infer an Indian programmer, is a jerk

here are the facts: despite the politically correct homage of other people, I am willing to come right out and say the TRUTH:

Indian progammers are shit. period.

I hope & pray that India & China nuke each other.

Americans ARE better.

So there!

# a real programmer

Well frankly, that's not very nice of you to say either. There are lots of nice, smart Indian people too.
# Ian Bicking

> I hope & pray that India & China nuke each other. <

Amazing. What a perfect illustration of how little in common many supposedly religious folks have with their faith, with humanity and with common sense.

I realize that its pointless to remind "Real Programmer" that Jesus never would pray for the annihilation of millions of people. I also realize that folks like "Real Programmer" will never admit to nor recognize in themselves the total lack of morality they display with such thinking.

I realize that its seemingly pointless to comment on such a rant, perhaps only serving to inflame an argument that might otherwise die a natural death in some persistent list structure -- but I fear the truly sane and moral have been letting the crazies get away unchallenged for far too long.

# Mike

Get over this bigotry all of you.

There are good and bad programmers.

There are bigots on either side. I have seen enough postings from rabid nationalists from India and the USA.

We are all being manipulated by the Corporate Greed Machine. If they discovered small green men on Mars that would do the work for free, do you think anybody in the USA or India would have a chance?

Stop fighting against each other. Make a stand against the greedy CEOs and the capitalist system because it is creating a lot of misery around the world. Fact is, this should be a wake up call for middle class America to realise that the capitalist system is going to screw you. India, you WILL be next when you become too successful and hence demand and supply rules elevate your salaries.

Fight this exploitation. Form co-operatives and guilds and resource locally. Resign from corporations that exploit globalisation. I am resigning from IBM in two weeks time (note NOT being given the boot) and working for a local company. I will not support this ethos.

The problem with most people is they want to ignore the difficult choices. Indians are highly motivated and deserve to do well if you think an easy life is your right. Get over it. Train up, prove your worth.

No I don't accept outsourcing because it destroys local communities. Guilds and cooperatives will be one way to maintain the link between preserving local community and high quality work; employees reap the benefits of their own work, not CEOs. Co-operatives are democratic (you reading this, American?) not socialistic or communistic in nature.

Think about it.

# Tony Bateman

Great reply!..small green men from Mars!..ha ha..excellent way to put it..

# topgun

I hope and pray for the samething!!!

However, a more realistic out come will be Pakistan NUKING those ARROGANT Indians!!!

And I hope that day comes soon!

# Mark

Mark, you are an ass..Good people in the world want peace and happiness everywhere...A lot of Americans are good people..they are considerate, happy, and care about the livelihoods of other people...that's what makes America a model nation!..you, buddy, are not the typical American..just like you should understand that not all indians are arrogant....it is people like you that need a spanking...I'll forgive you on the behalf of all Indians..

# topgun

I think the writer made some good points that you have ignored in accusing him of bigotry. The point remains that Indian programmers are often glorified clerks or worse, able to do "menial" tasks (that amount to little more than glorified data entry) when told, but unable to perform algorithmic analyses, system design, and independent crafting of significant solutions.

The major fault I would find with the write-up is not his criticism of Indian programmers, but the fact that he does not pinpoint the cause of their mediocrity, which is the lack of adequate training in formal computer science and mathematics. (Yes, even at the IITs.) I know this from personal experience. Ever notice that there are very few Indians (comparatively) among the top developers of Linux and other open source, or even at the comparable top rungs of Microsoft?

And yes, I am an Indian myself and quite patriotic, so kindly refrain from waving the flag in my face.

SR

# sr3u

The writer may have made some good points but the bigotry is obvious. Not as bad as the "angry reply" but it's still bigotry. As a programmer who considers himself logical, saying "Americans ARE better" doesn't make any sense. Programmers are individuals - not groups. The ability to program varies greatly among individuals. I've met American programmers who are blow mediocre. I've also met some exceptional programmers from India and Iran. You could reverse the countries in that statement and it would still be true.

What America has is a system that tries to stay out of the way and allows people to develop and benefit from their own talents. I have no doubt that there are many people in the developing nations that, given time and opportunity, will make great contributions to the programming arts, as long a their government or culture doesn't get in the way. Some may not always like the system - it's the reason why companies are allowed to outsource - but we all benefit from it.

# joeg

That should say "below mediocre" not "blow mediocre". Sorry, my bad.
# joeg

Agreed. Here students work mostly towards 'grades' and exams. Most computer science students (undergrads and grads) don't know what is 'programming'. The reason for this is 'India' has a very poor educational system. They do have smart and better programmers than those in US. Why are they not popular will lead to thinking about the poor IT facilities in this country (for eg: internet).

One day, I could see Indian programmers rule the world.

# Sridhar Ratna

This is in reply to sr3u. sru3 is right. There are very few Indians who contributed in the development of Linux.

I have been in the industry from the period of Burroughs (Mainframe) and seen hundreds of programmers. The attitude of most Indians programmers (repeat, "most", not "all") is just to "cook-up", copy other's code (they say "they don't want to re-invent the wheel"), download similar code from the internet and all sorts of mean activities. Worse is their bosses; they encourage them, because, there is pressuer from the Management to complete the project and the bosses want to complete it quickly. There are genuine programmers also. I respect them.

Ian Bicking is right. Outsourcing involve not just "software development". It involves whole lot of "psychology" of the company that take up the outsourcing activity. Driven by the motive of profit, (more projects, more money), there is a hidden urgency in completing projects, thereby, the pressure is transferred to the ends of the work-force. Naturally outsourcing produces incompetency.

# vrk

This is in reply to sr3u. sru3 is right. There are very few Indians who contributed in the development of Linux.

I have been in the industry from the period of Burroughs (Mainframe) and seen hundreds of programmers. The attitude of most Indians programmers (repeat, "most", not "all") is just to "cook-up", copy other's code (they say "they don't want to re-invent the wheel"), download similar code from the internet and all sorts of mean activities. Worse is their bosses; they encourage them, because, there is pressuer from the Management to complete the project and the bosses want to complete it quickly. There are genuine programmers also. I respect them.

Ian Bicking is right. Outsourcing involve not just "software development". It involves whole lot of "psychology" of the company that take up the outsourcing activity. Driven by the motive of profit, (more projects, more money), there is a hidden urgency in completing projects, thereby, the pressure is transferred to the ends of the work-force. Naturally outsourcing produces incompetency.

# vrk

Please Pardon me for breaking my thoughts across several paragraphs.

I believe it's self-motivation,passion and opportunity that makes a person a better programmer regardless of where you are from. The business world always looks at applications in the least technical way.They do not care if you have used the best coding practices,Software methodologies,design patterns etc. All they care about is the cost associated with some emphasis on the user interface. If you cut down on costs, programmers will try to reduce the complexities associated and ignore optimization techniques associated with use of better algorithms outside of frameworks.

The business doesn't pay me a dime more If I use a better algorithm for testing the primality of numbers for example. It's the research and Open Source world that provides room for innovation.

B.T.W talking about testing of primality of numbers, undergrads from Indian Institute of Technology-Kanpur came with a better algorithm than Fermat's to test primality of numbers in polynomial time.

http://primes.utm.edu/prove/prove4_3.html

I believe Computer Scientists show us programmers the way and we simply try to incorporate their algorithms and protocols knowingly or unknowingly. Many of us are oblivious of what is being done in the research arena.Here's an interesting profile of a Computer Scientist with an Indian Origin who has made significant contributions to data and wireless networking .

http://www.bell-labs.com/user/kks/

My opinion is that most programmers develop software to please the business (whether it involves low cost or high cost). It's only a small bunch of self motivated people that actually contribute to the field of computer science.

# kishore

I am an Indian professional, employing software developers in java and lisp. I know something about python too. I agree with the authors statements. C'mon guys if the situation were reversed and America were india, we would be saying what he is!

Also for the kind of pay programmers get paid they hardly know their stuff. I have to spend 6-9 months on even most MCA/MCM students for them to lean GOOD coding practices.

Good programmers are always hard to find, get paid more AND usually have intentions to settle or earn loads of meny by working for 5-10 yrs. in the US..and then come back to high flying jobs in India.

Thus even the HIGH END GREAT developers don't really contribute to any aspect of the indian economic growth.

I wanted to use php, python in our software development effort. Python as a language would have been the best choice since we use object oriented techniques and functional programming too..but i could not find any decent pythin programmers who would possibly stick around for a long time ..or could be replaced by other python programmers!

Just remember 1 thing fellow indian...americans whining about lost jobs is natural...I rememeber several indian professionals who lost their jobs in he silicon valley, had to relocate to bangalore and were as bitter as "true" americans!...outsourcing dyanmics are natural..but if someone like this guy makes a fair comment.. then we should not be prejudiced..

chalo bye

# indian_entrepreneur

Re: "but I am sick and tired of American programmers whining, when they have it so easy"

Unemployment is not easy for anyone. Having your living pulled out from under you is like having a leg chopped off.

-Unemployed ColdFusion Programmer in California

# Tom

Hi

I am a software tester trying to get into python.I learnt python for automation.I would say my knowledge is limited to the core(data structures,functions,classesetc...).But I can reach an advanced level if given an opportunity.

Vengat Ramanan.R

vengatramanan@gmail.com

# anonymous

Has anyone thought of the mediocre to totally incompetent middle management in the US that drive work out of this country ? There is a real need to put some smart people in that layer of the organization. Also there is a huge difference in management style in India and US. Middle management in US suffers royally on that count to.

# crossings

What middle management? They were downsized during the previous downturn? I know. I was once a member of our proud middle class, and I tried to make decisions that would benefit everyone as a whole, not just myself or one little group. My gaze was much longer than the end of my nose as I glanced over the figures and knew the need for long-term investment in our true #1 priority: people.

After being outsourced myself, I'm now forced to start my whole career over, at a time when I should be thinking about retirement (or even buying a house, hello--I'll still be a first time home buyer at age 65, but by then, what's the point?) I've worked all my life in the States, but due to the high cost of living and the continuous shrinkage of our real wages, I'm afraid I haven't anything to show for it. If anyone has a right to bitch, it would be my class <g>.

People (no matter what their race or country) SHOULD BE PAID a living wage for the work they do! That's why I think Henry Ford was such an innovator: not because he "invented" the assembly line, but because he paid his workers MORE THAN THE AVERAGE RATE! Guess what they did? They went out and bought his products (cars), and made him the multimillionaire he became!

You can only make products sooooooooo cheap, before you realize no matter HOW cheap you make them, people WITHOUT MONEY will still NOT BUY THEM! The real answer is not in making things cheaper and faster (I can no longer say better, as that is obviously without concern), but in pumping more money into the hands of ordinary people so they can spend it!

Or, as Mark Twain said, "The Poor are better than the Rich because they can do less damage." If you give a Rich man a million dollars, you'll never ever see it again. They will find some way of holding on to it so no one else can ever get it. It will be swallowed into the Black Hole of Calcutta (is that expression still in use today?) If you give that same amount to a poor man, you can single-handledly REVIVE THE ECONOMY. Why, you ask? Because he'll actually go out into the world and SPEND it on things he needs, stimulate production, and not grasp onto the last bleeding penny like the Rich and greedy man will. I know people soooo tight, they could sit on a lump of coal, and they would $hit a diamond!

Unfortunately, the rich (read: multi-national companies now in complete control of the world) in this country have seen fit to have only a two class system--themselves and everyone else. It used to be that American businesses only treated foreigners as bad as they're now treating everyone including our own citizens...

# disgruntled_in_america

I second your opinion 100 % Well its a known fact that every business needs to cut costs, while maintaining the quality. Who ever thinks otherwise think again when you own a company. Indian programmers are top notch and work for less money, thats why they are hired all over the world, including microsoft, NASA etc. for those who still understand teh value of Indian programmers feel free to visit http://www.e-guru.in to find the best of Indian programmers.

rgds jason

# jason

When doing a real-world project with Zope, I found out that the only programmer in the (very good) team who got actual work done was the programmer who had read through the whole source tree of Zope, and supporting integration modules such as LDAP, Oracle etc etc. This was because unless you really get value from doing all your work from scratch and not reusing someone else's application servers and other components, you had to use modules coded by amateurs in just such a bad manner you suggest in this article. No Javadoc, no interfaces, no decent documentation. On larger projects where you don't code everything yourself, Python lacks so many of the advantages of other systems that it's not even funny. Never touching the stuff again, except when doing something it's actually suited for, system administration scripts.
# A. Mike

Zope is not the example I would use to show off what can be done with Python. It's always been a disappointment to me, and many other people in the Python community. Though honestly, that has a lot to do with the fact it has been seen as The Way To Do The Web in Python; in part because it was over-sold by early adopters, and because there's no single compelling alternative. Zope just isn't a good platform (at all) for doing traditional database-backed websites, and it's going to be disappointing to use it that way.

But, really, it should be a lesson. Python can be hard to understand like anything else. It can be misdesigned like anything else. In the case of Zope, I think it's a matter of having been too ambitious. It's a terrible shame that an example of those flaws is also the most popular Python web programming platform. But there are alternatives.

# Ian Bicking

"Python is not the language for companies who expect mediocrity in their programmers"

Sounds like you think some companies are really smart, and they get Python coders, while all the stupid companies use Java for their protection...

Strongly typed languages don't mean to disrespect you (try Standard ML). Static typing is more about filtering LOTS of mistakes out in the compile step. And by that I don't mean prevent evil/stupid coders from ruining your program, but also catching errors where you made small typos or where you forgot to update something after a refactoring or changing of some code passage. In Python, Scheme or Obj-C or Smalltalk (even Java) you have to wait for the runtime crash (like NullPointerException). An ML program that compiles, usually runs correct on the first try -- goodbye testing. And Dijkstra had something when he said that testing can only prove the presence of bugs, never their absence ;)

# Iam Bitching

I'd be a bit more impressed with ML if there were more kick-ass ML programs out there. If it's really everything (some) people say it is, even with its small user base there should be great things being produced with it.

But anyway, I certainly wouldn't group ML with Java. I'd probably put it alongside Lisp, as an interesting language with a lot of power possibilities, that is hampered by its accessibility. ML's typing system certainly has very different motivations than Java's.

# Ian Bicking

Sure. ML probably should be more mainstreamy (though OCaml IIRC does just that). The Lisp and FP communities (I guess) consist more of scientists/math people than programmers, so there are no real app repositories, although there seems to be work on that.

I wouldn't group ML and Java either (God, no!), but their static typing solves lots of problems in my experience (Java much less, though).

# Mr Bitching, again

I believe it was Donald Knuth who said:

Do not trust this code, I have only proved it correct, not tested it.

# Eyal Lotem

I would agree to Ian, on a lot of what he has said:

But what I don't agree on is that Indian programmer is not more economical (I would not say cheap) than his American counterpart. A programmer of same competency would cost 3-4 times more in America than in India. India is just too good a place when consider cost against productivity for a programmer and this is what is driving outsourcing.

It is simple economics, globalizations and free markets (Isnt’t these American values). I don’t know why there is a big hue and cry now, and not when manufacturing moved from America to South East Asian countries.

# Vivek Kant

Totally agree. So called consultancies have commoditized programming and are selling them by the pound. Unfortunately there arent many quality detection tools ... and quality metrics are collected by these companies themselves..so there

# Indian programmer

I think "Angry Bitter" is right.There are lot of examples about Indian genius like Sun Microsystems like Hotmail,Microsoft Windows...Think , read and believe.

# Hunt

Well!!

I think I should comment here.

Most programmer in India [am talking about freelancers with one year experiance] does not know how to price their services. All work on assumptions that "Americans Pays TOO Good"

I prefer companies who at least evaluate a project better and come up with competitive pricing. At least i can trust them for completion of my project.

There is much to learn defining the project scope, its deliverables, quality and then price it well. Most of the case the quote is too less and later turnout to be a nightmare for both.. the hirer and freelancer. In certain cases the quote is too high which makes me feel it comes from marsh.

This is observation from the experianced learnt from various bidding sites, where you will find unrealistic rates for several projects.

# Steve Arun

Well!!

I think I should comment here.

Most programmer in India [am talking about freelancers with one year experiance] does not know how to price their services. All work on assumptions that "Americans Pays TOO Good"

I prefer companies who at least evaluate a project better and come up with competitive pricing. At least i can trust them for completion of my project.

There is much to learn defining the project scope, its deliverables, quality and then price it well. Most of the case the quote is too less and later turnout to be a nightmare for both.. the hirer and freelancer. In certain cases the quote is too high which makes me feel it comes from marsh.

This is observation from the experianced learnt from various bidding sites, where you will find unrealistic rates for several projects.

# Steve Arun

Well!!

I think I should comment here.

Most programmer in India [am talking about freelancers with one year experiance] does not know how to price their services. All work on assumptions that "Americans Pays TOO Good"

I prefer companies who at least evaluate a project better and come up with competitive pricing. At least i can trust them for completion of my project.

There is much to learn defining the project scope, its deliverables, quality and then price it well. Most of the case the quote is too less and later turnout to be a nightmare for both.. the hirer and freelancer. In certain cases the quote is too high which makes me feel it comes from marsh.

This is observation from the experianced learnt from various bidding sites, where you will find unrealistic rates for several projects.

# Steve Arun

"lowest common denominator of quality"

You mean:

Thousands of lines of code with no comments? The only comments in the code are totally meaningless?

System Message: ERROR/3 (<string>, line 7)

Unexpected indentation.
/***/

System Message: WARNING/2 (<string>, line 8)

Block quote ends without a blank line; unexpected unindent.

"Well, I guess that means they made a change after that line." Integration between separate software that is completely undocumented? No documentation whatsoever? No naming conventions? No proper indentation or readable code? No ER diagrams?

Code that works, but is an unmaintainable heap of shit?

Sounds like the Indian outsourcing work I have seen so far.

# Rob

if you pay peanuts, you get monkeys!!!

# merlin

Well its a known fact that every business needs to cut costs, while maintaining the quality. Who ever thinks otherwise think again when you own a company. Indian programmers are top notch and work for less money, thats why they are hired all over the world, including microsoft, NASA etc. for those who still understand teh value of Indian programmers feel free to visit http://www.e-guru.in to find the best of Indian programmers.

rgds jason

# jason