A contrarian blog, because the majority is wrong about a lot of stuff.

March 11, 2007

Why a career in computer programming sucks

Let’s being by reviewing what I previously wrote about the four types of human capital. Computer programming is a job that’s heavily dependent on temporary knowledge capital. It’s temporary because the powers that be keep changing the languages and tools that programmers need to do their jobs. In nearly all other professions, knowledge capital increases as you grow older because you keep learning more about your field. But in computer programming, the old knowledge becomes completely obsolete and useless. No one cares if you know how to program in COBOL for example. It’s completely useless knowledge.

Even though I haven’t been working in computer programming all that long, I have already seen most of the technologies that I first began working with become relegated to the garbage pile. Visual Basic 3.0-6.0? Useless knowledge. I haven’t seen any vintage Visual Basic since 2002. And don’t confuse Visual Basic.NET with the classic Visual Basic. They are really completely different technologies.

So what advantage does a 60-year-old .NET programmer have over a 27-year-old .NET programmer when they both have, at most, 5 years of experience doing .NET programming? Absolutely none. I’d make the case that it’s better to hire the 27-year-old because he is still at the stage of his career where he enjoys the stuff and is therefore more motivated to learn and work harder, while the 60-year-old is surely bitter about the fact that he’s getting paid less than the younger programmers. No one wants a bitter employee.

This assumes that the 60-year-old programmer has even learned .NET programming. Every time a new language or technology comes out, the programmer faces a fork. In one direction he gets to work with the new technology, and in the other direction he continues working with the old technology for too long and therefore falls too far behind to catch up. The older you get, the easier it is to wind up going the wrong way when you reach one of these forks. Because as hard as it may be for a 22-year-old to imagine, as you get older your desire to completely relearn everything decreases, so you are likely to succumb to the temptation of staying with the familiar technology for too long.

Because of the temporary nature of the knowledge capital, computer programmers quickly reach a stage in their career when their old knowledge capital becomes worthless at the same rate as they acquire knew knowledge capital. Their total knowledge capital is no longer increasing, so neither does their salary increase. They have reached the dead end plateau of their career, and it happens after less than ten years in the field.

Other professional fields are not like this. I remember reading the classic 1933 edition of Securities Analysis by Benjamin Graham, and as I read it I was amazed by how useful and relevant the material was even though it was more than 65 years old.

Lawyers are still citing Blackstone’s Commentaries on the Laws of England which was completed in 1769. Now there’s an example of a profession where knowledge capital deteriorates at a very slow rate.

Low prestige

Computer programming is a low prestige profession. This is evidenced by the fact that people from affluent families rarely go into computer programming but instead will seek out the more prestigious professions such as law, finance, and medicine. Of course there are some exceptions. There was a programmer who worked for me whose father was a doctor. But more typical was another programmer who never finished college and whose favorite hobby was hunting.

And that brings us to the issue of education. Students at Ivy League universities are not majoring in computer programming. There is a prestigious school, the Massachusetts Institute of Technology, devoted to science and engineering, and while I’m sure that there are some students there who are majoring in “computer science,” the science that’s taught isn’t related to the dirty low-prestige job of creating e-commerce websites using ASP.NET. On the other hand, practical computer programming is a popular major at bogus for-profit schools like Devry “University” and the “University” of Phoenix.

Now some may ask, “Who cares if the prestige is low, as long as we’re getting paid good money?” This is a fair question. First of all, there are some practical social benefits to having others perceive your profession as being prestigious. As a Chinese immigrant at the University of Virginia wrote, “whatever your position is, as a CS person, you are socially classified as a geek. At my school, University of Virginia, being a rich frat boy and having a future in investment banking or law gets you a lot further status-wise even though you may not necessarily be paid more.”

But the prestige of the profession affects both the work environment and the future economic viability of the profession, as will be discussed below.

The foreignization of computer programming

I’m sorry about using a word that doesn’t exist in the dictionary, but foreignization best explains what’s happening in the computer programming industry.

First of all, there is the familiar outsourcing of jobs to foreign countries, mostly India. Because of this, the computer programming industry within the United States is an industry with a shrinking number of jobs, although as a worldwide phenomenon I’m sure computer programming will grow at a brisk rate.
Would outsourcing of computer programming and other IT jobs be such a big trend if the industry were more prestigious? I think not. You don’t see lawyers being outsourced. In fact, by law, only members of the bar are allowed to practice law, so it would be illegal for foreigners to do American legal work.

The other half of foreignization is the near abandonment of the domestic IT market to foreigners. This is a trend that is accelerated by the issuance of special H1-B visas that allow extra computer programmers to come here and take jobs away from American programmers. Computer programming (along with nursing) has been specially targeted by our government for foreignization.

