Archive for September, 2005

What Indians call the ‘@’ symbol

One of The Vendor’s guys-on-site just stopped by to ask me to email him some things. He just came onto the project, and I didn’t know his email address yet, so as I prepared the email, he dictated his address to me. As he spelled out each letter, I typed it in, until he said something that sounded just like “adder-oit”. I asked him to repeat it twice, and both times, it sounded just like “adder-oit”. Oh shit, I thought, maybe it’s one of those letters that has a weird translation, and he can’t remember what it is in English. Like ‘eegreck’ in French means the letter ‘y’. He realized I was confused, leaned over, and typed ‘@’.

“Oh!” I said, “you mean, ‘adroit’? Is that the name you use for the ‘at’ symbol? We just call it ‘at’.” I figured it was one of those fancy names for symbols, like ‘ampersand’ for ‘&’ — easy to forget, and not used all that often in the States. [Remember, Indians typically learn to speak British English, not American, so it would make sense that they learned some things like that. At least, in my version of the world it does.]

“No,” he explained, “we call it ‘at the rate’.” He had to say it a few times for me to get it, but suddenly, I had a mental image of markets, selling stuff: “3 @ $1 ea”, that kind of thing. After a laugh, he sent me some background info on @, which I Googled: here’s the original.

Why do Americans tell themselves they’ll survive off-shoring by being more creative than the rest of the world?

I’ve been reading and thinking more and more about off-shoring. One thing that keeps coming up is the idea that Americans are generally more mentally flexible, or something. People talking about off-shoring say “yes, you’ll lose your mundane jobs, your grunt-work. But you’ll excel by being creative! That’s what Americans are good at!” Two pieces of the idea:

  • We value trouble-makers. People who say “screw off,” and go do it their own way. Cowboys, mavericks, smart-alecks, rebels, scrappy little kids. Clever, resourceful people. Iconoclasts. Main benefit: we feel it’s a Good Thing to charge off and try something, no matter how stupid the idea seems. We take risks, and sometimes that stupid idea pays off. Go figure.
  • We don’t have a rigid class system. We believe, as a kind of core cultural value, that any poor bum with talent has a chance of using his talent to get rich. Call it the American dream. Main benefit: we believe that anyone can be rich/famous/president/CEO, so why not you? Why can’t you be C-E-freakin’-O?

These qualities make us skeptical of old ideas, and eager to embrace new ones. I suppose both of those points go back to how the country was founded: a bunch of poor people said “screw off” (or were kicked out, whatever), went to a different continent, and gradually became a really successful country. At least, that’s the gist of the story as we learn it (I have no interest in talking about how much of that is exactly accurate). But no matter where these values come from, they make us more mentally flexible, more creative. That’s the idea, at least.

In contrast, the Chinese, the Indians, the Japanese all have very rigid societies. They value stability. Respect. Honor. Protocol. The vendor liason I worked with had worked in both Japan and the US, and said that as you move from East to West, the culture becomes less rigid, less formal. Apparently in Japanese meetings, only the two people of the highest rank actually talk, while everyone else listens. The underlings silently shake their heads to indicate whether they agree. In this kind of culture, there’s no “thinking outside the box” (you know you were just waiting for me to say that). The liason said that India was nicely situated between Japan and the US: not-too-rigid, not-too-loose. Able to deal with both cultures. [I guess this is a different kind of flexibility.]

On my off-shored project, I only saw two bits of evidence of this. 1) The Indians were hesitant to criticize our ideas at first: until they became comfortable with us, they erred on the polite side…but that’s hardly being inflexible. 2) — the real piece. They were very reluctant to figure out any problems we threw at them. Any part of the design we left for them to solve, no matter how trivial, they asked us to fill in. [This after repeatedly being told by management, "these guys are geniuses -- lean on them, learn from them. Working with them will improve us." Whatever.] Whenever we expected them to take a pro-active approach to things, to apply creativity or intelligence, we had problems. It seemed like they preferred to grind things out, code-monkey-style, without thinking about it. This puzzles me, because that stuff is the part that I like about my job — figuring things out, solving problems.

