After having read numerous articles on the inability of many CS graduates to program; in particularly “Why Can’t Programmers.. Program?“; I have decided to explain what seems to catch everyone by surprise, yet should be obvious. First, a little bit about me. I am currently a Upper Junior studying for a BS in Computer Science at Queens College.
Let’s get to the point. From the article, “Like me, the author is having trouble with the fact that 199 out of 200 applicants for every programming job can’t write code at all. I repeat: they can’t write any code whatsoever.” This starts in college. Let’s divide our students in groups. Would you be surprised if I tell you that approximately 50% of the students cannot write the simple programs they are assigned? (Group F) The other 30% finishes simple tasks as if they were final projects that couldn’t be any harder. (i.e. linked lists, GROUP C). The last 20% does fine because they are good students. (GROUP A) (All of these are empirical figures only.)
Then the exams come; in almost all my classes 50% have failing grades(<60/100), sometimes less due to the huge curves a lot of the professors give. Now if you are a Computer Science major and get something like a C (after tremendous curves) in a programming class, it is the same as getting an F. Sadly professors can't fail everybody or they would look like bad professors, so they implement these curves in order to have a decent number of students passing their class. After the finals and the course is over, at least half of GROUP F will pass, It has been the case in almost all my classes. (they claim they have passed with a C which is enough for the major requirement. All GROUP C and GROUP A will pass, with the minor difference that C people will receive a B+ or A-, whereas A people an A, or A+.
Of course, there are professors that actually try to keep their precious field free of incompetent workers, but these are few. I have had the extreme cases where a professor actually let you cheat on an exam by letting you write down all the algorithms you need to know in a sheet of paper. At first I thought this guy was kidding but when i showed up for the final and saw everybody with such sheet of paper I realized he was not. To make things even better he even left the class for about 5 minutes during the mid-term and the final exam letting everybody do as they please. This particular class was concentrated on MIPS assembly language programming, which I feel gives a huge edge to programmers; since they get to understand what all their high level instructions actually do. Sadly, due to this professor very few people from that class of 20 will have learned that important lesson. However, it can’t all be blamed on the professors, for letting that F student pass his course.
Professors can’t be blamed because, the biggest and simplest explanation to the matter lays not with Group F (they probably won’t ever apply for a CS job anyway), but with Group C and A. In group A there are actually very few people who are majoring in Computer Science because they enjoy the material. Most are in because of the money rewards after they get a job. Group C and A do all their assignments, they pass the finals, they get good grades. So what? These students get their grades and never program again. They do not enjoy programming, they do not look at other code besides the one in their projects and homework. Okay, even if they don’t find it fun they should do it. What happens when you learn a new word in a foreign language and don’t use it for a year? That’s right, you forget it. These people don’t program outside of their classes, and that’s how they forget everything they have learned by the time they get their degree. Very, very few people actually program outside of class and this is what matters. The more you program on your own, the more you get to like it, and the better you become at it. If they major in Computer Science and don’t have practice outside homework, might as well not have wasted their money on useless degrees. I have told this to many fellow students but only few seem to understand me, others think that this will come as work experience and ignore me.
Obviously, since 1 out of 200 programmers can program well when they graduate, this is not only going on in my college. Students everywhere are making the same mistake, which at best is just keeping themselves to their homework, or worse, participating in academic dishonesty. Sooner or later, a Masters degree will be the minimum requirement to apply for the majority of jobs, then the madness of doing CS for money perhaps will stop. These people should head elsewhere, if they are in CS for the money, and not because they really enjoy it.