I’ve been in the IT field long enough to get to know many programmers, both experienced and just wannabies. During this time, I’ve realized that most of them are just bad programmers, simply said. I find myself agreeing with a brilliant post by Jeff Atwood, which alleges that programmers can’t program. What are the reasons for this? Many. Probably, IMHO, the main fault has to be addressed to the lousy education that people receive. But then again, the ability of giving education remains directly proportional to the ability of getting it, and where I see people complaining about low quality of education in University, I also see students with no interest in learning. Let’s see some of the reasons why programmers can’t really program.
- Young people study Computer Science just because it’s a trend. It sounds almost unbelievable to me, but I must admit it’s mostly true. The vast majority of my old University mates just applied to the Computer Science department because... well: everybody was doing so. They followed the rest of the sheep.
- Young people study Computer Science because they wouldn’t know what else to do. That’s really another strong source of applications to Computer Science. A lot of young people in their teenage years just don’t know what they want to do as grownups. Computer Science still seems to be a good career opportunity, so they just go for it.
- Young people study Computer Science because they think it’s a sure way of getting a job. 10-something years ago there was a big boom, and if you just knew some HTML, were thought to be a computer guru. These types of belief mark a deep footprint on popular sayings, hence the wave of people applying to Computer Science just because they can work, is still there.
- Many of today’s programmers, were doing nothing else than surfing the net or using Word till last year. Especially in small and vertical based markets, improvisation just rules. People learn something, and literally throw themselves on the field. Drawbacks for quality of their work are simply inevitable. This is not only a group of illiterate people that just jumped in to catch the big wave (what big wave, nowadays?), but people with no passion whatsoever. In other words, I don’t think it’s possible, nowadays, to become a great programmer if you didn’t start getting some interest in the field when you were very young, say about 10 years old (with the due exceptions, of course).
- Many of today’s Computer Science students have no interest whatsoever in what they’re forcefully studying. Just put together the previous items in this list and what do you get? A bunch of people who just don’t care, who want to get their piece of paper (the degree) as soon as possible, and have absolutely no passion in what they learn. That’s the worst. I strongly believe that programming is not just a job like many others, but you need passion to get best at it.
- A lot of programmers just don’t like to program. This goes for 100% of my ex University mates! Think of that: 100%. Of course it’s not the whole world but it makes a small statistics.
- A lot of programmers just don’t get it. Not even the easy things. I was asked, few weeks ago, by a friend of mine who’s been studying Computer Science for now 4 years, what the difference is between a
privateandprotectedmethod in Java. Apparently reading the books isn’t enough anymore, nowadays. Another guy asked me: “I’ve studied pointers in C, and I think I understood them. Still I can’t find any use for them... are they really used at all?”. - Basically all of the programmers, or wannabe programmers, mentioned above, are miles away from the technical community. These people will totally ignore the existence of:
Slashdot and similar
RSS
Usenet
IRC (“Is that like MSN?”)
SVN and similar
As you can see, a really strong point, in my opinion, is the lack of care and passion for the subject of programming itself. Lousy programmers are bound to program to take a wage home; good ones are bound to program for the sake of programming itself. Or course you can do that but still miss to be a good programmer, but all falls down to numbers.
You have landed to my personal website, where I write about things that I find interesting. I am a software engineer, Open Source supporter and free thinker.
I have to agree with you. I’m a computing student and see what you mean. 100% of my classmates dont want to program. They just want a degree. Plus our course is shit, people just use Visual studio and netbeans to create gui and think their cool. None of them really understand programing. Every one just goes online can copies code.
CS education needs a HUGE update
I’m definately with you on this; I’m another CS student who actually enjoys and understands what he’s doing, but so many of my peers are just able to “get it working”, with the aid of what is essentially a tutorial, and get a degree.
“We’re now going to extend the ChessPiece class for the rest of the pieces, you’ll need to make a method called canMoveTo() in each of the classes or your program won’t compile.“
What, no mention of why you HAVE to over-ride the method? Not even a hint at what abstraction is?
They can make it work, sure, and that gives them the marks — but what about when they have to thing independantly. How well do they cope when the safety net is taken away and they have to design the objects, and more importantly the relationships between them, securely and efficiently. Where’s the actual understanding of how things work together, when to do things (rather than just how). There’s no effort to teach what an abstract class is and when it’s useful, just to make the student do it.
It devalues the efforts of those of us who understand the concepts and enjoy the subject, just because the universities want to throw out a decent pass rate and they know a lot of teenage boys want to “make computer games and stuff”.
In short, it makes me look bad because they don’t actually have to learn.
Very much agree to it.
I agree. Trendy is the key. For the same reason that a few years back it was super cool to study forensics in college because CSI was the hot show. PLEASE. I know that every generation says this about their young people, but the 20–30 years olds today truly do not have a clue; but that is no crime. Every young person has to find their own way and stumble around a bit at first. But this generation is different. Not only are they completely clueless, but they are also cocky, egotistical and complelty in awe of themselves. And is it any wonder? When you have people like that ‘Joel On Software’ dude saying that new programmers should be picked up in limos from the airport? Are you insane? If anything they should be picked up and dropped on their heads. Stop complaining about wanting to use the lastest technology. Stop complaining that your chair at work is not ergonomical. Stop complaining period. Shut your mouth, do you work and save for your retirement. In short, take a least a little break from thinking about yourselves. Or didn’t they teach you that in college?
And let me guess, you’re one of the “skilled” developers? That’s alway how it turns out.
As a veteran programmer, let me tell you the people lamenting other’s skills are often the very same people giving me the oddest code. When no one can understand your code, the first defense is “you’re not smart enough to follow it” and then follows an hour-long argument of comparing “dick-sizes”.
After coding at work for too many hours I AM NOT passionate enough to pick it up again at home. I want to do other things. The passion is gone. This does not mean passionate people are any better at coding; they just have less going on in their life, I suppose.
I’ve been on all three sides of this fence. I started at five or so learning Applesoft and 6502 machine code from books. At that time, there were very few programming books and they were all written by people of the utmost qualification in their fields. Today, you can teach yourself to be an idiot in 21 days and a thousand screen shots. But there were other differences. People treated software like baking or brewing instead of like factory work. You could get disks full of exemplary source code for little more than the cost of duplication. (These days, there’s plenty of free source on the internet, but there’s no filtration for quality.) Also, today people expect more from a program. It has to work with a GUI or over the net on a time-shared multitasking operating system. Expectations are higher. The legal framework for software has changed. And quite frankly, most of the important, useful programs have already been written. So at this point, software development has forked into research (what computer science is supposed to be) and business systems (which is really about putting a pretty and secure face on a database) and a hazy middle-ground where people are trying to do all kinds of weird stuff for money, like fee-based wireless print service in public places. The weird stuff is systems integration, and it ought to be scriptable, but it’s often attempted with poor tools and ill-prepared people.
I don’t know of anyone that really teaches a systems integration curriculum, or even a course on doing weird stuff with computers. The MIT media lab is probably a great example of systems integration, but I don’t know if there’s a course centering on it and its evolution.
Nobody complains about research programmers, because they’re all brilliant. And nobody complains about business systems developers, because they just need to be consistent and work in a framework that lets graphic designers do their work without getting in the way. The big noise comes from the hazy middle, and there’s nobody teaching in that area. If you figure out how, you’ll probably consider it a competitive advantage.