Tuesday, December 14, 2010

Is Computer Programming & Software Engineering Really Such a Hot Career?

Listen to the government, media, and educators, and you'd think software engineering and programming are among the smartest career choices. Alas, for most people, not so.

Of course, one big reason is that, like all jobs where the work product can be sent over the internet, ever more programming jobs will be offshored. There's no way that companies that hope to survive against their competition can pay $60,000-$100,000 a year plus benefits plus the costs of ADA, FMLA, Workers Comp, Social Security, and all those employment lawsuits that Americans are so fond of filing, when programmers in Asia can be hired for 60-80% less, net. And that's before ObamaCare is implemented!

There are additional reasons why software engineering/programming is overrated. Most of these reasons are provided by software engineer Alex Uveski but they comport with other programmers'/software engineers' reporting:

1. Unlike in most fields, after about five years your pay tops out. After that, your salary growth is dead: 20-year C++ programmers get paid the same as a five-year C++ programmer. Yes, a small percentage become managers or software architects, but most don't: For every architect, there are many programmers. And if you're a manager, you're puzzle-solving less and bossing more.

2. Programming languages are ever getting upgraded, so you spend your nights and weekends teaching yourself Version Next.0--there's no paid training. Otherwise, you are competing against the next horde graduating from college, who are newly trained, eager, and willing to work cheap.

3. The high-tech corporations lobby the federal government to keep a large pool of H1-B (imported) workers in the U.S. Yes, there's a shortage--a shortage of excellent U.S. programmers willing to work 12 hours a day for $50-70,000.

4. The Department of Labor uses misleading statistics to assert that U.S. jobs in software engineering/programming are growing. Their mistake: they lump together programmer jobs with more senior positions: that's like lumping together a BMW designer with a JiffyLube oil changer.

5. Programming is among the most sedentary jobs. You must sit all day, staring at a computer screen and typing (watch out for repetitive strain injury,) usually more than eight hours a day. Not healthy.


David Bundesen said...

You are right on the money Marty. I have a friend that went to college "back in the day" was an excellent programmer, but alas, no one wants a 50 year old programmer, much less a 40 year old one. The work dried up, there was no upward track and he is now doing wood turning.

ST said...

Hmmm. Well, I'm a few over 50 and have been in the programming field in some capacity or another for about 27 years. Then, I suppose since I've always been in it and it's not a new career for me, that helps. I'm also sort of pseudo-I.T., so I'm not a 8+ hour a day coder. Even, so, I've never had a job where I'm coding non stop and getting carpal tunnel or anything. Maybe it's the nature of the companies or jobs I've been in (plus, software engineering is but a niche in the information technology world, there are many more areas a programmer can go into). I've never seen where there are just "coders". Usually, you're some sort of programmer/analyst, and as you get more experience, you do more analysis and design.

To be a programmer, you have to be pretty good at it. Sure, they'll pump out degrees in it and a lot of C & B students, but it's the A and maybe some B's who'll get the jobs ... and enjoy them. You have to have a certain mindset to do this work. Many don't, even ones in the field. It's tedious and detail oriented. The computer doesn't make mistakes, humans do, so every time you think the computer is doing something wrong, it's almost always you. So, it's a very exacting profession.

ST said...

As far as retraining, yes, to remain at the cutting edge, you have to keep up on the latest technologies and languages. But, it is very surprising how s-l-o-w companies move, and in many cases I've been in, you are using really old stuff (and these are big companies, too).

Another point about programming. Ever since I've started in 1983, they've been saying that programming is going away and being replaced by things that "program themselves". Well, it's come a long way, yet there's still quite a demand for programmers, and at least people who can think in very logical and systematic ways.

Don't forget, too, the markets overseas are going up, and their standard of living will increase. Pretty soon, the "cheap" programmers over in India won't be so cheap anymore.

Yes, the pay may top out a little somewhat like an engineer, but usually you are paid pretty well. Most of the time, your title is (at least) a little higher sounding than "coder" and even without reports, you'll get promoted a couple times within the individual contributor path. How many people make it up the ranks anyhow in any profession?

So, it's correct in saying, "for most people, not so."

Anonymous said...

Some more reasons to think twice about software engineering/programming:

6. Software engineering/programming is also, believe it or not, incredibly boring. You have to pore over lines of code to debug, write the same scripts over and over again, and often write the same old software over again...I mean, how many database query engines are run every day?

7. Technological advances are cutting programmers out of the middle. For example, 10 years ago or so, you needed to be versed in HTML to create a decent Web site. Not so much today. Cloud computing is another such advance.

8. Software engineering/programming is among the most socially isolating jobs. Like chefs, you often work into the wee hours when others are enjoying themselves and often end up hanging out with the same programming staff. Also, when you tell people you're a software engineer/programmer, people automatically think you're a nerd.

9. Corollary to #8, a significant number of people in software engineering/programming are below average in social skills. This may be because the job is so socially isolating that the socially challenged are drawn to it, because no one seems to care about your social skills if you are a great programmer, or because many programmers who hire other programmers don't see a lack of social skills. The programmers who become project leads, architects, department heads, etc. do so because their social skills are better, on average, than other programmers. What this means is that if you choose a career in this field, you may not be exposed to good role models for social skills.

