Memoirs In Free Fall

February 23, 2005

hendry gets it

Filed under: Uncategorized — amit @ 8:47 pm

Looking over Planet Debian, I came across a post by Kai Hendry (maradns packager for Debian) detailing his thoughts about the state of the software industry in India, and I think considering his relatively short stay in Bangalore, his observations are spot-on. I’ve written about this before, but in particular:

Infrastructure in Bangalore is dissapointing. Traffic is a nightmare. You really need to live close to your work. The IT developments are just office buildings. Not usually entirely funded by government. I was told of substantial Singapore investment. They do not even provide UPS and Internet. These things typically need to be handled by each individual company there.

I think he meant “not unusually funded by government,” which isn’t strictly true—most of the foreign companies that open centers here are self-funded and don’t get a tax break unless they set up shop in one of the Software Export Promotion Parks (which are zones in and around the city designated for software companies to write software meant exclusively for export, in exchange for which they don’t need to spend so much on taxes—sort of like Dubai and its Jebel Ali Free Zone for manufacturing and shipping companies). The particular company I work for is in a SEPP.

It shouldn’t be very surprising that software companies under Indian management do not provide facilities like power protection or Internet access to their workers; “classic” (i.e. archaic) Indian management techniques usually involve a combination of skimpage to the maximum and slave-driving to the extent beyond which employee turnover becomes a bigger problem than it already is. (As it is, during these boom times in the Indian IT industry, you’ll find that more people than not change jobs once every three months—yes, to Messengerial extents, but with different motivations—in order to quickly ramp up their “Cost to Company”—which is what you need to tell recruiters when looking for jobs—the use of this acronym should shed some light on just how underdeveloped human resources knowledge is here. Because employers are loath to provide raises in accordance with industry growth and growth in IT worker salaries over time and with experience, it’s usually more profitable to simply look for and change jobs and gain a hefty increase in the salary every quarter than to stick around with the employer and wait a year for a much smaller increment, even at a cost of future prospects, especially since most folks here don’t think that far into the future.) Most benefits provided are just a tax-saving technique meant to attract employees—assuredly, if these weren’t boom times and employee turnover wasn’t such a problem, employees could expect few to no benefits at all from employers, as indeed was a case even as recently as two years ago (“the slump”).

My peers seem to earn less than 1000 EUR (after tax) a month here. And that’s for the better jobs.

I earn substantially less than this every month and I work at one of the better-paying companies. In order to achieve a €1,000 salary, I’d need to have maybe two years’ worth more experience.

Some interesting things:
  • Education level is supposingly western level but it is not.

You’ll find that Indians domestic and abroad make a lot of noise about the education system being superior to what you find in the West. “After all, our kids earn higher grades in the Western system than they do back home!” (Never mind the fact that “back home”, the marking schemes and teaching techniques are hopelessly archaic and this is what’s reflected in the higher grades.) And: “The Westerners are illiterate; our secondary education systems often teach what’s only taught in college there!” (Never mind the fact that cramming facts isn’t the same thing as being able to apply the knowledge; the latter’s what is not and will not be taught in Indian schools for decades to come, simply because no one here is equipped to conceptualize what education is actually meant to achieve.) Also: “We teach more than what Western universities teach and in less time!” (Never mind the fact that students are able to absorb and apply what those expensive Western universities taught them, while the Indian student is left wondering why he’s cramming what he’s being taught. The Westerners reading this who went through only the first year or two of college will be wondering how this is any different from Western university education; the answer is that this is a matter of degree—things are much, much worse off here, and the first year or two of a typical American degree for instance are all generalities; it’s only with that base can a student truly appreciate what’s taught during the last years and truly begin to be able to apply it.)

