Tuesday, April 22, 2008

Why a Career in Computer Programming Doesn’t Suck (A Response)

This is a good article I came a cross in the internet. One my colleages gave the link
thought of posting to the blog

This is a response to the author of Half Sigma, who wrote a post about why a career in computer programming sucks. This topic could be considered slightly off-topic for this blog, but I’m a programmer, so I feel it’s career-related enough that it falls slightly into the realm of this blog. Besides, I want to respond.

Sigma (as I’ll refer to you throughout this post), you are way off. I’m afraid that your arguments are weak and poorly formed. You’ve made erroneous and biased assertions and based your arguments on those false premises. You clearly don’t like being a programmer, but your personal dislike for the job (or the field) doesn’t make it bad. It just makes it a bad fit for you.

I’m going to address your arguments point-by-point, so readers can more easily refer back to your post for context.

  • Temporary nature of knowledge capital

    You argued that because so much of the everyday knowledge in programming is transitory, there’s basically no benefit to hiring an experienced programmer over an unexperienced one (or a programmer with relatively little experience). It’s true that Cobol is effectively dead, and “Significant Cobol Experience” isn’t exactly the best way to headline a resume these days. It’s not true, however, that experience is worthless. The transient parts of programming change: the languages, the tools. But much of programming does not change. Good software engineering practices and concerns have not changed: Encapsulation, clarity, patterns, security, stability. These are all as important today as when they were first conceived.

    The fundamentals do not change. A linked list is still a linked list. Binary searches and hash maps are still faster than linear searches on large data sets. If an experienced programmer can write the code for a linked list, or understand when a linear search is bad (or — gasp — when it’s good), then he’s definitely got something to offer beyond the average recent graduate (who sadly, doesn’t understand pointers or Big-O notation).

    There’s even a great deal of technology retention from the “transient” aspects of programming. I still use Make at work, and it’s been around in various forms since 1977. Some of the languages haven’t changed, either. C is still C. I’ve got the K&R book, and it’s still a good reference. Even newfangled languages like C# inherited a great deal from C. Certainly, there have been massive changes, but variables still have to be declared, and a for loop still looks like a for loop.

    New languages and tools don’t have to leave experienced programmers behind. When Canola oil became popular, all the experienced chefs weren’t suddenly replaced by recent culinary school graduates. Scrambling an egg is about more than just what fat is used. Likewise, CAD didn’t put all the draftsmen and architects out of work. And Java hasn’t put all the C programmers out of work, either. There’s fundamental knowledge in any field that isn’t tied to a particular technology, and experience builds on this fundamental knowledge. If all your knowledge is all tied to a particular programming language, or a particular API, that’s a huge problem, but not because Q# is newer than Y++.

  • Low prestige

    Sigma, I don’t know if you expected prestige when you signed up for your computer science degree, but if you did, it’s your fault. Engineering and science disciplines simply do not have the prestige that law and medicine do. This isn’t a problem with computer science any more than it’s a problem with physics. It’s just a fact. If prestige is what you’re after, the sciences are not for you.

    You claim that Ivy League students aren’t majoring in programming. Well, I disagree. You say that what MIT teaches isn’t really programming. Well, I don’t know anyone but you who thinks MIT isn’t churning out real programmers. Yes, MIT is actually teaching the fundamentals of computer science, but I’m unclear how that’s a problem. Even “low-level” work in ASP.NET is benefited by a proper education. If someone can’t understand recursion, then quite frankly, I don’t want them building my e-commerce site, because they’re unlikely to be able to understand basic security, either. (I’m not sure exactly when ASP.NET became considered “low-level”, either.)

    The fact that schools like Devry and the University of Phoenix churn out “programming” degrees doesn’t indicate that programming is low prestige. All it indicates is that programmers are in demand, and the regulations are lax. If Devry could churn out MDs, you better believe that they would.

    Programmers aren’t lacking in prestige. They get the same prestige that anyone else in the sciences does. Civil engineers aren’t treated like lawyers. They get the same basic respect that programmers get. If you don’t think you’re respected at work, then leave. If you think you should be treated better, then find a better job. If you are worth more, then someone will give you more.

  • The foreignization of computer programming

    Quite frankly, your blurb about foreignization says more about your own prejudices and fears than it does about any real problem with the industry.

    First off, outsourcing is not a real problem. People have been saying that outsourcing would put everyone out of work since I started college. It still hasn’t happened. Yes, some companies have outsourced IT workers. Those workers found new jobs. (And many of those jobs came back, too.) There are still more jobs to fill than there are programmers to fill them. This is especially the case with good programmers. Bad programmers might get their jobs outsourced and be in trouble. Good programmers can always get other jobs. The really good programmers never even work places that would be dumb enough to outsource the programming jobs.

    As far as bringing in good foreign talent, I’m not sure why that’s a bad thing. You’re being a complete alarmist by claiming that foreign IT workers are taking all the jobs from Americans, and that the domestic market has been nearly abandoned to foreigners. Only someone who’s not good at their job should have to worry about losing it to someone who is good. Bill Gates stated recently that the government issues 65000 H1-B visas each year. Meanwhile, the number of computer science jobs is growing at a rate of 100000 per year. He’s pushing for looser regulations on H1-B visas because there’s still a shortage of good programmers.

    You say that foreignization causes a vicious cycle of low pay when combined with low prestige. This only makes sense if programmers have low prestige, which is not the case. Additionally, Microsoft and other companies pay the same wages to H1-B workers as citizen workers, according to Gates. No one’s bringing in genius programmers and paying them minimum wage.

    I don’t know why you care so much about how “America” views our “industry full of brown people”, either. It may be that the average person thinks less of the profession because many programmers are foreigners. But how is that even relevant? Random Joe on the street doesn’t cut my paycheck, so it doesn’t matter if he thinks less of programmers.

    You also say that Americans have more rights to the money created here than foreigners do. Well, many of the people who’ve helped drive America to be a superpower were, and are, foreign-born. If I hire a programmer, he is helping to create wealth for America. It doesn’t matter if he’s foreign or not.

  • Project management sucks too

    Not everyone wants to move into management. It’s also possible to be a highly-paid programmer without moving into management, so your initial premises are invalid.

    Older programmers don’t have to move into management to avoid ending up “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”. I don’t know why you think experience is worthless, but I really don’t understand why you think it’s impossible for anyone older than 25 to continue to learn. There’s no magical switch that flips when a programmer leaves college that stops him from learning new things. If a programmer is 50 and hasn’t learned anything since he was 25, he probably deserves to be unemployed. He’s clearly not the best asset. If a 50 year old civil engineer had been unwilling to learn anything after college, he wouldn’t be able to use CAD, and he wouldn’t know the latest building codes, and he deservedly would be unemployed.

    You also don’t seem to understand what “management” is if you think it shouldn’t involve planning and status reporting. That’s exactly what management is. The people who hold the purse aren’t managers, they are Directors and Executives. Directors tell managers what to do, and managers manage the day-to-day details. Management isn’t generally glamorous. It’s not a situation unique to programming.

    You also state that we need stronger industry bodies from the computer science profession. On this, I completely agree. The low quality of the average computer science graduate is enough to demonstrate that there are problems within the industry. We need industry bodies to set minimum competency requirements. The barrier to entry should be high, not to rule out foreigners, but to weed out incompetence. I think this needs to grow from the programmers themselves (much as lawyers run the Bar and doctors head medical boards). And I do agree that programmers should not be managed by non-programmers.

  • The working conditions suck

    Sadly, there is truth to this. Some places do not appreciate their employees, and therefore do not treat them well. This is not, however, a problem exclusive to programming.

    This is an area where an industry body would help. I think if we had an board which weeded out all the incompetent programmers, there would be less of a problem with poor tools. I think many companies simply cannot tell a good programmer from a bad one. And so they have a mix (mostly bad, a few good). A bad programmer isn’t going to be more productive with two monitors, and I think companies recognize this, and assume they are better off not giving dual monitors to anyone, rather than trying to give them selectively, or wasting the money giving them to everyone.

    Of course, there are many places that do appreciate their programmers, and do whatever is necessary to keep them happy. These are the places that programmers want to work, and these are likewise the places that you will find most of the good programmers employed.

Sigma, for the most part, your arguments don’t reveal any deep problems with the programming profession. They reveal instead serious issues that you seem to have with your choice to be a programmer. Your aversion to learning new technology seems to be a major problem. You chose one of the fastest-evolving fields in modern times, so this is unlikely to change. Programmers need to be lifelong learners. I’m not sure what else to tell you. Lots of people change their professions. It’s not too late for you. Alternatively, you could find a job using a stable technology that you enjoy. Maybe you should find somewhere that will let you use C or C++, both of which are unlikely to disappear anytime soon.

To the readers, pick a field that’s compatible with your own nature. You’ll be much happier. If you find that you’ve chosen the wrong field, change it. It’s just a job. Find something you actually enjoy, even if it means a massive career change. It’s better to be poorly-paid and happy than highly-paid and miserable.

No comments :