10. Most of the growth in software engineer/programmer jobs in the US is with the Federal government or federal contractors. These pay well and aren't likely to be offshored, but competition for these jobs is intense (so graduates of top-tier schools like MIT, Stanford, and Carnegie Mellon get these first), most are located in the DC area and isolated areas around military bases (Fort Lonesome, Montana, anyone?) and require intense security clearances and lifestyle restrictions (If you REALLY misspent your youth, it may come back to haunt you!) to be eligible.

Just my 2 cents...anyone have any thoughts?

Marty Nemko said...

Dear Anonymous,

My two cents? You've made an excellent contribution here. Thank you.


Rosh said...

This is another very intriguing post. Having wanted (and learned) to program since I was 9 years old I've always had a passion for writing programs.

Some things to think about:
Not all jobs are for government. There are many startup-esque companies where having the background in computer science can boost your chances for being successful.
Another point: Programming itself can be outsourced, but the design and ideas can be much too difficult to outsource. I was looking into which jobs were projected to grow vs. shrink, and computer programming was a market that was projected to shrink. However, software engineering and design are supposedly going to boom because it can't be outsourced.

(Anonymous 8) Social skills. I would argue that it has no more detrimental effect than a marketing representative. Just like engineers and programmers, they have to confer amongst themselves to get a project done, some parts in tandem with each other, some parts alone. At the end of the project it must be pitched, and that requires great public speaking and social skills.

(Anonymous 6) Responding to a comment saying that the job is boring: To you it's boring. To me it's an interesting challenge to apply theoretical programming knowledge to achieve a very real goal. Painting could be portrayed in a similar way: they stare tirelessly for 8+ hours and do a mechanical painting process, maybe even get RSI. However to them it is an interesting challenge to paint.

(Anonymous 7) What you are forgetting is that there still has to be someone who knows how it all works. Think about it this way: I'm a horrible artist. Nothing I do looks good. Sure I can use stencils, but if I want to ever create something truly different, and unique, I have to be able to draw freehand. That is where the job market is.

Just to clarify, I have little actual job experience. These are just thoughts that I have come up with when I have coded for fun, or for the little I have worked for.

Marty Nemko said...

Rosh, the problem is--as I mentioned earlier--for every project manager, there usually are many programmers, many of whom are vying for those offshore-resistant, better-paying, less-staring-at-a-screen manager jobs.

Anonymous said...

Interesting post and discussion.

A year or so ago, I read in an online discussion forum on the Science magazine site that according to various studies, STEM (science, technology, engineering, and math) graduates outnumber annual openings in these fields 3:1. I noticed also that the number of engineering job openings each year is quite small, in the 2008 book '150 Best Recession-Proof Jobs'.

Jobs in fields such as accounting/auditing, teaching, and healthcare seem much more numerous. However, in his book 'The World Is Flat', Thomas Friedman described accounting as a field that would be outsourced overseas to a large extent; he seemed to be saying that few people should ever choose to enter this field. I asked some accounting professors about this, but they didn't think outsourcing could happen to a large extent in the accounting field because of privacy and data security concerns. (I know that tax accounting is already being done overseas quite a bit, but at least auditing requires physical presence and would be less subject to outsourcing.)

So, what would you advise for technically inclined people who seem to be finding ever-fewer technical jobs available? Is government or government contractor employment the only answer, at least these days? You seem to have indicated this in previous articles you posted. However, such work is usually more generalist in nature (contract oversight functions, for example) and not necessarily that challenging in a technical sense. Or does that not necessarily matter, in the long run?

Marty Nemko said...

I believe that tech people need dual skills:e.g., programming and communication/leadership skills, software architecture and physics. Alas, the global marketplace is ever ratcheting up the bar for American employees, which are wildly expensive compared with Asian workers--and many would say less compliant.

Serge said...

I used to aspire to become a software engineer or accountant. Being introvert though, I rarely meet people anyway, so if not for my $13/hr customer service job, I would've become a total social recluse. I live near Microsoft and can see how tired, overworked and unhappy most Microsoft employees (my customers) are. Microsoft demands that their regular employees move up or out, and one of my reclusive relative who worked for Microsoft many years had to become a manager- though he lacks any social tact !

Anonymous said...

Marty and Anon1 are spot on down to the last detail, in my experience. Adding to #7 - applications that used to require programmers at every location can now be purchased from a box or large consulting firm. Systems are getting more efficient and business specific requiring less customization.

I would not recommend the field to anyone and I'm always amazed when media continues to hype it.

ST said...

Interesting opinions here.

I guess I have to go back and go with what Rosh said. He shows an interest and desire for the field, and once you have that, you really don't care that you're making huge money, although in my experience the pay isn't anything to sniff at.