Foreignization creates a vicious circle effect with the low prestige of the profession. Because the profession has low prestige, employers balk at the idea of having to pay high salaries (while it seems perfectly appropriate if a lawyer or investment banker is making a lot of money). Thus the demand for more H1-B visas so that salaries can be decreased. In turn, Americans see an industry full of brown people speaking barely intelligible English, and this further lowers the industry’s prestige. Computer programming and IT in general is now seen as the foreigner’s industry and not a proper profession for upwardly mobile white Americans. [The Indian and Asian people I've known in the IT industry are nice people, and normally I don't pay attention to their different appearance, so this should not be taken as a racist dislike of non-white people. I am only accurately describing the fact that the typical white American thinks negatively of a profession that's predominately non-white. And I stand by my belief that people born in this country have more rights to the money being created here than foreigners. Asian countries feel the same way about foreigners. Asian countries are, typically, a lot less open to foreign worker immigrants than is the U.S.]

Because there is no reason to think that the trend of foreignization will reverse, this will ensure that the future of the industry will be lower salaries.

Project management sucks too

In order to escape a job where the future is bleak for older programmers due to the rapid depreciation of computer programming knowledge capital, computer programmers face the need to move up to management or likely wind up as underemployed fifty-year-olds, only suitable for lower paying IT jobs like “QA” because they no longer know how to use the latest and supposedly greatest programming tools.

It is often suggested that the most natural next move “up” is into project management. But the first problem with this situation is that project management sucks too. It doesn’t even deserve to have the word “management” in the title, because project management is akin to management as Naugahyde leather is to leather. Project planner and status reporter is the more correct title for this job. Once you take the word “manager” out of title, it loses a lot of its luster, doesn’t it? Everyone wants to be a manager, but few would want to be a project planner and I daresay no one would want to be a status reporter. Status reporting is generally the most hated activity of anyone who endeavors to do real work.

One can’t write about project management without mentioning the worst piece of software every written, Microsoft Project. Somehow, an entire project management industry has developed around this crappy program which no one can figure out how to use. (See my previous post about Microsoft Project Server and Battlestar Galactica.)

Formal project management is more of a pseudo-science than a real profession, because despite the increasing use of formal project management methods approved by the Project Management Institute (yes they have their own institute), there is no evidence that software is getting better or that fewer software projects fail today than did ten years ago when formal project management was in its infancy.

The growing popularity of project management has nothing to do with better software. It’s really more designed to please senior management (the real managers who control the purse strings). Real managers, who usually don’t understand anything about computer programming but who don’t like the idea that they have to pay high salaries to a bunch of people from foreign countries, love the reports presented by project managers, because the reports create the illusion that progress is happening and that the money being spent on the IT project is not being wasted.

Even if the computer programmer wishes to sell his soul and enter the pseudo-scientific field of project planning and status reporting, the transition is becoming more difficult. The trend is that project management is branching off into its own discipline with its own educational requirements and certification process. Thus the experienced computer programmer will usually find that employers aren’t interested in having an ex-computer programmer “manage” a project, but rather they seek someone with PMI certification and years of experience in project management.

This trend, in which people without computer programming experience manage computer programming projects, is a result of the low prestige of computer programming. People with high prestige jobs, like surgeons, would never allow themselves to be managed by non-surgeons. In a complicated medical procedure there will be a head surgeon overseeing the surgery, and not a project manager without any medical training. Lawyers have Model Rule 5.4 which makes it unethical for non-lawyers to manage lawyers.

Obviously, the problem with the computer programming industry is that it lacks a central organization to create barriers to entry and to lobby state and local legislatures.

The working conditions suck

This relates to the prestige thing again. When a company I worked for wanted to save money on rent, guess what department they decided to move to the low rent satellite office? You guessed it, the IT department.

If you look forward to one day having your own private office, then computer programming sure isn’t the way to go. At a law firm, each lawyer has his own private office. Computer programmers are cubicle employees, not considered important enough to be given nice workspaces.

Employers are even too cheap to invest in proper tools for the computer programmers. Take monitors, for example. Every computer programmer knows that modern development tools are easiest to use if you have a really big monitor, because you can see more lines of code at the same time, and because there are a bunch of ancillary windows which steal screen space from the main code window. My home monitor is a 21” 1600 x 1200 Samsung SyncMaster 214T, and it sure was worth the $900 or so that I paid for it. An employer interested in getting the most productivity out of its software developers would supply them with proper high quality monitors, but they don’t. In every job I ever worked, the computer programmers never had the best monitors.

If you walk over to the graphic arts department, you will see really big monitors. The graphics people could surely make do with smaller monitors, but even though they make less money than computer programmers, they have been able to convince higher level management that their work requires better hardware. When computer programmers request better hardware, they are often seen as whining geeks who just want to waste the company’s money on unnecessary high-tech toys.

Other professionals get proper tools to do their job. For example, lawyers are given access to Westlaw or Lexis, and a library of books. The amount of money per year per lawyer spent on research materials most surely exceeds the money per computer programmer per year spent on computer hardware. If lawyers were treated with the same disrespect as computer programmers, they would be told to stop whining about the lack of research materials and to go use the public law library.

So what's a good profession?

After spending so much effort explaning why computer programming sucks, I think it's only fair to suggest some better professions for any young people who might be reading this. Unfortunately, that's hard to do. The best professions, because they are so good to work in, have more people trying to enter than there is room for them. Thus you can graduate with a law degree and find that no one wants to admit you to any of the good legal career tracks.

I think that, if you can't get into a Top 14 law school or a top graduate business schol, then public accounting probably provides a better career path than computer programming. You need to start out as an auditor at a Big Four accounting firm, and the salary in the early part of your career won't be as high as in computer programming, but at least older accountants are valued for their experience and knowledge. It's a career where you can still be employed at forty or fifty.

If you are technically oriented, then you should consider a career in patent law. This requires you to get an engineering degree and then go to law school. Because such a tiny percentage of law school graduates are qualified to take the patent bar, you will be able to get jobs in intellectual property law which the other law school graduates are unqualified for.

Well, I don't live in US, but in Northern Europe so the situation might be different. I have been working as a computer programming for almost decade now (I'm 30). During the last few years I have had high pressure from upper management to move to project management. I have enjoyed programming, so I have been trying to avoid that but eventually it became too difficult and now I'm working as a project manager.

Otherwise I totally agree with your post. One thing I have been also considering is moving to some 3rd world country and start to work there as a programmer. I think being a programmer in such countries is much better position in social hiearchy than in developed countries. Probably some Latin American country might be a good bet, just have to train my Spanish little bit more.

If making $130k a year sucks, there are plenty of people willing to take HS's place. This kind of talk really gets very little sympathy from the rest of America. If programming sucks, try working in a factory or any job that gets exposure to the weathers. How many patent lawyers do we really need?

Only if you're bad at it. The good ones understand computer science, which makes us good at programming regardless of language. If an ex-COBOL programmer can't compete with a younger person raised on C in C then he probably wasn't a good COBOL programmer to begin with.

Low prestige

This is true, but it only matters if you care what shallow people think of you. HS, I think this is your big problem in life. You're too smart to believe the shallow people are right but unable to stop caring what they think.

The foreignization of computer programming

Overblown, I think. If you're near a city of any size and are an above-average programmer, you should find a good job quickly.

Project management sucks too

Yeah, but in a good place, you can advance along the technical track.

Conclusion

I work for a researchy type place that has a great working environment, smart and interesting employees, varied and interesting work, no cubicles, etc. If you're dumb enough to go for the place offering the most salary without taking the working environment into account, you have no-one to blame but yourself. And ditto if you got into computers not because you liked it but for the relatively easy money.

HS, you constantly look to the wrong things for happiness. Money, prestige, etc., are for suckers. There are a couple of super wealthy people taking advantage of all you social climbers, probably laughing their asses of at how miserable you're willing to make yourselves in the quest for some utopian social status that you'll never get so they can get even wealthier off your backs.

Patent Law worked very well for a friend of mine. Even in his early years when he lived in Basle and at the end of every month he and his wife would discuss how to spend the salary surplus. Often they'd just leap into the Porsche and whizz down to Milan to go to the opera.

There are a couple of super wealthy people taking advantage of all you social climbers, probably laughing their asses of at how miserable you're willing to make yourselves in the quest for some utopian social status that you'll never get so they can get even wealthier off your backs.

Just because a career has a high salary doesn't mean it can't also suck. Security is also important. So are working conditions. I've known several people in this line of work whose lives seemed to suffer a negative impact from lack of security, especially their social lives. It affects your ability to develop and maintain relationships because you don't know where you'll be in a year or two. It affects your ability to, for example, qualify for a good mortgage because you don't have a long history at your job. These factors are a real handicap to someone trying to lead an adult life.

This is a very good essay by HS. In fact, I would say it his best (even better than his "Law School" essay).

The IT industry is not going to get better. The anti-immigration people are mostly concerned with cracking down on illegal immigration, not legal immigration. So, don't expect the H1-b visa cap to be lowered. The high-tech industry lobby is never going to allow a decrease in the number of foreign programmers, and the rate of outsourcing is only going to increase as more poor countries train computer programmers.