Now this all sounds very one-sided to me. Why is it only Americans can be creative? What kind of crock are we telling ourselves? I’d love to hear other perspectives on this — but spare me the “non-US programmers can be innovative, too, jackass!” I know they can. Has anyone seen evidence of this? Any evidence against it? Other than “oh, such-and-such Indian company is very innovative, if you look at their homepage…”? I’m looking for stories from people who actually worked on off-shored projects, and were amazed at the creativity and talent of the off-shore team.

For a good example of this idea, check out The New Face of the Silicon Age from Wired.

Help, I’ve been outsourced, and The Vendor’s code is a mess!

I’ve been working as tech. lead, going full-speed on a project since February. Last May, we learned it would be outsourced to The Vendor in India. Since my team has never outsourced anything before, we suddenly had to figure out how the whole thing would work (of course, there’s no extra time). We already did a decent amount of design work…would The Vendor repeat that work? Or would they work from what we provided them? How would they tie in to our build process? How about our internal services that use our own SOA framework? [We use proprietary, built-in-house frameworks for anything. We're just now (yes, now) moving off our proprietary MVC framework to the latest, greatest, cutting-edge Struts 1.1 MVC framework. w00t!]

Anyway, it was a hard summer, trying to figure all this new stuff out, finish the design, and not get all gloomy over my career going to India (hence the relative quiet here for the past months). I have some more posts coming about the whole experience, but for now, I wanted to say something about the quality of the code we’re starting to see from The Vendor.

It sucks. The code absolutely sucks. I’ve occasionally seen code this bad from very junior programmers with not much talent. People keep saying “but surely they just haven’t polished it up yet!” To them I say, the mess it’s in makes it, oh, three times harder to understand then if they’d just keep it somewhat clean to begin with. It’s not that I’m expecting a 5-lane highway and getting a dirt road, it’s that I’m expecting a dirt road and getting the thickest, nastiest, buggiest (har har) jungle undergrowth that almost totally prohibits movement. We’re not supposed to code at all on this project, or fix any bugs (the contract says The Vendor will do that), but I’ve had to whip out my trusty refactoring machete and cut some trails through the thicket just to understand the mess. Even the liason seems embarrassed.

Now I admit I like clean code, but I am not being a code priss here. I like to see evidence of thought. I like to see (say) naming conventions. Consistent capitalization would at least be nice. I like to see computer resources being used intelligently. I see none of that here. I’m not pouting that my job is being outsourced, and taking it out on the poor guys in India. This code is far below anything I’d tolerate from my team members — even a junior programmer I’m mentoring.

I don’t want to believe the programmers in India are brain-dead. I imagine, since this was a fixed-bid project that they underestimated, and since it’s their first contract with my employer, that they were eager to impress, and now find themselves trying to do something impossible. [We all know how sales over-promises, and engineering suffers.] I know for a fact that they’re working around 70 hour weeks, and I feel for them. Maybe there are a bunch of coders there running amok, just trying to get the thing thrown together and shipped. But then I think about some of the specific examples I’ve seen, and it almost defies belief. One good example will give a picture. The paraphrased code:


List counties = LoadList("countries");
session.save ("states", counties);

Yes, you read that right. Load a list of countries, store it in a variable called “counties”, and store it in session as “states”. Is it a list of counties? countries? states? Who knows? [I know, I know -- maybe "counties" is just a typo of "countries", but we do deal with counties. If this was the only problem, I'd give them the benefit of the doubt.]

What I really think is going on here (now that I finally get to it) is that the coders in India have a wide talent margin. I think there are coders there who’ve been coding for (maybe) three months longer than they’ve been employed. It’s been said elsewhere, and this isn’t a new thought, but coders in India are in huge demand, and the barrier to entry is very low. So many of them need to make a living, and with demand so high, software is easy money. It’s like the dot-com bubble here, when people who had no business coding were able to make scads of money. My advice for anyone working on a project that’s been off-shored is beware of the newbie programmers — and you’ll probably have some on your project. The Vendor will have some slick, talented people on their team who know what they’re doing, but for every great programmer there’s at least one dud.


Say Hello

danbernier [at] gmail [dot] com
Twitter @danbernier
Hartford.rb
LinkedIn

Tweeting:

I’m a BackPack fan

Backpack

Categories