In Association with

Who am I?

You can look at my home page for more information, but the short answer is that I'm a dilettante who likes thinking about a variety of subjects. I like to think of myself as a systems-level thinker, more concerned with the big picture than with the details. Current interests include politics, community formation, and social interface design. Plus books, of course.

Blogs I read

Directories on this blog


Recent posts

Thu, 29 Jan 2004

Somehow the topic of unions came up at work yesterday, and, in particular, why unions have totally failed to become a force in the high-tech economy of the Bay Area. I had put some thought into this a few months ago when I made the mistake of deriding unions in front of a friend whose entire family was strong union members. After shamefacedly extricating myself from the situation, I tried to figure out why I didn't think unions were a good idea for somebody in my position. Here's my stab. You be the judge.

I postulate that unions are a necessary force in situations where there are few differentiating factors among workers. Taking the prototypical example of the assembly line, I would imagine that it may take a few months to learn your role on the line, but after that, your ability to do your job faster or more efficiently isn't going to improve significantly. In fact, no amount of natural ability is going to really differentiate one employee from another - the line moves at the same speed regardless of who's on the line. I've never worked in a factory, so this may be a total fiction, but let's take it as an assumption for now. In the absence of unions, it would make sense for the company to fire people after a few years as they demanded more money, because they don't get appreciably more economic return with the greater experience of those more senior employees. Unions, by enforcing seniority and by organizing the workers, provide a balance to the company's firing power.

Let's contrast this situation with software. There is a vast gradient in ability of software engineers. The estimates I've heard are that a superstar software engineer is 10 to 100 times more productive than an average software engineer. So this is a difference at the start - the best can truly differentiate themselves from their coworkers. Furthermore, experience matters in software engineering. You learn from your mistakes, and engineers with more experience will get things done faster and more efficiently because they won't make the same mistakes a novice would. I only have a few years of experience, but I'm several times more productive than I was when I started in terms of useful code produced. So there is a return on investment for the corporation in keeping more senior engineers around; the company may have to pay the senior guy double what they would for a kid straight out of college, but the senior guy is probably an order of magnitude more productive, so it's worth it.

In such a world, unions don't make a lot of sense. There is little incentive for the company to fire people as they become more senior, because their productivity goes up faster than their salary demands. Furthermore, a union would hold back the superstars, because unions are based around the idea that all workers are equal, whereas that is manifestly not true in the world of software engineering; again, the superstars are demonstrably more productive than their coworkers. In fact, superstars elevate the level of your entire team; for instance, they might design a more efficient architecture which the rest of your less talented software engineer team can fill in the details. And since software engineers are full of hubris (and laziness and impatience), they all believe that they're the superstars, so they look down on the concept of unions and all workers being equal.

That's been the state up until now. However, I think it's possible that things may change radically in the near future. Why? Because those "average" programmers don't necessarily have to be here. You could have your superstar software architect design things, and then outsource the actual implementation out to a firm in India. All of those less talented programmers are now out of work. Let's re-examine the two qualities to an employee pool that I said contributed to unions: (1) experience makes little difference, and (2) all workers are equal. In this new outsourcing world, (1) is less true than it was before, since if you're not a superstar, and are merely implementing the superstar's design, then your experience is not as useful. You have to know enough not to make dumb mistakes, but the learning curve levels off fairly quickly. And as far as (2), again, if you're not a superstar, you're equivalent to any of the other guys, so they may as well farm that work out to India. Thus, the conditions are now in place where unions might thrive.

I'm not saying this is necessarily an accurate picture of how the software engineering industry looks right now. For one thing, I'm exaggerating the difference between the superstar and the average programmer for the sake of this argument. Of course it's going to be more of a continuum. However, several companies already operate with this two-tiered model in place. Oracle and Sun are well-known for hiring hordes of kids straight out of schools as programmers to implement the software designed by their more senior folks. The kids generally last about two years before they realize they're getting overworked and underpaid and move on. And the next wave of kids rolls in. The two years is important, though, because it gives Oracle and Sun a chance to spot any potential superstars and find a way to keep them. Microsoft does the same thing on a grand scale; they generally try to hire the top graduates regardless of whether they need them. They figure that, if nothing else, they're keeping the superstars from their competitors.

So I think it will be interesting to see how the software engineering industry develops. Will unions or some other sort of collective employee bargaining be in its future? Regardless, I don't see a lot of future for any software engineer that is not of superstar quality; those implementation jobs will continue to flow to China and India where programmers get paid 10% or less of what they do here. This is why I currently specialize in instrumentation software, where developing the software requires physical presence. But long term I may have to consider whether software engineering is a field with a future.

posted at: 16:10 by Eric Nehrlich | path: /rants/politics | permanent link to this entry | Comment on livejournal