This brings me to HS's conclusion. He recommends that people go into law (if you can get into a Top 14 school), patent law (if you have an engineering/science degree), business school (if you can get into a good program), or public accounting at a Big Four firm.

There are problems with going into all of these fields since there is A LOT OF COMPETITION to get into these fields. Getting into a Top 14 law school is tough since these schools only accept the best students with the highest LSAT scores. Getting into patent law requires an engineering degree in addition to a law degree. Getting into a good business school is also tough since they require good undergrad grades and significant work experience. Finally, getting a job at a Big Four accounting firm is not easy since they only recruit at certain schools and they only hire the best accounting students.

I wish HS's essay was more optimistic, but I think reality is not always optimistic.

Jobs in the computer industry are more prestigious than most professional jobs. In a 1989 study of job prestige, Americans rated the prestige of computer systems analysts/scientists as 74 and computer programmers, 61. The average of American workers is 44, with a standard deviation of 14. For comparison, other intellectually-demanding jobs got the following ratings:

This article would be marked down to -1 as redundant in /. forum where geeks gathered. It has no new insights and failed to explain that like law, technology also have a two tier ladder. There are people who are working on the truly cutting edge stuff and the rest of the pack. Those in the first tier jobs get rock star treatments while the rest sits in cube farms.

Saying that people should becomes lawyers if they can get into top school then BIGLAW is like saying people should do programming if they can get into these first tier jobs at Microsoft, Google, etc. Is that news? Did people not mentioned in this very blog that at BIGLAW, associates must either move up or move out.

How can HS give direction to a place he has never been? Did he go to a top tier school then worked at BIGLAW? How can he be sure that things are truly better there? Law is very much a people business. Those who are truly that devoted and have the necessary people skills to be successful at BIGLAW would probably do better doing sales or starting their own business without the need to spend three years and hundreds of thousands dollars.

There is only one thing that makes no sense to me in all this. If you think it's so important to go to a top school for a law degree or not even bother at all, why did you go to Arizona State (or did you only find this out after you graduated)?

Your argument:
- you have to keep your skills current.
- are people 'impressed' by the job title?
- career progresion
- perks

I agree with you that I have become tired with the effort of figuring out that latest microsoft innanities. However, in any tech profession there always is a need to continue to learn and grow- that is your personal responsibility. There always will be new stuff to learn, sorry.

But you find none of your knowledge transferable? Knuth's books are relevant today? Design Pattern are the same regardless of language. User interaction models are basically the same. If you understand how to decompose a problem, you shoud never be out of sorts in a new language.

The bigger issue is if all your list above were fixed, would you like computer programming? I used to like it because I like solving problems and there was a real satisfaction in creating something and knowing it was 'right' because if compiled, ran and worked.

This article would be marked down to -1 as redundant in /. forum where geeks gathered. It has no new insights and failed to explain that like law, technology also have a two tier ladder. There are people who are working on the truly cutting edge stuff and the rest of the pack. Those in the first tier jobs get rock star treatments while the rest sits in cube farms.

I never read any of those geek forums. These are my own thoughs. If a lot of other people have already said the same stuff, then this is evidence that it is true.

You're right, I don't know much about the top tier computer science track. But I'm SURE that the guys who are "rock stars" in their late twenties won't be rock stars when they are in their late fifties. The Google engineers face the same problems of technologies becoming obsolete as the guys working in cubicles in cheap satellite offices of regular corporations.

Do these "rock star" programmers make more than the $160K starting salary at the top BIGLAW firms?

It's possible to do well in accounting without working at at Big Four accounting firm. Accounting doesn't really have anything like the BIGLAW/crap law split seen in the legal field.

There is only one thing that makes no sense to me in all this. If you think it's so important to go to a top school for a law degree or not even bother at all, why did you go to Arizona State (or did you only find this out after you graduated)?

He probably didn't realize what the field was really like until after he graduated. Law schools are notorious for deluding applicants into believing a law degree is a guaranteed ticket to the good life.

"It has no new insights and failed to explain that like law, technology also have a two tier ladder. There are people who are working on the truly cutting edge stuff and the rest of the pack. Those in the first tier jobs get rock star treatments while the rest sits in cube farms."

All of HS's comments on IT still apply to higher-end IT jobs. Bill Gates himself has said that the US is falling behind other countries in producing CS students. In fact, Microsoft is know for hiring a lot of H1-b visa holders.

"Ah, how many people besides me think "if I only knew back then what I know now.""

Maybe you were a very different person back then, but it surprises me that you didn't look into the statiscs of the types of jobs the Arizona State Alumni had. Either way, it's a shame you didn't know the "right" people back then to guide you on the path you wanted to follow.

It's my impression that lots of small-town lawyers make $60K to $100K or more doing divorces, wills, etc. Maybe that's not a lot in NYC, but in the small towns I've lived in, they're at the top of the heap (except maybe for doctors). Unless lots of those state-school lawyers end up un- or underemployed, it seems a decent career.

"Does anyone know anything about the OTHER profession for nice Jewish boys, medicine?"

Medicine is a good profession to get into, but it too suffers from the career track problem.

You have to have to get very good grades in your undergrad pre-med classes and have high scores on your MCAT in order to get into a good Med School. Getting into a good Med School is important because that will help you get into a good residency program. The last thing you want is to get stuck in a shitty residency program.

I think you (HS) are essentially correct. There are few professions where things are changing so fast and barriers to entry are so low as computer programming. And even as you do get better at programming while doing programming, the problem is that usual commercial programming tasks are so simple that they're only 10% about loops, algorithms and conditions and 90% about knowing which libraries to use and how the particular platform works. Knowledge that gets obsolete quick, as you note.

I'd say that programming is a relatively high-IQ profession. Which begs the question why aren't programmers at least as well organized as lawyers. That means licences, all sorts of barriers to entry, apprenticeship system, mystic rituals... :)

Anyway, to make your day. I work as a programmer in Croatia and I make about $5/hour. Which, according to the statistics bureau, is exactly the national average. People with couple of years in the industry make double that. Average apartment costs $150 000. You're not the only one thinking about future and asking yourself whether to change career tracks ;)

Matthew Yglesias (www.matthewyglesias.com) recently advocated expanding the H1B visa program on his blog, saying that we need more foreigners to come in and compete in high skill obligations. He was then metaphorically hit over the head, repeatedly, by all but three of his readers. The discussion is worth checking out.

I'm not in the computer science field, but I think what is happening there and in nursing should be a national scandal. Also, one of the things I'm taking away from this discussion is how much the career prospects generally suck in the U.S. for recent college graduates, at least compared to previous generations. I'm in my late 30s, and while I'm not thrilled to have wound up in my middle prestige, middle income career path (especially since I live in New York), at least my chances of having a job after I'm fifty are pretty good. This seems to be increasingly rare.