Suffice it to say that an Indian programmer only starts his education when he joins the workforce (and few undergraduate education programs here involve internships or co-ops; it’s only after graduation that the vast majority of programmers taste their first employment), and a poor education that is: most of the work available here is mechanical programming to specifications already set at a highly micromanaged level; there is no need for (or space for) creative expression, and that’s a good thing, too; most programmers here have no idea how to apply their knowledge creatively to come up with an actual useful design. Their miseducation has seen to that. (Most students have not done any programming beyond rudimentary BASIC on MS-DOS or an Apple II in school before coming to college to learn computer science; a select few have managed to learn some PASCAL or C++ in high school, but that’s pretty limited and usually inapplicable, since these basic introductory classes do nothing to nurture creativity.)

  • People need a lot more management here.

. . . otherwise they’d slack off and work wouldn’t get done, or they wouldn’t know what to do or how to do it, given a basic lack of creativity. The work ethic is atrocious—the programmer is unlikely to take a real interest in what he’s doing, as opposed to his wife, parents and kids waiting for him at home (and calling his cell phone every half hour).

  • There are no “superheroes? here. No outstanding talent.

Apart from the miseducation (see above), outstanding talent really requires much exposure to the tools at hand and inspiration in the form of stuff to run and inspect to see how it works, as well as an active curiosity nurtured from day one. Programmers were usually only really ever exposed to computers at college and at work—only those coming from well-to-do families could afford one at home, and once you weed out the gamers, you’re left with very few who actually learned anything substantially applicable to their current profession. To be really good at it, you’d need to have a curiosity and an active imagination unsuppressed by parents and teachers over the years, and the strongly conservative, traditionalist, rigid structure of Indian society and culture strongly dissuades any sort of curiosity or critical thought. (Again to the Westerners reading this [Stephan, I'm looking squarely at you], the way this is different from the West is in degree—things are much, much more rigid and unaccepting of curiosity and new ways of doing things than you’re accustomed to.) As a result of these things, people take a dogmatic, fatalistic approach to life—”just follow the well-trodden path and suffering will be minimal”—so their latent talents stay latent and you have no heroes, let alone superheroes.

  • On average employees are much younger here and as a result far less experienced than European counterparts.

This is primarily because the catalyst for people to start becoming programmers—namely, the outsourcing trend—didn’t exist, so there are few older programmers who haven’t already left to make their fortunes in the United States and other Western nations (during their boom times). What you’re left with is a very large proportion of computer science graduates (or retrainees) from 1999 onward with most of the older programmers having left for greener pastures when it was still possible to do so.

Not that experience can make up for incompetence (and I don’t know what else you can call a general inability to design or think creatively), but it can certainly help with the naïveté I end up dealing with on a day-to-day basis.

  • People are more “humble? and as a result are very slow or reluctant to tell project managers about problems.

If you’re blind, you’re likely to defer to a manager’s judgement, even if he is, too, since he has the unique ability to become irate at the drop of a hat, say and do unreasonable things and in general, make life difficult for you. (You see, archaic management techniques are practised by more than just HR.)

  • People work really long hours here. (What ever happened to the XP 40 hour week?)

Ah, this is partly due to the poor, misguided souls having been told somewhere along the way that only coding (as opposed to thinking about or researching an issue) constitutes work, and partly because the sweatshop-style management techniques pretty much badger employees into spending very long hours at work to meet completely unreasonable deadlines.

To conclude, from what I have seen, I don’t think I would personally invest in Indian IT unlike my parents did with textiles. My gut feeling right now is the jobs done here are the ugly inefficient “big company? jobs. I hate to sound pretentious about my expertise, but from what little (two days!) I have seen I think that the India IT industry is really far behind the cutting and creative edge I was looking for.

I’m impressed by the accuracy of these observations. Few Westerners (or Indians for that matter) I’ve seen post about this issue on the Internet have grasped the situation quite as well as Kai has. Indeed, the majority of the software jobs here are “services”-style project customization jobs, minor software projects micromanaged from Above (i.e. mechanical coding here) or business logic tasks with specifications handed down from Above. There’s very little in the way of real indigenous product of a high enough quality to be able to contend with the big guys from other countries, and the causes can all be traced to a society still mired deeply in the old ways of doing things and not quite ready to truly become a free-thinking people unencumbered from the traditional past.

February 20, 2005

What rules

Filed under: Uncategorized — Tags: — amit @ 12:41 pm

Terry Pratchett does. Oh, the humor. Oh, the satire. And all in a day’s reading for a fantasy geek feeling a bit irreverent about the genre (and I’m not even a fantasy geek except for Sluggy — see below — though admittedly, I’m all about the irreverence).

Dan Rutter for, well, being Dan Rutter and writing the best gadget reviews in the Solar System.

Sluggy Freelance for being the most imaginative and meticulously-planned webcomic I’ve read. The most recent complete storyline, That Which Redeems, was deliciously dark and, it would seem, some elements of it had been in the works for seven years. I guess it sort of helps that I was in quite a dark mood when I perused the comics in that storyline, but man, I can think of the music and the lighting that would make for the perfect setting for the climax to that storyline. (Yes, I think I might be going ever so slightly loony.)

It’s had lighthearted storylines and some really dark ones and I think the comic really shines at its darkest. Like a black hole. Mm, black holes.

Jamie Zawinski, just cynical enough (apart from being an excellent technologist).

February 17, 2005

Wallpaper separation

Filed under: Uncategorized — Tags: , , , — amit @ 11:12 am

Adam recently blogged about sorting images by attributes such as aspect ratio. While this promises to be an awesome project, it’s a bit complicated for just picking out wallpaper. I’d been thinking of doing something like this a month or so ago, so the weekend after my birthday (as well as that of this blog), I was sitting bored and decided to script up something. Here’s what I came up with — a bash one-liner to just delete anything except 4:3 and 5:4 images (well, split into two so as not to break the page layout):

identify * | \
 sed -r ‘s/^([^\[]*)(\[[0-9]*\] | )(JPEG|PNG|BMP|GIF|SVG) ([0-9]*)x([0-9]*).*$/[\1 ]P 3 k \4 \5 \/ p/g’ | \
 dc | egrep -v ‘ (1\.333|1\.250)$’ | sed ‘s/^\(.*\) [^[:space:]]*$/\“\1\”/’ | xargs rm -f

(It depends upon ImageMagick for the identify tool.)

And this one-liner will do the same thing for 16:9 and 16:10 images:

identify * | \
 sed -r ‘s/^([^\[]*)(\[[0-9]*\] | )(JPEG|PNG|BMP|GIF|SVG) ([0-9]*)x([0-9]*).*$/[\1 ]P 3 k \4 \5 \/ p/g’ | \
 dc | egrep -v ‘ (1\.777|1\.778|1\.600)$’ | sed ‘s/^\(.*\) [^[:space:]]*$/\“\1\”/’ | xargs rm -f

You can probably figure out what to change for other aspect ratios.

(Obviously you’d want to copy all your images to a temporary directory and then run this command within that directory, unless you want everything else to be gone permanently.)

Unfortunately. it’ll nuke all images that are close to the needed aspect ratio but don’t quite match. libnautilus-pr0n is likely to be more useful for those kinds of situations.

February 15, 2005

Arnaud’s Technical Recipes

Filed under: Uncategorized — Tags: , , , — amit @ 8:13 am

I found this site a few months ago and it’s an essential resource for any sort of cross-platform programming. Arnaud’s technical recipes go into debuggers and debugging on different platforms, library linking, compiler options and tips on getting the maximum mileage out of a compiler. Also included is information on how to extract hardware details, patchlevels and license information on different operating systems.

<Dan Rutter>Highly recommended.</Dan Rutter>

February 13, 2005

ARGB visuals for Sawfish

Filed under: Uncategorized — Tags: , , — amit @ 8:57 am

I’ve long wanted to use Keith Packard‘s transparent xterms with Composite (source + binaries). However, my window manager of choice, Sawfish, did things in a way that precluded windows from showing up transparent. So I hacked up sawfish to get translucent windows working, and someone else has added support for translucency effects from sawfish LISP code itself, opening the door to the ability to control composition effects from sawfish window menus and effects such as making a window translucent while dragging it around the screen, which is a very interesting effect.

Blog at WordPress.com.