Log in

No account? Create an account

Previous Entry | Next Entry

debate on computer programming careers

Why a career in computer programming sucks, and a rebuttal.

In a followup posting of Half Sigma's, someone wrote a response that resonated with me, especially the part about a lack of people with a middle-ground attitude towards the profession.



Nov. 29th, 2007 12:54 am (UTC)
I think there are a few separate issues. Half Sigma started out on a bad note, since every field has obsolescence issues. Professionals get around them by continuing education. That's as true for patent law (hint: laws can change) as it is for programming.

Non-programmers managing programmers is an interesting issue. As a former line manager, I'll make the observation that the skills needed for management are invariably very different than the skills needed for the worker bee tasks. The real problem is when management gets treated as a reward for being good at something other else.

Finally, I'll suggest that there is no such thing as a good or bad career field. (Well, OK, toxic waste cleanup is probably universally a bad job...) The real trick is to find something that suits you well. I have a great job - most of the time - but it's one that would drive at least 75% of the people in my company nuts, largely because I have to be able to deal competently with a lot of self-important people. I know that isn't easy for many people to find what's right for them, but it is worth the effort.
Nov. 29th, 2007 05:15 am (UTC)
WRT continuing education, I agree, but in software, it can be difficult to know exactly what it is one should be educating themselves in. There are conflicting expectations and criteria, such as needing to understand principles and concepts, while at the same time, needing to remember what a particular command or library routine does. In this case, I think industry certification (such as LSATs) would help, as it would bound the minimum amount of competence one has to demonstrate to enter the field. This doesn't necessarily mean that individual employers can't ask for more, but there is at least a starting common ground. Once one has the basics under their belt (and knows that they do), they can focus on some of the other things that would make them a standout.

Having non-programmers manage programmers can be a problem. For example, if a programmer tells a boss that a problem is unsolvable, and that another approach needs to be taken, the boss may not understand (even if the boss is, or was, a programmer). But the entire project may fail if the boss doesn't understand the issue, or doesn't believe the programmer. (The problem might very well not be decidable.) Another issue is that some programmers do not have the type of social skills to communicate with non-programmers. A company may require this of their candidates, but this leads me back to my earlier point: developing those skills can come at the expense of other, arguably more critical skills.

Regarding finding out whether something suits one well, I'll have to think about that. How can you tell, especially if you're new to the field? Having problems in a job could just be a mismatch between an employee and a company (or a group within the company). If there was a history of that, perhaps that would be cause for concern. But in the case of software engineering today, there are lots of external factors that can interfere with really getting a good handle on whether someone is right for the field. (This is probably true of other fields, but I don't know if it's true of all fields.)
Nov. 29th, 2007 02:57 pm (UTC)
I think industry certification (such as LSATs) would help, as it would bound the minimum amount of competence one has to demonstrate to enter the field.

By LSATs, do you mean something other than the law school entrance test? Because that's not industry certification (in law, passing the bar exam would be the certification, I guess).