Do these "rock star" programmers make more than the $160K starting salary at the top BIGLAW firms?

A good but not rock star programmer right out of a decent state school can easily make 60-80,000 and expect a 5-10% raise every year for a while. If you have the bizarre impression that you'll only be "a success" and happy with a 3BR on Park Avenue, of course programming is not the field for you. If you're fascinated with computers and smart enough to realize that you don't need to live in Manhattan and make 300K a year to be happy or feel good about yourself, it's probably the best career around. It is a high-IQ profession, of course, and much harder to bullshit through without talent. (Note that I'm speaking of programming specifically rather than other computer fields.) The best programmers are 10-100x better than the average ones and bad programmers are worse than no programmers. If you won the genetic lottery (as I suspect many HS readers have) and are a good-to-great one, life can be cushy indeed. Just find a job at a big firm that treats you well.

In essence, programming is obviously a bad career choice for ambitious people who don't enjoy programming and just want money and the gold diggers that go along with it. For gifted folks who are just looking for a good, comfortable life, it may be the best deal around.

For gifted folks who are just looking for a good, comfortable life, it may be the best deal around.

You're missing an important point of the essay. Computer programming probably seems like a good and comfortable job to the person in his twenties, but in the long run it is not a safe profession to be in because of the quickly depreciating value of one's technical knowledge.

In most other good professions, like law, medicine, accounting, etc, the professional can be assured that he can keep on doing what he is doing and his skills will be valued until he is ready to retire. The computer programmer (or "software engineer" or whatever fancier name you want to give it) doesn't have this security.

The computer programmer making $100,000 today may be making $50,000 in ten years and be bitter about how his salary plummeted. The doctor or lawyer making $100,000 today will be making $120,000 in ten years.

"The computer programmer making $100,000 today may be making $50,000 in ten years and be bitter about how his salary plummeted."

If this is in fact reality, how do computer programmers have families? Do they live below their means while their salary is at it's peak, already predicting the fall in the future, or are most computer programmers young and they eventually change their path at a certain stage in life because of this instability or is this a new trend?

Medicine changes almost as quickly. Any decent programmer can keep up easily. Of course, I'm in my late 20s sp maybe I'm just wrong.

I've never heard of any old doctors who can no longer find work as doctors. Even when surgeons become too old to do surgery, they can still see patients and get paid almost as much money. There are doctors in their eighties who are still practicing.

But the U.S. is full of old programmers who are underemployed because the technology has left them behind.

As someone in your 20s, I see that you have a hard time imagining what it's like to be ten years older. I think that, ten years ago, I might have said exactly the same thing as you.

IT work encompasses a lot of people who are not programmers. I limited my posts to programmers not simply because I am one, but because I believe it's a unique field in IT.

Computer programming:IT::Surgery:Health Care

IT includes all sorts of untalented software installers, help desk people, talented but replaceable network administrators, etc. Programming is a skill that far fewer people have and which is not as replaceable, even with the Indian scare. Especially if you live in an area with a lot of government contractors who often require not only U.S. citizenship but sometimes security clearances.

What's the big deal about a shitty residency? I assume Mass General's better than Massapequa General for becoming an East Side plastic surgeon but even the lousy hospital jobs seem to pay okay from what I've heard...

If you have the bizarre impression that you'll only be "a success" and happy with a 3BR on Park Avenue, of course programming is not the field for you. If you're fascinated with computers and smart enough to realize that you don't need to live in Manhattan and make 300K a year to be happy or feel good about yourself, it's probably the best career around.

Of course, I'm in my late 20s sp maybe I'm just wrong.

Oh-ho-ho. That makes a big difference. I'd always assumed you were about a decade older than that. No offense, but one's needs change a lot between one's late 20s and late 30s.

I'm also under the impression that you are either married or not seriously looking, which also seems to substantially affect a man's perception of what he needs to be and have.

I don't know that HS has ever stated specifically that one needs $300k a year and a Park Avenue condo. His advice seems generally applicable to bright, educated people of some sophistication looking for a secure situation and a decent living standard.

Interesting essay. I've been in a similar position to HS, though it was fifteen years ago: graduated with a BS in computer science from a reasonable school (top 40 but not top 20) and got a job at a big defense contracting company.

I've made a bit of a career change since then, but not quite for the reasons that HS lays out, partly because of timing, and partly because of a difference in. . . I don't know, perspective? Job security is important, but doing what I'm actually interested in is quite a bit more important. Someone who can think of switching from computer science, or rather programming, to an area such as law or accounting or business strikes me as someone who may not have discovered what he or she really wants to do. Figuring that out should be the first step, rather than deciding on the most prestigious, highest-paying job one might dream of getting.

Lots of good points HS...For those not in the know about IT jobs, specifically in NYC, try this: Take the PATH from WTC to Exchange Place (doesn't matter if you hop on the Hoboken or Newark train) at 7:30pm on a weekday - If you've never done this, you might be shocked to see mostly Indian faces around you, hundreds of them - Most are IT professionals living in Jersey City and elsewhere - many transfer to local trains at Newark... Why 7:30? Because many programmers work longer and harder days than the other professionals - and - if you're not a consultant, there's no overtime or glamorous perks for you efforts.

I happen to work for a big financial company downtown and have been making the Jersey City to NYC commute for 6 years now - I am a 29 year old programmer and would like to quit my job, but don't how to start something totally new - I'm prepared to take a big pay cut, but doing what, I'm not sure...

The IT Indians are generally very nice, hard-working people, and loyal employees. Not all are programming wizards, but most are pretty good. Not all are strictly code monkeys, some are CTOs or something similar - And, yes, most are H-1Bs...I don't feel much like writing more on this at the moment b/c I have a headache, but I will say working in an office department with mostly foreigners is different than working in the same department with non-foreigners. The IT culture, for the 99% of programmers who don't work for Google, etc. has been getting worse and worse for non-foreigners. Who am I supposed to shoot the shit with at work? Can't have a conversation about anything other than the weather...There's no happy hour, ever. There's no badmouthing the boss like other jobs when all your coworkers are literally sponsored by the company. It's ridiculous. IT professionals, and specifically programmers, do a lot of the work that makes the world go around in the 21st century and get the least amount of respect for their efforts...Alright my head is killing me, I can write more coherently later..

For all my complaints, I'm doing a lot better after law school than I was before. My complaints regard certain types of jobs within law, not every aspect of law.

I can't think of anyone I know personally who seems like he or she could have made better money, long-term, doing something else that they realistically could have done considering their interests, resources, and abilities.

Computer programming is a job that’s heavily dependent on temporary knowledge capital. It’s temporary because the powers that be keep changing the languages and tools that programmers need to do their jobs.

The "powers that be", as you put it, are the programmers themselves. Who came up with Python, Ruby on Rails, Linux etc? Now obviously if you're just looking for a stable paycheck and have no interest in the technology itself, it's going to leave you behind, but that's the nature of any field with technical progress. For those who enjoy it, or are otherwise willing to keep up, the rapid change can give you an edge and even be fun.

As for the prestige: maybe things are different in New York, but in the Bay Area I haven't noticed any lack of prestige for computer science; quite the reverse.

Someone commented above:
"Design Pattern are the same regardless of language"

There is a contrary view that full-scale design patterns often are constructed to handle the limitations of certain sets of languages, so that using truly different languages changes or invalidates many of the 'customary' design patterns. Go see what some LISP snobs have to say on this topic, for example.

Second, a lot of what I've seen published on the subject of design patterns seems to have been written by overconfidently crappy designers.

Third, if you can't write sentences with subject-verb agreement and proper capitalization, you might be at extra risk of eventually being replaced in your job by someone who speaks clumsy foreigner-English.

>>Computer programming is a job that’s heavily
>>dependent on temporary knowledge capital.
>>It’s temporary because the powers that be
>>keep changing the languages and tools that
>>programmers need to do their jobs.
>
>The "powers that be", as you put it, are the
>programmers themselves. Who came up with
>Python, Ruby on Rails, Linux etc?

Programmers came up with neat tools like Python, Ruby on Rails, and Linux. Unfortunately, when I look at job ads and statistics, I find that the employers offering most of the U.S. jobs in programming are mandating less elegant tools like C#, ".NET", Java, etc. Same for my local metro area.

Since you imply that you're in the Bay area, maybe I should consider moving to the Bay Area if I like Python and Ruby on Rails better than Java. Based on actual statistics, can I expect someone who chose a programming career because (s)he likes programming and is decent at it, to be able to decently support a family in the Bay Area, if I want to have that option?

I think JewishA- you never really liked programming in its own right that much in the first place. You really want a secure job that rewards you with benefits outside the job functions- high status, protection, money etc...

Wow. HS nailed this one. He shoots, he scores, game over. I've been feeling miserable about IT for a few years now, to the point of severe personal depression over my (stupid) career choice. I couldn't have written a better essay myself.

Managers don't understand that a good programmer is good regardless of language. Who cares if you've developed high performance code in C++ for 15 years? If the job is .NET and you've got fewer years on your resume with that specific label than some idiot who can't write a loop, you're not getting the job.

Of course given the majority of jobs available in IT any more, that just may be a good thing. I have relatives who partied through high school, never stepped foot in a college, and wandered around their life for most of their twenties to end up in a trade such as home construction, or a no-degree job like home loans or real estate. Guess what? They earn circles around the highest paid, hardest working IT people I've known. The ones at desks have their own offices. The ones out in the weather earn circles around IT while taking 6-8 weeks off each year.

Another amazing thing: if they work overtime, they get paid for it. Try that in an IT job, even in California where it's against the law to not pay overtime, even to a salaried employee. (In IT you have to make six figures to be exempt from CA overtime law.)

In every IT job I've had this decade the IT department has been at the bottom of the totem pole. In every one the wages were stagnate while my relatives moved on up. In every one the pressure to work more hours and more weekends, without compensation, has grown. And not one has been secure. IT staff is the first to get chopped, replaced by foreigners, or outsourced.

I wish I had chosen ANYTHING other than IT. But of course I loved computers, loved writing code, even had some success selling my own shareware. Won awards in a few magazines even! My dreams were crafted in the 90's when IT was hot, and dashed in the following decade by an industry saturated with cheap foreign workers. I wanted to write great software and know that thousands of people benefitted from my work. Instead I bum around between contract jobs, trying to find a decent job among 80-hour week, me-too-website development positions for crummy wages.

One thing I will add to the essay: the need for software is declining against an increasing supply of workers. We're at the point where hobbyists and college students, working together over time, are able to produce better products for free than the big commercial houses sell for a profit. Postgres cleans house over MS SQL Server. Linux is still rough around the edges, but rapidly gaining ground on Windows. OpenOffice at this point is more productive than MS Office thanks to Microsoft's UI changes in 2007. Do you really need Photoshop when you have GIMPshop? How many databases, OSes, photo editors, and office suites does the world need? The commecial houses could keep people upgrading by reinventing the wheel and killing backwards compatibility. But that's not going to last much longer with the open source movement gaining ground. People are already looking at the "new" stuff from Microsoft and Adobe, and then looking at the free stuff, and thinking: why bother?

IT has become a low end, low paying, long hours, knuckle dragging, dead end "career". Stay far, far away from it.

Maybe things are different in the US than they are in the UK. My brother is an accountant in London and from what he says accountancy is much scarier than IT. Apparently, in the UK, only 10% of accountants are aged over 40. Maybe it's similar to Logans Run: When they get to 40 they get vapourized.

"My dreams were crafted in the 90's when IT was hot, and dashed in the following decade by an industry saturated with cheap foreign workers."

I think a lot of people go into IT thinking it will be a secure career only to find that it is not. I have heard countless people talk about how they thought IT would be a great career only to find that it is not after working in it for only a few years.

But I'm SURE that the guys who are 'rock stars' in their late twenties won't be rock stars when they are in their late fifties.

Not true at all. For example, Alan Kay, the guy who invented object-oriented programming back in the 1970s, is currently leading a small team to develop the next programming revolution, with $2 million/year in funding.

The Google engineers face the same problems of technologies becoming obsolete

The true rock stars, like Alan Kay, are the ones making technologies obsolete. To become a rock star, learn real computer science and apply imagination. Learning real compsci can be done without going to an expensive school; buy the books and apply effort.

Do these "rock star" programmers make more than the $160K starting salary at the top BIGLAW firms?

The guy in the cubicle next to me currently has a consulting project on the side making $180/hour. A guy he knows who does consulting full-time makes $300K/year and takes three months off every year. The really ambitious and smart programmers start their own companies, and many of them become multimillionaires. Stop thinking like an employee and whining about how The Man is keeping you down, and you can do very, very well.

dt says: IT has become a low end, low paying, long hours, knuckle dragging, dead end "career". Stay far, far away from it.

Even with all the "cheap" foreigners and all that, the numbers say otherwise. The average annual income over all occupations is $37,870, while for "Computer and Mathematical Occupations" it's $67,100. Hell, even though HS complains about programming, he makes $62.50/hour - doesn't sound "low end" to me.

the need for software is declining against an increasing supply of workers.

Traditional shrink-wrapped software might be declining, but the power of computers to do things is greater than ever before, and there will be demand for programmers as long as there are new ways to use computers - just look at Google, YouTube, etc.

Speaking as a "brown skinned cheap foreigner" let me just say...MUhahahahahaah
The fulfilment i get for the long hours and low pay is the knowledge is that in my small way i am getting back at at least one american who would otherwise be employed.
Payback is a bitch aint it?

"Speaking as a "brown skinned cheap foreigner" let me just say...MUhahahahahaah
The fulfilment i get for the long hours and low pay is the knowledge is that in my small way i am getting back at at least one american who would otherwise be employed.
Payback is a bitch aint it?"

As long as you guys stay away from non-tech fields, then there are no hard feelings. Hell, if I ran a tech company I would be tempted to hire H-1B workers because they are loyal (you can send them back) and they accept lower pay.

Yes, I agree with your views. I also agree with few comments posted here which has exactly opposite view of your thoughts. My suggestion is, if some one is doing programming only for good money then it sucks big time...if you enjoy it then no one can beat you, just keep going.

"I wanted to write great software and know that thousands of people benefitted from my work. Instead I bum around between contract jobs, trying to find a decent job among 80-hour week, me-too-website development positions for crummy wages."

Sounds like open-source at work! Why buy the cow when you can get the milk for free! HAH HAH Open source fanatics have been aiming at the likes of Microsoft for years, but where do they hit instead? Their own ability to earn money for their hard work, and then they look up in surprise when they've killed the golden calf with their own hands. HAH! I say.

In any case, if you can't program at 50 due to "obsolescense" you really never could in the first place - you were likely no more than a glorified script kiddy who could smack some code together. Not that there's nothing wrong with that, it's just you were being paid good money for something you weren't really all that good at in the first place.

Take for instance myself - I'm painting my house (inside). I'm doing faux finishes and all that. Some people have asked me to do it for them - I could likely even earn some cash for it. But am I a painter? Hell no! Could I be - maybe, if people wanted single color walls with occasional drops on theri moldings. There are lots of jobs for low-grade computer programmers due to the complexity at hand. Learning CS via a "How To" approach is only going to allow you to get your current job (and others like it) done.

What you are calling "rock star" programmers I consider average "professional" programmers. People who don't have the background or ability to set down in whatever environment and get going are really just hobbyists or technicians. Like the nurse practicioner who can proscribe medicine but surely isn't bringing home the bacon like their boss.

1) Programming will only get easier. In the end, there will be only concept: "Computer, make this program: blah blah". There will be a point when computers will be better programmers, rendering you obsolete.

2) I've noted non-programmers (marketeers, project managers, etc.) are often jalous of me, because programmers can actually create their own ideas. They can't. I think this is important. MS, Google, YouTube.. they weren't created by project managers or patent law experts.