Also, all programmers don't work at Microsoft. There are much more "normal" places to work with regular working hours. Nor do they all work in sweat shops where there are 100 programmers to 1 manager. I'm sure there are places like that, but in all the interviews I've had and places I've actually worked (5 fairly medium to large companies), it is a salaried job, usually on a team of about 5 people, including a team lead or manager. You start out as a programmer or programmer/analyst and there's usually one or two levels above that before team lead or manager, as you gain experience and can handle more complexity.

Also, it wouldn't have been that hard to move up the ranks, IF you wanted to. Once you do, you have the headaches of dealing with people problems, reviews, performance issues, etc., and you get away from what you like doing, which is programming and/or design. For me, I've always stayed under the radar. I still like the work I'm doing (problem/puzzle solving, coding, and systematic logic), yet I'm a senior person with the experience to be a mentor and go-to guy, without having to deal with direct reports.

The other path, which would be a very senior "architect" type person, I agree is rare, and those people usually are paid very, very well, yet have no direct reports.

I guess going back to the point of the post, yes, maybe it is hyped in the media. Not sure why, technology and programming has always been hyped in the media since I've been in college, when I started paying attention (late 1970's).

With any career, you have to determine if you have the aptitude for it and if you do, and you try it out and you think you'll be pretty good, and you really get into it, then I say to heck with fears of outsourcing and any other deterrent to entering the field, because if it's what you want, you'll get in somehow, you'll find a niche. This could be said for almost any career, though.

Anonymous said...

All five points are absolutely spot on! A former "software engineer."

jack said...

Let me disagree with your assessment wholeheartedly. The computer age has only just begun and you think there is no need for "coders". The programmer will be on the front lines for a long time to come - at least 30 years (then the singularity will probably have occurred and all bets are off on any of existing after that ;). The question is, whom will be left after human abilities are automated. Computers have automated the workplace as well as robotics, office automation, accounting, finance, knowledge worker tasks, computer based training. The list goes on. My only wish is for the educational system to realize this and get kids involved. It's lonely at the top.

Marty Nemko said...

Jack, a problem is that the front lines will not be in the U.S.

Jack said...

Frontlines won't be in the US, I agree. They also won't be within the borders of any lines on a map.

Anonymous said...

Long time follower of your blog.

It's true. Software Engineering, like all jobs, has its downsides. The upsides? There are many. But purely in financial terms, it is one of the few careers where someone lacking social skills, a college degree, creativity, or any entrepreneurial drive can still make a decent living. That’s how strong the demand is for even remedial-level programmers.

As for developers who have a strong technical background, *adequate* social skills, and a sense of creativity, the sky is the limit.

Outside a half-dozen cities in the US, it is hard to find the requisite talent for an innovative software company. Move from Seattle to Austin and you will notice a drop-off in overall talent. Now, move from Austin to Louisville and it drops precipitously. Once you’re considering Bangalore, it’s pretty far down the food chain in terms of technical aptitude and creativity—particularly, creativity.

In few of your posts, you make predictions for the upcoming decade. It’s odd that you don’t mention things like machine learning and artificial intelligence. IMHO, the writing on the wall by now: for most white-collar jobs, computers will be the biggest source of job competition in the coming decades. The jobs that aren’t eliminated altogether (like realtors, financial traders, clerical staff, etc.) will ultimately have their wages depressed (like lawyers, doctors, bankers, etc.).

For people who understand computers and have a modicum of creativity and drive, the job opportunities will continue to expand. I will admit I enjoy programming for the sake of it and find it fascinating. But I would be lying if I said there weren’t a shred of self-interest here. At the end of the day, I would rather be designing or coding a computer than having to compete against one. Computers get exponentially better at a task every year. People don’t.

Anonymous said...

Jack - it will be lonely at the top (already is) because fewer people need to be there. We used to code each line to do something. Now we reuse objects to perform complete functions. Many reusable functions can be tapped. Just not as many needed to add to/modify this repository.

There will always be people doing that but understandably, companies are looking for lowest price and that's overseas or bring it over here. India alone has top notch schools (I understand) with many low cost workers.

Sure, eventually everyone will stop studying/specializing in this and prices for overseas workers will go up (life cycle of such nations) and maybe it will be turned on its head but I would put forward that it will be MANY years from now...in the meantime, huge glut worldwide, ton of schooling wasted (and large Computer Sci programs still looking to suck students in).

I would tell a student: don't do it unless you 1) don't ever expect to have a family 2) have unlimited resources for additional education 3) willing to only work 5 years (you'd be surprised how fast you "age" per trendy applications and after retraining they still look at your old application experience and won't consider you) 4) love it and like to work all night when required for those 5 years (nope, I'm not exaggerating - talk to a real worker about how deadlines bring a battlefield experience). 5) have a strong self esteem to face co-workers and leaders who can read the writing on the wall for themselves and will do ANYTHING (yep, you read that right; everything from sexual to mildly criminal) to keep the job beyond the five years. I've been shocked at times.

Thanks Marty, for saying it like it is. No one wants to hear it.

Marty Nemko said...

Great comments, all. My takeaway from it all: If you love programming, are very talented at it, and don't care much about work-life balance, okay. For others, think 3x.