The IEEE Computer Society has a Certified Software Development Professional designation that looks interesting, that you have to pass a test to receive (and they're developing a Certified Software Development Associate test for entry-level people, as the other one requires a certain amount of professional experience). I think it would be cool if it became widely recognized in the industry, and the IEEE is a sufficiently influential organization for that to possibly be feasible.

Software's kind of a young field, and I think that contributes to the problems that you mention, such as conflicting expectations and a lack of established best practices for worker/manager skills and dynamics. I do agree that managers should have some technical knowledge in the field that they manage. Different fields seem to do it differently. Teachers are managed by principals, who have training in education. Lawyers are managed by the partners in their firm, who are senior lawyers. But doctors are often managed by hospital administrators who are not doctors, and academic scientists are managed by university administrators, with a department head drawn from the scientist ranks who is the link between the two. Perhaps the software industry should be studying how these fields make their different approaches work and figuring out what it could apply to itself.

A company may require this of their candidates, but this leads me back to my earlier point: developing those skills can come at the expense of other, arguably more critical skills.

I think that development of the different skillsets can be interleaved. For example, a computer science class could determine grades not only by psets and tests, but by performance in presentations, and similar things (or the department could go the MIT course 6 route and have a required class on communications skills in the EECS industries).
Nov. 29th, 2007 11:19 pm (UTC)
Actually, you're right. I was thinking of the bar exam.

WRT the age of the software industry, other industries that aren't much older don't seem to have software's problems, such as aeronautical engineering. You never hear about shortages of aeronautical engineers and a need to import them from outside the US, for example. The combination of engineering education and professional licensing seems to produce an appropriately skilled workforce – enough for the US to have a commercial passenger airline industry, commercial air freight, military operations, etc.

The IEEE exams could be a step in the right direction. At present, there is a lot of controversy over such exams. For example, on NANOG a few years back, there was a long debate about the value of network engineering industry certifications, such as those one can get from Cisco.

I'll have to check out the course 6 communications skills class. When I was a student, I don't think any of the engineering departments had a required class like that.
Nov. 29th, 2007 11:43 pm (UTC)
I can't speak for aeronautics, but the aerospace industry has a huge issue with skilled workforce. I sit on a couple of Industrial Base boards involving the space side of things and there is continual discussion about:
1) the aging workforce
2) need for development of a cadre of space professionals with appropriate skills
3) how shortages of people with the right skills (including, by the way, software development)) are impacting the industry

One difference is, of course, that importing engineers from outside the U.S. is not a feasible solution, due to security requirements.

However, the fear of losing work to companies overseas does play into space policy decisions. I read enough of the business section of the newspapers to know that there is a lot of concern about keeping Boeing competitive vs. Airbus, say, so it isn't just the space side of things.

No certification in aerospace engineering either. Professional Engineer registration is common for civil engineers, who deal with public works areas, but more controversial in other fields of engineering and I don't know anybody within the aerospace industry who has bothered.

As for required communications skills classes, in my undergrad days in course 2, one or two lab write-ups in each lab class were graded by a prof from the writing program.
Nov. 30th, 2007 01:31 am (UTC)
What do the people on your Industrial Base boards think they should do to encourage people (especially young people) to write software for the aerospace industry?

I don't know much about what kinds of software are written in the aerospace industry. From what I have seen on job postings, some it is real-time control. In commercial software, some people who do this design or develop phone software at places like Palm, Motorola, Apple, and now Google. Others design or develop switches, routers, etc. at places like Cisco or Juniper. I suppose robotics companies like iRobot compete for the labor pool as well.

Other people like cahwyguy do secure systems work. They have to compete with Microsoft, EMC, and the like. cellio's company does a lot of UI work. I suppose they have to compete with Yahoo!, YouTube, Facebook, MySpace, and game companies.

Re: communications skills classes, when I took 6.033, one of the design projects and one of the weekly writing assignments were graded by the writing program. The program seems to be a bit more formalized now. But the sort of thing I'm thinking of is where you might have to spend a considerable amount of time explaining what you do to people who have little if any technical background. Not just in writing, but also verbally, and in situations where the company's future might hinge on whether both parties understand each other.
Nov. 30th, 2007 01:44 am (UTC)
Some of our software, particularly in my division, is aerospace stuff, generally for Air Force research projects. The stuff we do includes topics like information processing from airborne sensors, radar system control, target tracking, and multisensor data fusion, more than software control of the vehicles themselves. I'm working on a proposal involving multitarget tracking and fusion algorithms for space radar networks, for example.

I don't know what the aerospace industry is currently doing to encourage young software engineers to join it, but it seems to me that one obvious selling point is that, for national security reasons, your job is highly unlikely to be outsourced.
Nov. 30th, 2007 11:13 pm (UTC)
I'd say that, overall, the types of software written in the aerospace industry probably cover the gamut of software written in other industries. Flight software is somewhat specialized in that rad-hard processors are many generations behind what you or I can buy for our homes and there are often complex timing issues for critical data (particularly for satellites in orbits which give them limited contacts with ground stations). But there is also a lot of software written for ground systems, not to mention business applications (e.g. earned value management). Simulator development is a huge area, too.