My only question to HS is: What will you do if you are not accepted to NYU's LL.M. program? Do you have a back up school you have applied to? The reason I as is you seem pretty fed up with computer programming.

"... not a proper profession for upwardly mobile white Americans."..
Wait till you cut your skin and you'll see a red liquid flow out . Guess what, its the same colour of liquid that gives life to the "Brown" people as well.

Before you wrote this post, you as well as those that were unfortunate to be close enough to you knew you were stupid. Now, the whole world knows.

Do you think its air you're breathing now? That probably came out of a "Brown" guy's lungs! Say a litle prayer, brother.

Stupid? Naaah, he's just telling it like it is. He's white and he's talking about other people who are. Besides, it applies to brown people born in this country. Those brown people's kids can go to a good college here (in fact, many do) and have the same opportunities as anyone else born here.

I think if he'd said 'native-born' he would have avoided a lot of trouble.

Actually, COBOL programmers have VERY good job security. The zillions of lines of COBOL that run banks and other institutions around the world aren't going away and will continue to need maintenance for the foreseeable future,

what is career means for you ?, everybody have a reason for loving their jobs. The world work with statistic reason, with so many programmer and few of lawyer, of course the lawyer is hard to find = better payment than a programmer.

If you asking how to be a good programmer (yea yea..., with better payment), you should find your own market with good "deal".

and... you only a human !, you can be a doctor, lawyer, programmer, even a KING !, but human will going to be "DEAD". Your career is not your point, I guess if you things pointing your career as a "point of living", you will never get anything except "thirst for more".

i completely disagree with your ideas concerning programming and "temporary knowledge capital." your implication here is that all a good programmer is is a person who is knowledgeable in the language (or technology) in which he works. familiarity with a particular language is only a small part of being a good programmer. knowledge of common abstractions, understanding of problem-solving techniques, well-developed skills such as planning and debugging--all of these things fit into the category of non-temporary knowledge capital. if all one needs to do to become a good programmer is read and memorize manuals for various technologies in use today, why don't university cs programs replace discrete math, architecture, and software engineering with c++, java, and visual basic?

You seem to have missed the point of a career in computer programming.

It is to create something from nothing.

To build something useful for others.

To improve communication somehow.

To improve the world!!

A true computer programmer isn't worried about prestige, or overly concerned about money if they can pay the bills and have a little extra.

A true computer programmer LOVES to keep up with technology. It is not a chore. It is a labor of love.

A true computer programmer typically isn't interested in project management or any other management. They are interested in the act of creating beautiful software, much like a master woodworker creates a piece of fine furniture.

Admittedly, the corporate environment sometimes stifles this ideal and makes it less than ideal. But, isn't that true of almost any job?

1) You make very large statements, but you don't provide any references or evidence to support your theories. Please provide evidence, otherwise your thoughts are just that...thoughts. Many of your thoughts are unjustified and exaggerated.

2) Every career has advantages and disadvantages. Your assessment of other opportunities out there is clearly misguided. You should probably speak with your college counselor (assuming you're still in school) and ask for advice.

3) Cheer up! It's best to "work to live", and not the other way around. If you define your life and existence based on your career, then you're leaving your happiness in the hands of an execute of a large corporation...and corporations do not always look out for your best interest. Take your life into your own hands and make yourself happy!

The root cause of this state of affairs is that the low hanging fruit in software development & IT has been picked, harvested, and/or has rotted on the vine. The interesting problems that are relevant to 80% of the population are mostly solved. It's now just a matter of maintenance and bug fixing, and those functions are more cost-effective with offshoring. Web 2.0 is a fine example of this; what's the *fundamental* difference between, say MySpace and AOL or GeoCities of yesteryear? Or Reddit vs. USENET? Most interesting problems today are too niche for most people to really care about. Microprocessors, networking, user interfaces, and reasonably good programming environments have all been developed; there simply is not a need or demand for much more. People get into language wars, but that's a waste of time because, practically, Java == C# == Python == RoR == ... HS is spot-on with his essay but misses the bigger picture: the software development & IT field peaked it's growth curve a few years ago (maybe we should talk about "peak IT" much like people are discussing peak oil). The fact is that the US needs fewer computer scientists than it did a decade or two ago. It's much like aerospace engineering in the 1980's.

I'd like to praise the last commenter's more positive perspective on programming as 'craft'. Many of the gripes of the post are issues of large-scale corporate culture. Admittedly, a high percentage of programmers work in largish bureaucracies, where org-charts, pecking orders, and gross rivalries fester. But I think the response to this is to question the organization structure not the craft. Half Sigma's is a classic throwing the baby out with the bathwater argument. Perhaps the answer is to think small, think entrepreneurial, or gasp, organize!

There are so many conceptual and factual errors in this article that I honestly don't know where to start...