The issue is not usually perceived as competition with other industries as an absolute shortage and most of the discussions I've been in are focused on how to get young people to consider math / science careers in general. There is, of course, some competition with the IT world, particularly for more researchy type jobs, but there is some belief that a lot of software types are not willing to work in an environment that requires security clearances.

In terms of solutions, they tend to be things like funding for scholarships. There is also a lot of interest in encouraging more science / math awareness in K-12 as a long term solution.

And, alas, there is a lot of whining and wailing without any action.
Nov. 30th, 2007 01:33 am (UTC)
Cisco is a bit different than the IEEE. Cisco is a vendor, right? That sounds kind of like Microsoft's MS-specific developer certification, or the Red Hat Certification Program, and I'm a bit skeptical of those, or at least of taking them as anything other than "you know how to use this particular company's current technology". Part of the point of the IEEE program is that it's more...neutral, maybe? I'm not sure if I got the right word. It's not coming from a software vendor, and it doesn't focus on a particular vendor's products - it's supposed to test a general software engineering body of knowledge.

I'd kind of like to study for it, but you have to have 9000 hours of experience before you can take it. I won't be there for a while. They're developing an "associate" version for entry-level people.

I disagree that you don't hear about shortages in other industries. I've read about shortages of aeronautical engineers. I don't know why software seems more prone to importing foreign workers than aero/astro - I have to wonder if it has something to do with more aero/astro jobs requiring security clearances.

The course 6 class is 6.UAT. It's a required 6-unit class. The description is, "Learn about different aspects of effective technical oral presentations by being exposed to different workplace communication skills. As preparation for the advanced undergraduate project (AUP), students develop research topics, identify a research supervisor, and prepare a short research proposal for written and oral presentation."
Nov. 30th, 2007 04:40 am (UTC)
Cisco is a vendor (of networking equipment). The certification program (in their opinion) is vendor-neutral; they believe they are teaching the principles of networking, at least from an operations and engineering standpoint. There is a fair amount of controversy among members of NANOG over Cisco's claims. OTOH, when one is talking about designing or operating networks, one is highly likely to run into Cisco equipment because they have a high percentage of the market, especially in high-speed optical and enterprise networks.

As this relates to software, people who do network engineering or operations may write software, depending on the specifics of their job. A popular, well-known example of such a person is Paul Vixie, who is involved in DNS (particularly root servers), anti-spam, and several other things. Such people deal quite often in open-source software, however. There isn't as much emphasis on software methodology in the open-source world as there is in the proprietary-source world. The IEEE software exams seem more oriented towards that, from what I saw.

OK, granted, you hear about shortages in other engineering fields. Maybe because I'm in the SFBA, the issue of software engineer shortages is brought much more to the forefront, since it's a major backbone of the SFBA economy. It's covered on all of the major news outlets, a bullet item on many US Congress members' agendas, etc. There was, however, an item that caught my eye:

"U.S. industry must appeal to the entrepreneurial streak in many of today’s students by offering entrepreneurial projects within their companies, said Dave Daniel, dean of the engineering school at the University of Illinois at Urbana-Champaign."

This may be significant to the engineering shortage. When I was an undergrad, some people started companies, but not many. It was much more expensive (in 1980s-adjusted currency). Even if you rule out the fact that there was no (commercial) Internet and a telecom industry that was just starting to deregulate, PCs weren't cheap, and there weren't many platforms to do much application development on them. There wasn't much of a gaming, document preparation, or home/small office computing industry, as there is now. Nowadays, everything is cheaper, and platforms are much more open (and becoming even more so), so it's easier to start a company. There seems to be more of an expectation among young people about the possible need to start a company (at least out here).

I read a bit about 6.UAT. It's much more involved than the undergrad theses of my day. Are students required to give presentations to people who have little or no technical background?

Edited at 2007-11-30 04:41 am (UTC)

Latest Month

July 2018

Page Summary

Powered by LiveJournal.com
Designed by Tiffany Chow