I won't go into the factual errors since I simply don't have the time to elaborate on those that were mentioned, but I do want to say something regarding the misleading concept brought up throughout this article:

Any field you select as your carreer is just an opportunity - a starting place from which to launch your potential. If you understand the deeper issues involved, then you realize that the technichalites are just these - technichalites, and they will never stop your growth. For instance, when I interview someone, apart from personality it is this type of motivation and philosophy that I carefully look for. I couldn't care less how up to date the person is on some new esoteric .NET feature (Incidentally I also don't care how good they are at solving idiotic riddles, proffesional or other - but that's a different issue) and as yet I've never made a mistake in recruiting someone - and I've recruited quite a few people in the past 15 years.

A person with the above perception will never settle for being a technician. They will usually rise to the top of whatever corporate they join or form a company of their own.

Obviously you have not been programming for a career for very long. Langauges may come and go but "experience" is what matters a lot more in many respects. It may take a while for the old dog to learn the new (programming language) trick, but if they are skilled coders in a specific field or two (i.e. acoustics, financial sector, molecular biology) they have a big leg up even while being a noob in Ruby than a seasoned Ruby whiz who knows noting about coding some technology specific system.

I am sure during your VB work you had your challenges in coding, and worked out some unique solutions as well as are aware of some not so apparent pitfals in the subjects you were coding for. This is expereince. It sticks with you and regaqrdless of the language it is a tool in your mental toolbox that gives you the edge.

Programming is just like every other job you have programming jobs that more resemble McDonalds fry cook and then others that more resemble building the Chunnel. It all depends on where you want to take your carrer, I myself like those long term projects, pay can not be as great and as fast as some of those McDonalds jobs but the prestiege is there in the code.

If you don't learn anything from what you are doing on a daily basis, then, yes, "computer programming" will suck.

The advantage a 60-year-old programmer might have over a younger one is that he may have learned a thing or two from some of the software engineers that are feeding him tasks. He might, for example, understand how one algorithm is less efficient than another. The same principle applies to outsourcing. You can outsource all you want, but the code that most of the outsourced people produce is inefficient.

To use your example: You can be a lawyer and never read the legislated changes in law, and your career will be short-lived. Programmers just have to keep up with technology; if they don't, they aren't looking at a very fulfilling career.

Skills in some computing areas don't degrade much: C, unix, design, scripting, tcp/ip, SQL, compiler construction, use of a traditional text editor, scheme. Reading this, I now realise that this actually seems to be the guiding factor separating things I like working with from those that I don't.

I must reiterate another poster in response to the highly temporary nature of industry knowledge. The simple fact is that it really isn't as true as one might think.

Yes, if you're an ASP.NET programmer, most knowledge is highly temporary. You don't use a lot of CS in that field, and you've made the conscious decision to specialize in a single vendor's proprietary stack.

However, I work for a company that manufactures high-performance switching hardware and software. We host a full range of developers, from web to embedded. The knowledge required to work here is immense and timeless... classic CS all the way. The average age of our staff is 30's through 50's, because no one in their 20's has the requisite knowledge to survive here.

You CAN make a VERY nice living as a programmer, but you have to be in demand. You have to go above and beyond the mass of IT programmers out there. That stuff is viewed as cheap labor because it is, and I'm inclined to think they're already over-paid. Somebody has to clean the grain silos, empty the sewage tanks, stamp out fenders, and code the corporate finance apps, but it doesn't have to be you.

If you take the time to actually learn and master your craft, you'll be rewarded for it. But if the most you can muster is a quick read through an occasional ASP.NET book, then deal with the consequences.

I think that's ridiculous. If a programmer is really a "rock star", they'll do a lot better into middle age than a lawyer would. Did Billy Joy run out of steam after making VI decades before I was born? No, he didn't. He went on to make most of BSD Unix, co-found Sun in the 80's, and then he continued to be a technical force in the 90's as a primary designer of the Java language. Now he's wealthier than most people who own legal firms. Come to think of it, most of the world's very richest people are technology related entrepreneurs.

" Did Billy Joy run out of steam after making VI decades before I was born? No, he didn't. He went on to make most of BSD Unix, co-found Sun in the 80's, and then he continued to be a technical force in the 90's as a primary designer of the Java language."

Bill Joy (or any other Sun founder) probably isn't a good example for you to use to make your point. Bill Joy no longer works for Sun and played more of an evangelism role during Java's ascent. While he did play a key role on language design early on, he pushed Jini hard, which didn't really go anywhere. He currently is a VC and is building an eco-yacht. While Bill Joy is wealthy, I've read that his wealth is a lot less than people would expect. I would argue that vi and BSD Unix were bigger contributions from Mr. Joy than his involvement in Java.

Don't pick Mr. Khosla, either, because his focus is not in software or computer science anymore, either.

I've worked as an ER nurse for the last 15 years,and I can't wait to finish my degree in Software Engineering. You think your job sucks you should try mine on for change.

Try working 12 hour nights without while barely getting a break to go piss. Try getting stuck with a needle by someone who is Hep. C. positive, and wondering if you are going to die looking like a swollen yellow gourd because some drug-addict you're trying to help has a fatal disease.

Try working nights, struggling to sleep during the day, work every other weekend, and every other holiday. For years.

Try having neck and back problems for the rest of your life, because you are always the "strong male nurse" who can lift the 500lb person in bed. Try getting a knee injury while tackling a drunk befor he assaulted one of your co-workers.

Try working with MD's who went in to the business because it was "good paying and prestegious" only to find out they hate it, and are absolutely miserable to work with. I've had Surgeons yell at me. I know nurses who have had bloody surgical instruments thrown at them by your "happy, well paid surgeons". Medicine and nursing change nearly as much as the technology world, and a lot of people don't bother keep up. But, they still have jobs, and you know what? They kill people. I've seen it happen.

Try going to work and dealing with dying babies.

Try working for 15 years and have absolutely *zero* reward for being good at your job. It doesn't matter if you're a tool who never reads a thing, in nursing, you get paid based on years of experience. MD's are even worse. They get paid by diagnosis. It doesn't matter if you graduated from Harvard at the top of your Med School, and went to Yale's residency. A doctor is a doctor no matter where they graduated from. Doctors get paid what the insurance companies pay them. MD's salaries adjusted for inflation haven't increaseed at all in 20 years. I know a lot of MD's who are really unhappy with their profession, but they went to school for 12-15 years, and they can't afford to quit becaues of their Med-school debt.

I never had a dying passion to be a nurse, and I'm burnt out and bitter, but you know what? This is America. I'm changing careers.

I can't wait for the day when I never have to look at another person's poop. Some day, I will be able to I sit in my cube all day long and geek out about the next big technolgy and get paid for it. Or, better yet, I can start my own business and get paid what I"m worth.

This is true for Security Engineers too. What you learned 3 years back when pentesting/auditing Windows NT or CGI applications may not be true today. However, experience definitely prepares you for the unexpected. With experience a security engineer learns the weak points in multiple types of application. For example, when I see at a financial web application I know where to start hitting.

I would say same is the case with programming. Each programming language that you learn teaches something unique and as you learn more and more, you realize that there are more than one ways to do it ; which helps in making decisions.

For example, if my goal is code "FOO" then first thing that comes to my mind is - which language should i used to code it. Experienced coder already knows the available libraries, modules which comes with different languages and that would certainly help in getting the job faster. I have coded some things faster in shell, than what my newbie peers would code in C++, Perl or Python. Its all about experience....

>> Low prestige

It depends upon where you work. ( Apart from some places which suck in general .. ) Most places have high respect for people who throughly know their stuff. If you are the Go-To guy for any programming problem, then you will earn that respect and hold high prestige throughout the office.

Most programmers have slightly higher ego than people in other department. Best programmers, that I have met also lack in social skills. Try working on that and you will win many friends and automatically your prestige will go up :)

>> The foreignization of computer programming

If you are good in what you do, then there is work for you. Smart people should try to outshine others rather than complain.

>> The working conditions suck

In my previous company, even the CEO sat in a cubicle. Most programmers wouldn't complain if they get cool headphones, free soda and great dual monitor set :). Cubicle or not might be the last thing on their agenda. Moreover, programmers like to talk to each other and discuss problems; it wouldn't be efficient if all of them are in separate rooms.

>> So what's a good profession?

Its not wise to judge goodness of a profession by how much money you would make or whether you will have your own cubicle.

If you are doing what you love the most, you would take any pain to be the best in your field and still be happy... and thats what matter in the end.

"I’d make the case that it’s better to hire the 27-year-old because he is still at the stage of his career where he enjoys the stuff and is therefore more motivated to learn and work harder, while the 60-year-old is surely bitter about the fact that he’s getting paid less than the younger programmers." -- Well, I'm 55 and learning Apache Beehive and still at the stage where I'm enjoying this stuff. I wouldn't be so fast to write off the 60 year old.

What this article should be named is "Why a career in IT sucks." Computer programming existed before the general term IT came around.

It's the fact that IT departments are ultimately ruled by people who view IT as a place where money goes to and does not come from. It's these same people who also take the longest to adjust to new technology. This is mostly because they don't know technology well enough to make good decisions (which requires a continuous investment of time and learning), yet that's what they are in charge of doing.

Most IT departments are filled with (for the most part) old, overly-expensive technology and underskilled workers. Most managers would rather just write a check and buy the latest version of a broken system than truly find a better and cheaper way of fixing these broken systems.

That's usually because fixing these systems would require good programmers, the kind of programmer that these places have the hardest time trying to attract and retain.

Don't worry too much about your job being taken by foreign (read Indian) programmers. The people who make the outsourcing decision are those same people who don't really know the value and full potential of the technology they manage. They are only looking at the bottom line and they think they are cutting costs. A lot of those people will find out later that they are wrong, millions of dollars later.

If you want to be a computer programmer and make money comparable (or better) than "prestigious" lawyers, and you want to avoid the deplorable cube farms and working conditions, your best bet is to start your own company. That's where computer programming (and not IT, they are 2 different things) does not suck.

Couple things you could add in that would make this article fit for publishing as a magazine or journal article:

-In the section about Foreignization there should be some data to backup what you are saying such as get a census report from Japan or Korea showing how many Americans are actually hired to work in those countries (and being U.S. military does not count as working for those countries as the U.S. military is really working for the U.S. government first and foremost).
-I would like to see some data on the average age of a computer programmer and the salary that this person makes.
-Some data tracking profession changes of people with computer programming job expierence for ten or more years would be nice.
-Possibly look at how programming relates salary wise to other IT fields such as networking, security, database admin, or even helpdesk.

Foreignization? The word for it is Globalization (Read "The World is Flat" by Thomas Friedman). If you did your homework, you'd know that the reason there are so many immigrants shipped _into the US_ for IT jobs is because there is such demand for this profession that the US couldn't possibly fill the need domestically. Sure, some companies will fulfill this need internationally (as they will with Accounting, Law, and other professions) but the bottom line is - if you have talent, you will do fine no matter your age or profession.

Call it Economic Darwinism - and I suppose it does suck to be on the bad end of evolution.

Forewarned: I'm 24, an American, and about to *start* a masters degree program in computer science this fall (at an ivy school).

The arguments against IT careers DO seem pretty strong. I see just two counterpoints to the essay.

1.) By saying you should go to a top law/business/accounting school, you're essentially saying "be the best at what you do." OK, not amazingly new. I'd imagine middle-of-the-road programmer likely sucks as much as middle-of-the-road lawyer. Sure, the suburban wills/contract attorney still makes a good living, but likely as good as the programmer. And I don't know about you, but I don't have much regard for an ambulance-chasing lawyer. Be in the top 1% of ANY field and you'll do well, which is really what we're talking about with all this "go to a top {insert field} grad school" stuff.

2.) Now that we understand we're really only talking about the *top* people, then it's only fair to make comparisons within *top* companies between fields. For the programmer, companies whose business *is software*. There's no sense comparing a TOP accountant to an average programmer-- the playing field is unfair from the start. So where the field is level, experienced programmers have the same seniority, pay, respect, and age you'd expect as other fields. You think that Google/Yahoo/Microsoft *isn't* filled with experienced, older professionals? True is their demographics are *not* the same as your average IT department. Maybe MS is hiring lots of H1-B's, but they're from a variety of experience levels. And at that point, we're simply back to plain competition within the field, same as any specific career.

If you're not in the top 1%, yes, it's hard!

(Just for clarity, I myself am *not* part of this top 1% by any means. I merely believe it exists and that there's a payoff from getting there, same for everything else.)

I have a hard time taking your post seriously when your 'programming' experience consists of VB 3.0-6.0. I would agree that your career has sucked. Write again when you've done some actual programming.

I agree that jobs in IT suck but I think a better solution is starting your own business. The web has lowered the barrier of entry for starting a new web application so much that you can do it in your spare time. If you can make something that users will want you can create your own revenue stream and you will no longer be dependant on the IT industry to make you relevant. Controlling your own fate is always a better option, even for a Doctor or a Lawyer.

I find your statement about Ivy League schools to be inaccurate. I've studied at two. Both have excellent computer science departments that attract as significant a portion of the student body as any other school.

On the other hand. You're right that their students aren't jumping into careers hammering out websites. Many, however, do find high-paying careers in software development. Last time I checked, this still counted as computer science. I don't particularly like building websites either!

Compared to my previous short-lived career as a wildlife biologist, working as a computer programmer is fantastic. My salary instantly doubled (and has since quintupled), and I no longer have to scramble from one temporary 6-month job to the next. Ironically, whenever I interviewed for a programming position I was nearly always told how they were impressed with my Master's degree in biology from Yale. No one seemed to give a damn when I was looking for wildlife jobs.