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.
Agreed. I’ve been involved in IT and software since I was 7 years old, and I love it and I can’t tell you the times I am asked what variables are really for, why a for loop is called a for loop, what’s an iterator, what’s the difference between an object and an associative array, what’ s a hash, why hashes? the list goes on and on and it’s ridiculous.
Working in IT since you were seven? No offense, but that’s hard to believe.
My grandfather bought a Tandy TRS-80 Model III in 1983 and introduced me to 10-20-30 BASIC Programming when I was 6 yrs old. I’ve never done anything since except make myself a better programmer. If bryan was introduced to IT at 7 then I was introduced to IT at 6. Were you using debug to type in com utilities from pc computing magazines over 20 years ago? If not, get off your wall and realize that you may not know as much as you think you do.
I had a Video Genie, the poor man’s TRS-80. If you weren’t really into it the frustration of programming in those days would have weede you out.
There’s just so much pre-built stuff around now that a mediocre programmer can get a long way before they come unstuck, and if you’re not a good programmer yourself you’re too far into the project before you discover the difference between the mediocre and the great.
I agree entirely with this. There’s far too much emphasis on user-friendliness. Anyone can just fire off a site with Tumblr, a webapp with Wix, a program with Clickteam, a game with Flixel. I know that this is simply what happened in reality hundreds of years ago and that I’ll soon be classified a Luddite, but I can’t help being annoyed by the degradation of programmers, and I haven’t even been around that long – I’m only just 13.
Did I forget to mention I’m in my mom’s womb still? Oops…
*lol* Yeah, sure. Says the guy who either A) has an IQ of 210 and is a VERY, VERY rare exception, or B) is full of shit and toyed with computers until he actually knew what he was doing much, much later.
He said “involved with IT” which doesn’t mean he was a master at age 7. Instead of flaming him you should be out there getting “involved with English” and maybe you can toy around for a while and get to learn the language properly.
Not that unrealistic. I ran a site at 4 and completed my first program at 9.
Except, no, you didn’t.
The sole purpose of this comment is to say that WallMountedHDD is a disgusting human being who puts down other people to feel better about himself.
There are people out there who care deeply and passionately about programming because they started at an early age. Is your perception of programming so utterly dense and complex that you refuse to believe that it is possible for children to get involved?
Please. Just keep your self-esteem problems to yourself.
@bryan
Yeah, that’s particularly doomed to happen if your the most techie or savvy of your friends.
People just find so much easier to waste your time than just google for it.
Further agreement here. The boom of 10-15 years ago is still affecting the industry; kids who witnessed that big IT Craze decided to go into Comp Sci/programming because of the perception that it was a lucrative career choice, with a lot of money and even a little bit of glamor in it; many smarter, less fad-driven young people were turned off and got into other careers. Fast forward to present day and that first crop of kids have since finished their degree and are now out in there trying to pretend to be programmers and BS their way through. Along the way I think they even ended up effecting a lowering of standards at any university CS departments, which is not going to help matters in the future. It’s a sad state of affairs for the growing company that needs to hire programmers and really can’t afford to take on ones that are dead weight. They get tons of applicants and have to figure out how to pick out the one in a hundred that’s actually worthwhile.
Wow, these are the same thoughts (and even some of the same examples) that I’ve been trying to put into words for quite a while.
100% agree!
I definitely agree with your observations. It’s sad to see so many clueless individuals in this field.
I just have one question… what’s SVN? (just kidding!)
Yep, years back I thought that programmers are really smart and very professional and you need to gain a lot of knowledge to become one. Then I got to a company working with few dozens other developers and I became enlightened. Most developers are really really bad. They suck big time. Actually almost all of them shouldn’t be developers at all.
@karol
Ironically – if all of those bad programmers were to disappear, I’m certain that worldwide mean of productivity would be about the same as it is now. How sad is that?
Mmmm – I agree to a degree. See responses interspersed below:
1. Young people study Computer Science just because it’s a trend. — I think this is really not the case anymore. CS entrance rates (and Engineering across the board) are decreasing every year. I think the trend is over.
2. Young people study Computer Science because they wouldn’t know what else to do. — This hasn’t been my experience. I think that’s what many business majors do, but people who try to do this in CS often have a rude awakening at the math involved.
3. Young people study Computer Science because they think it’s a sure way of getting a job. — Maybe, but there’s not as much money in it as there once was, and I think they know it by now.
4. Many of today’s programmers, were doing nothing else than surfing the net or using Word till last year. — It’s possible. A friend of my wife’s once commented that she’d probably enjoy getting a CS degree – since she likes writing emails.
5. Many of today’s Computer Science students have no interest whatsoever in what they’re forcefully studying. — I totally agree here. I LOVE to program – but I HATED getting my CS degree. Why? Because I could care less how a microprocessor works, or MIPS, or what differentiates super-pipelining from multi-processing. For me, those are problems that other people can solve – I just want to CODE! Unfortunately, there was no “Software Engineering” curriculum at my university – so CS was the next closest thing.
6. A lot of programmers just don’t like to program. — I’d probably use something a little stronger. For example “A lot of programmers just don’t LOVE to program”. In my experience, a lot of the programmers I’ve worked with did it because it paid the bills, with no special interest or aversion to it.
7. A lot of programmers just don’t get it. Not even the easy things. — Agreed – as illustrated by the FizzBuzz phenomenon.
8. Basically all of the programmers, or wannabe programmers, mentioned above, are miles away from the technical community. — Maybe so.
As someone who’s doing Computer Science (albeit the Games Technology course available at Charles Sturt University in Bathurst, Australia) I get a little nervous when I read these things.
I don’t mind programming, but my biggest problem is a lack of structure. If there isn’t someone giving me ideas as to what kind of things I should try and program, I don’t do anything.
On the other hand, I LOVE maths. I would prefer to sit in my room at uni and do maths stuff with the headphones on than go out and drink.
On the other hand, I know very little about the technical aspects of computers – and now that I think about it, a lot of the new trends have missed me by. Then again, this is what happens when you spend your teenage years spending 99% of your income on Warhammer models.
I know what RSS is, I don’t use it. I know what IRC is, I’ve just never used it or talked to anyone who has.
Basically, I think I’m asking for guidance here on how to become a better programmer and I suppose computer scientist in general.
If anyone has got anything that can help me, shoot me an email to nerdyogre254@live.com.au.
Perhaps this is my second wind from getting my Java assignment done, and staying up all night, but I feel really motivated now. I suppose I should be thankful for this.
Posts like these are totally non-productive in the long run. Replace ‘programmer’ with ‘blacksmith’ and you are hearing a lament that has gone on for thousands of years.
“In my day, were stronger, better, smarter, all above average, etc. When we used punchcards, we had to be so much more clever….”
The real issue at hand is, how do we produce more and better programmers?
[...] This says it all March 8th, 2007 Salvatore Iovene » Why most programmers are lousy [...]
I agree.
Working with people who don’t have a passion about their work does suck.
but I think the sentiment applies to all forms of technical careers.
@chuck
Indeed. Luckly, this trend is going to dim over the years, as it seems to be starting to.
I think the fact these ‘developers’ can get hired is even more amazing than how much they overstate what they know.
It’s not just these programmers who are to blame. Companies should have people who know what they’re talking about do the interviewing.
@ Jim R. Wilson
Thanks for the insightful comment.
@ Jens (comment #13)
Probably that’s just because in a lot of cases, the quality of code, and the happiness of the employees doesn’t really matter. Consider all the business around the simple statement of “Let’s keep the customer happy, and who cares if the code sucks”.
I’d say there are those people who learn to code, the ones that aren’t interested in the “science” but mass producing software and getting payed. And there are those who learn computer science and/or to program.
I don’t really see the problem, the situation seems to me to be the same in most other areas.
One would be math, there are those who learn math to get a job, not really understanding it, and those who understand it.
You make it sound like young people just don’t care. I really think that’s the wrong attitude to have and stereotyping a bunch of individuals like that is wrong. I’m not sure what encouraged you to write a blog of this nature, but I find it insulting.
I’m in my mid 20s and have a few years of programming experience under me. I’m not in it because all my friends program. I’m not in it for the money. I’m in it because I like solving problems and facing new challenges everyday. …and here I get stereotyped because of my age.
I know nothing about you, but I can make one educated guess. If you were to interview a 35 year old programmer and a 25 year old programmer, you wouldn’t even listen to what the 25 year old programmer has to say. You’d blow him off before the interview even started because you have this crazy idea in your head that all young people have no passion, no care to write good code, and probably assume they’ve never heard of a compiler before.
You said: “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).” This makes no sense. I know a lot of people around where I live that never received a computer till they were 15 or 16 years old. They’re now moving up the corporate ladder in their programming gig very fast – blowing people out of the water that have worked for the company over 10 to 15 years. I know a lot of people that had computers their whole life and still have no idea how to remove a virus from their Windows box.
You’d be amazed how many good young programmers are out there if you just opened your eyes a little more and stop getting distracted by script kiddies.
Blame it on the HR folks that actually interview these young people with no cares. A good programmer is a little odd on the outside and inside, but HR departments look for “normal” individuals. They only screw themselves and pollute the work force.
@ Tilo (comment #16)
I don’t know. To me it seems like programming requires more passion than a lot of other jobs, if you want to excel. It might be the same with math and other sciences, as you say, but since there are way much more programmers than mathemathicians, I’d say the problem is more serious in the IT field.
@ Dave (comment #17)
Dear Dave,
I’m afraid you took this too personally. I wasn’t anywhere saying that “all young people, with no exception” suck, or whatever. Actually, should you have taken the time to find out more about me, you’d have found out that I’m right about your age.
When you complain about me saying that “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)”, you’re forgetting the “with the due exceptions” part.
Sure I believe very well that you know some 15-year-old phaenomena, and so do I. This just proes that starting young does actually help (probably just likewise any other field).
Furthermore, the whole post was about the subset of young CS students who do actually not care, as a matter of fact, because that’s what I hear from their own words.
I’m happy that you enjoy your IT job, and so do I, being and employee myself, but you (or me) don’t prove that the people I was talking about exist. I wasn’t stereotyping by age, and you can consider a proof of that the fact that I’m the same age.
I think what you’re trying to say is programmers who have a life other than programming tend to be bad programmers.
@ jc (comment #20)
I think that you’re actually the one who says that being good programmers being lacking a life outside a computer.
Perhaps you should find better friends or coworkers if they all suck?
If you constantly look around and you’re the smartest guy in the room that probably means one of two things: a) you’re delusional or b) you set your sights too low in accepting where you currently are.
@ BlogReader (comment #22)
Or then maybe:
c) where I work, all of that doesn’t apply, because everyone’s so goddam good and I’m not even farly the smartest guy.
In other word, I’m not necessarily speaking of what’s happening to me right now and right here.
@Salva 23:
so you’re just being a curmudgeon complaining about the kids of today and your only data point are the people that graduated in your college class? Your other data point disproves your thesis as well.
Now I’m agreeing with the “blacksmith” comment above.
@ BlogReader (comment #24)
My data are the people that graduate in my college class, the people I worked with in the past, the people I get to talk to on usenet or IRC.
Nowhere I stated I had any rock solid data, nor researches whatsoever.
I happen to work in a kinda leet place (well at least I like it very much and it’s leet to me), so it’s pretty much an exception.
Also see the post from Jeff Atwood that I linked in the article.
[...] Why most programmers are lousy – Salvatore Iovene [...]
I might agree that taking mathematics as an example was a bad idea, but in a way it did make my point more clear.
As software becomes more and more mass produced, and less and less defined as individual packed solutions, we’ll need coders to write the code (“monkey coders”). These people, from the little experience I have, aren’t interested in advancing the programming subject as a science, art or craft, which ever term you like the better.
This could give the more “traditional” hackers the chance to strengthen their role as a researcher and thus furthering the subject as a wholeand make what, at least I, find really interesting furthering the subject as a whole.
What I’m really sick of is programming “wannabes” talking about the by them so called “non-realworld” research as not helping them deliver their software to their oh so precious customers.
What you are suggesting might be true, although as long as they don’t make it harder for me to enjoy the subject, which most of the time they don’t, I just don’t care.
One way in which this does bother me is if university research and education gets dumbed down because of it.
Well, I think you don’t have to overestimate programming. There is a lot more about building systems than just programming.
You’re right that there are a lot of really bad applications out there and I was one of those doomed who had to maintain one. But the reason for this is that software engineering as a discipline is decades behind other engineering disciplines. Having a bunch the most talented programmers doesn’t automaticly lead to success(and would also be boring).
From my point of view, software engineering is far to less interdisciplinary. And if your working with carrer changers in a project, their skill level in programming might not be the best. But you have a great chance of getting inspired, even in programming, by the questions they ask. And the questions they ask are specific to their scientific education.
I’m currently engaged in Lean Management and what we can learn from Lean Management for software engineering. And i would look forward to working in a project with someone who has a lot of experience in this area even if he’s not the most talented programmer.
Interesting; a lot of truth to this. Here are a couple other perspectives.
Eli Whitney and Frederic Taylor:
(building a bit off the “blacksmith” comment)
An interesting aspect of the long war (or love/hate relationship) between labor and management since the rise of the factory system is management’s continual quest to de-skill labor and make the majority of workers interchangeable parts. Being a “mechanic” early in the Industrial Age was a complex, intellectual job, because everything was cut-and-try and one-of-a-kind. “Mechanics Halls” in many cities were basically technical schools where relatively smart people came to learn the science and technology of a skilled profession.
Eli Whitney in the 1800s invented interchangeable parts, turning production into a repeatable scientific process instead of an art. Then Frederic Taylor’s “time and motion studies” in the early 1900s applied the same approach to people. (Google “Taylorization” if you want the bolshie view of this.) Industrial engineers could look in a handbook and specify what job each worker on the production line should do, exactly how they should do it, and how fast. Any average human could learn a factory job quickly. In the near future, managers expected, machines would do it even more quickly. Life was good for them; boring and uncertain for the interchangeable workers.
In many cases this approach makes sense. Factories’ mass production blew workshops out of the water — they could mobilize essentially the entire adult population of a country (not always just adults) to produce goods in unimaginable quantities. For some perspective, the first big drop in European death rates since medieval times happened when the English textile mills made clothing cheap enough that common people could change their underwear and stop coexisting with lice and fleas.
Every job at McDonalds is supposed to be learnable in what — 15 minutes? That’s OK; if I’m in a hurry, I can count on a clean restaurant and hot food that won’t disappoint me. However I’m living in Paris now, where the cooks and bakers take quite a bit more than 15 minutes to learn their trade. There’s no comparison in the results!
It turns out that the human-as-robot-wannabe model was flawed even in factories. Japanese factories where workers were allowed and expected to think — lean production — eventually blew the General Motors workers-are-expendable-cattle approach out of the water even for jobs as simple bolting parts on auto bodies.
SW engineering, Domain Engineering, and End-User Programming:
There has been a great effort to industrialize programming, too. Again, there are many good features, and it’s a field I’m interested in. Building a large program requires a structured approach. Language design, libraries, programming frameworks and IDEs can and should incorporate as much existing human knowledge as possible — computer science, domain knowledge, solid pre-written code and human interface principles. (Check out Thomas Greene’s “Cognitive Dimensions of Notations” for some of the latter — I think of how programming tools fail to use them on a daily basis!)
On the one hand, this can allow people who aren’t great programmers — or even programmers at all — to do programming that meets a lot of practical needs. There are hundreds of millions of businesses in the world; they have needs that can’t be met with a few standard mega-programs, and they can’t all afford to hire Linus Torvalds to do something brilliant for them. They need ordinary programmers who can make computers do what they need. The analogy isn’t perfect (factory workers all did the same job, while semi-programmers basically customize), but there is a place for people who aren’t brilliant thinkers in our profession. Whether it should be called “Computer Science” is a good question — there’s much less science programmers need to know than physicists or biologists (although you can argue that biology is developing a large factory component, too.)
To sum up a rambling post: yes, if you are doing serious, new work, you need people who are great programmers. Yes, you need to winnow out a lot of chaff. If you are doing ordinary programming, you need to winnow out a lot of chaff, too. You need dependable people who understand the kind of programming they will need to do, who have a work ethic, who aren’t trying to con you, and who understand a significant amount of computer science at an applied level. Just like you want a carpenter or car mechanic who knows his trade but not necessarily statics or thermodynamics, they need to understand a little about algorithm complexity so they don’t write a program that will crawl on more data; a lot more software engineering so their programs can be understood and play nice with other components, and a lot of specifics about the programming you really need them to do.
Wow, a long time ago for this article. But your comment is spot on for my thougths on the subject. Maybe I can add: you don’t put a too brilliant programmer laying the foundations of a code and then expect the support team to be able to fix some bug or feature cleaning/adding. Like: “this is a pointer to a (function?) pointer that points to an array with pointers that….and there you finally reach the requested string”. 5 or 6 levels of pointers were involved! Real example in C that I experienced 10 years ago. Of course we had to find the original programmer to come and help us! Thanks God he was still with us…
@ Howie Goodell (comment #29)
Howie, thanks for the really interesting comment. Very good ideas, there.
[...] After claiming that most programmers just can’t program, and actually addressing most of the problems to the lack of passion of people who decide to start a career as a programmer, I would also like to express my point of view on a tightly related subject: what can be done to improve the situation? The problem that I was trying to bring up in the spotlights, is that a lot of people just start (or wish to start) a career in the IT for no particular reasons. Those are the ones who don’t love and don’t loathe programming, and they just see it as something that pays their bills. Well, maybe the first question that I should address, actually is: why is this bad? Sure there are so many jobs which don’t require passion at all, and people just do them because a job is just a job, and don’t really care. In my opinion, being a programmer is different. [...]
“Young people study Computer Science because they wouldn’t know what else to do.”
lol, my comment was auto-cut
but maybe that is better
are this great guru blog is open for sql injection? or my comment was too long?:>
It is all about education. The quality and depth of education for the average person has steadily declined for the past 100 years. In America, the last 40-50 years have are especially noticeable. Most Americans, educated in America or not, know only a tiny subset of English.
However, the critical ramification of educational deficiency is that people cannot think anymore. Obviously without strong thinking skills, mastery of software development will be next to impossible.
In a sea of ignorance and non-thinkers, one would think that smart people would be in demand, but they are not. The network effects of ignorance and mental incapacity are powerful (think Metcalfe’s Law). So powerful that they will prevent most smart people from being hired. So when you are in a place that is populated with hordes of bad programmers, don’t be surprised. That is the wave of the future.
The basic fact of today’s software world is that dumb ignorant people hire dumb ignorant people. If you want a job, remember that in the kingdom of the blind, the one eyed man… pretends he is blind too.
Which brings me to the point of this ramble about dumb people and jobs. If you are smart, Darwin is against you today. You have to use your intelligence to adapt, meaning learn how to pretend you are dumb. Otherwise you, the smart programmer, have no future.
response to comment #22:
Have you heard the old joke that goes something like “Just because I’m paranoid doesn’t mean that they aren’t all out to get me” ?
One of my problems is that I usually *am* the best in the room. And that’s sad, because I’m really not that great. It’s a burden, mostly because there’s nobody to challenge me, to ask questions of, to look up to. Thank goodness for the Internet!
If you live in an area (like I do) that has a high dropout rate, a low college rate, a high poverty rate, the company you work for will probably take any programmer they can find (because not that many live around here). I’m glad for the opportunity to work here, because it’s better than teaching high school, and it has given me good experience in refactoring and redesigning poor code, and handling customers. But I’m equally glad I’m moving to a better place in a few months. Maybe then, when I look around the room, I’ll actually have people I can learn from.
My solution: go back to school (so recruiters will notice me), and get hired by a company where I will find people better than me to work with.
Something (average) people tend to forget, is that being “smart” (however you define it) can be a disadvantage, or even an outright disability.
@ swan // comment #35
Great response, swan. That’s so darn true. I also used to be the best in the room, so I moved to a better place with better people, from whom I have a lot to learn. And guess what? I’m getting better too, of course.
1. It also depends on what you want to do: I know a lot of programmers who consider programming just a step in their careers. So, for example, they program from 25 to 32, then the same company they work for take them to a “higher” career level for which programming skills are not directly required, they pay more for this job (project management or so) and their lives get (maybe) less complicated or complicated in a different way;
2. Code, after all, is not really art and very often it gets transformed in very repetitive tasks: you have “design patterns” because there are things you do a lot of times. Here we’re talking about “vision” too and some companies maybe believe a programmer is just like a factory worker;
3. Programming -after the wide spread of the Internet- is not only a matter of computer scientists but many other fields have been reached: communication, advertising, etc. So, today you can find people with no degree or with “humanities” degree speaking of data structures they met thanks to a computer passion (we live in a post-commodore64 era, not at the first mainframe time): I’m sure they don’t compare themselves to c++ developers but very few c++ developers with pedigree [
] would like to program balls moving on users’s screen, avatar chats, simple PHP/MySQL websites, things where “robustness” is not required and so on. This is to say that not all programming is about low level, bits, security, etc. Programming is today many things and you can meet an engineer totally uninterested in programming (but very interested in show its title and in making money by saying he is an engineer) and a curious person coming from other experiences totally attracted by programming things.
2. Young people study Computer Science because they wouldn’t know what else to do. — This is the reason why I studied computer science but I am good at my job (I think!). On the other hand, most of the guys at my company, love writing code but they suck at it.
3. Young people study Computer Science because they think it’s a sure way of getting a job. — To my detriment, I found that it took me almost a year to find my first real programming job. (I live in the UK).
——
The reason why programmers suck has very little to do with the eight points listed above.
The programmers at my company seem to greatly enjoy programming but they get their satisfaction from seeing the results rather than writing concise, elegant code.
I, on the other hand, take pride in writing concise code, refactor other’s crap code, give obvious variable names, make it fast etc.
——
A crap programmer wants to see the results fast; that gives him a buzz. In contrast, a good programmer cares about the beauty and conciseness of the code.
A good programmer is a bit like a mathematician in that he cares about the beauty of the ideas not about finding a solution quickly.
I have been programming since I was about 12 (BASIC, and then c++, some PHP and quite a bit of Python)…
I’m 18 and in first year of university doing a BSc major in computer science.
All I can say is that I agree with what your saying.. Seems like most people signed up without knowing what programming even is.
I got an A+ in the course, while my class’s average was a C-…
its really kind of pathetic.
The most difficult concept was linked lists =/
I disagree. I do believe programming IS just a job like many others…But I don’t feel like discussing it today, it’s New Year’s Eve.
Kind of a lousy article.
Slashdot is NOT a useful resource for programmers. It’s not a useful resource for anyone or anything.
Well, first: StumbleUpon’d
Second: I’m only in my third year of college in CS, and I can see the decline solely because the introductory classes are in Java. Just last year, one of my friends – who had completed the Computer Organization and Assembly Language class (where they’re supposed to learn C and some Assembly) asked me what a pointer was.
Not to mention a bunch of other stuff, but I must run now~
I agree with most of that, but as someone who just started pursuing their CS degree, I’m not sure if you have to have started in the field by the time you were ten, I started at 14 and I still think that I’ve fostered a genuine interest in programming, some of the best nights of my life have involved staying up till 4 A.M. working on a program.
Honestly… I think a lot of points in that article are really generalized and lousy. My grain of salt…
This field is huge. It can be so many different things to all sorts of people. You can’t grasp all of it, and you can’t expect everyone to value the very same bits of it which you value most. I think it’s great to have a passion and to find a curriculum that actually feeds it. Very few people can be that grateful.
I also personally find that greatness, may it be in sports, programming or stockbroking, tends to be alienating, no matter how admirable it can me. Maybe I’m a bit too touchy about the subject. Ever seen Death of a Salesman? This play tends to come to mind a lot whenever I read articles about being a great programmer.
Have you really asked those people why they’ve enrolled in CS? Have you really listened?
Perhaps if the “vet” programmers weren’t such condescending assholes, people wouldn’t be so bad at it.
I’m one of those people who is more than willing to check Google before I ask on a forum or on IRC. Unfortunately, when the first several dozen pages on Google are of people asking said question on a forum, and getting no response (or the inevitable “RTFM” or “Google it”), asking Google doesn’t help.
Then attempting to ask on IRC, the question is generally (but not always) either ignored or responded with being told to Google it.
By the time a person has reached page 30 of Google, being told to go Google it tends to piss them off quite a bit, and really kills any motivation to continue.
So Google can be a real pain in the ass. OK. There are books out there we can look in to to get some answers.
But which ones? There are hundreds of books on just about every non-obscure language out there, many not worth the paper they are written on. Amazon returns a lot of info about which may or may not be good, but when you start to read reviews and see the claims people are making, the inexperienced person doesn’t know enough about the language to make an informed decision.
And when the inexperienced person asks about which books to get? Junk answers are generally the result.
My favorite is being told to get K&R C (I dropped out of the Java study and started studying C on my own). Why is K&R so good?
The responses I usually get are that it is the best book available. Or because the creator of the C language helped to write it.
But then I have to ask, isn’t this book outdated? Two or three versions of C have come out since then.
The response is that I should just read it anyway.
OK, fine, I should just read it. Just as soon as I have a good source of disposable income that I can take risks with. “It’s the best book out there” isn’t good enough. WHY is it the best book? Why is a book about an old version of the language better than a book about the current version?
And mind you, that goes for every book that people say to read. WHY should we be reading them? Saying they are good books is not good enough. Just about every book out there has been called a “good book” by somebody, and often several somebodies.
Want to know my opinion on why programmers are not nearly as good as they were 15 years ago?
Because information has gotten damn hard to get ahold of. 15 years ago, when all of the “vets” were starting out, there wasn’t so much fluff and cruft surrounding the information they needed. They didn’t have to wade through a swamp of garbage information to be able to find what they needed. The choices were much more limited, and the paths to those choices were much more narrow.
Now, the choices available are myriad in number, and the paths to those choices are wide and filled with holes.
The “vets” always sound to me like they are applying how THEY learned to how to program to the current generation, completely ignoring the fact that the world of programming has changed. It is no longer a niche study, but they continue to treat it as though it were.
Myself, I got into computer science because computers fascinate me. I was elated when I got my first program (not counting the traditional “Hello, World” program, it was a C++ program that added two numbers and displayed the output) to work. Hell, I’m STILL proud of it and still hold on to the source. I get excited when I learn something new about the language I am studying. I eagerly await each new trick that people do with languages and look forward to the day I can start playing with my own tricks.
I am in computer science because it excites me.
But it is damn hard to get reliable information, even when you know what to avoid.
You say that a lot of young programmers now just don’t care. Perhaps it isn’t that so many don’t care, so much as it is that we simply can’t figure out where the starting line is. When you can’t even find your way to the gate, running the race is a sad afterthought.
I was lucky. I had two great teachers who were able, and willing, to help me get started. Yeah, I needed to have my hand held a few times, but that wasn’t because I was unwilling to try.
I’ll get to where all you “vets” are eventually; it’s just going to take a lot more effort for me to wade through all the garbage that lies between us. Just don’t be surprised when the garbage I was in is the garbage I put out.
Either you are terribly exaggerating or there was something terribly wrong at your university.
“Either you are terribly exaggerating or there was something terribly wrong at your university.”
Terribly wrong is correct. There are no actual CS degrees offered. The only thing available are certificates, which, when it comes down to it, mean jack squat.
It’s a small-town community college. They specialize primarily in auto maint., and what they did have for computing was rather poorly designed.
Not everybody can afford a full-scale university.
LoL at this post, ignorance of the author is incredible. Comp sci is like, dying… No one survives in comp sci if they take it without interest. If they did at your school ur school is a joke
Your’re a whiney idiot and none of the above is true. You’re just claiming bullshit and exaggerating some individual cases. No real university has people like that longer than 1-2 semesters max.
Most of these problems would not exist of CS courses were rigorous. The “pass rate” in CS degrees should resemble a rate of survival, rather than a rate of progression.
Schools dropped the quality of their courses to accommodate the demand for programmers, and now everyone is paying because the quality of work has declined. Dramatically.
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.
I’ve always said that real computer programmers aren’t made… they’re born.
Most of the top level computer programmers I know don’t even have a technical degree: they’re music majors, patent attorneys, English majors… Everyone that I know that has a CompuSci degree is terrible at what they do.
most people study computer science because they dont has any choice and the enroll requirement was to lowest if compare to other course
Ditto designers.
I agree with your premise but I think your criticism could just as easily be leveled at any professional field. Most people are lazy, and they don’t have passion in their work. This isn’t something that affects just the computer industry.
The programmer I work with is self taught- never went to school for one day- and he is absolutely fabulous.
He has worked for EDS and is now a full on programmer for a Natural Gas consultancy.
I think what makes him good is that he keeps expanding his skills- and takes on projects that stretch him.
Always learning- but not once in a university classroom…
Hey there!
Though I agree with most of what you said (most of the new students in my degree just goes thinks “I love to play Halo and GTA, I’ll handle computers!), I think you’re being too narrow in considering computer science = programming.
I love to be a computer scientist (have an MSc, doing a PhD) and I know that I love computers, I love development, I love analysing and planning, I love knowing how everything works in the digital, I love Windows, Linux and Mac OS X and yet, I don’t really love programming. I am not a hardcore programmer. True, I like to code, I like to develop new software and try new technologies and solve distinct problems what novel strategies. But programming, that’s just a subset of computer science.
I love my job. I love being a Computer Scientist. I (only) like programming. I bet there are brilliant computer scientists that can’t understand the usage of assert() in Java and that doesn’t limit the quality of their work!
As Pedro has also stated, I feel that you cannot equate someone in Computer Science with programming. Programmers are a subset of Computer Science, and does not equate to Computer Science.
As you should know, Software Engineering is not all programming either. As a matter of fact, programming is one of the easiest parts of the process. I have fell in love with the art and creativity of software to fix problems and the design process of software. I however, am not in love with programming. I don’t hate it… but it’s apart of my job, not a passion I pursue.
There is a difference between a software engineer and programmer, and please recognize that in your article. You continue to criticize CS folks for not being good programmers, even if they have no intent to program professionally.
No offense intended, but this comes off as an extremely narrow-minded, arrogant article that puts everyone in Computer Science in a box, when the program is meant to encompass many disciplines, not just programming.
There is one catch: actual CS as a degree is NOT easy to get if you get a real BS of computer science at a decent or good university. So you can’t say lousy people with CS degrees are dumb or mentally lacking in any way. Anyone who can get a CS degree with good grades is a smart cookie, and could be a good programmer if they just cared about it (meaning they have to have a natural interest as well as the IQ). Also, you say “programmers.” A lot of programmers out there, both great and lousy ones, have degrees in everything under the sun except CS. I know a lot of programmers with Information Systems degrees, which don’t teach squat for math or neck-deep science, and I even know plenty who don’t even have computer degrees.
Also, I have to disagree with your statement that a good programmer essentially has to be a child prodigy. 10-years-old? Feasible, but expecting that from every CS major is not reasonable.
Yes, when i read your entry, i think yes. Because if IT is hot job so everybody follow. Now i studying in Aptech, i like have a computer when is a child, but when i 18 years old, lucky, i has it. I like programming, i like create something big like game, OS, but sometime i boring because to Programming very difficult, sometime i don’t know what i need, Code, code again, code much but bug, error.
I was with you, till the end.
I have been programmign a LONG time professionally (25 years) and for fun before that – so I get where you are comign from… but you date yourself with the references to usenet and Slashdot.
It has been a LONG time since Slashdot was even remotely relevant to the “technical community” and even longer for Usenet. Stackoverflow.com? Sure. Twitter? Definitely… things change.
When we measure someone on their skill it makes sense… when we decide they aren’t real programmers because they don’t virtually hang out the places we think are cool? Thats just bias.
Ken
This post is 3 years old. StackOverflow wasn’t even there yet, and Twitter was in it’s infancy.
The mark of a good programmer, like in all fields of work, is that they never stop challenging themselves. They make a lot of mistakes, but it’s those mistakes, those failures, that leads them to success and self-assurance. And they know it.
Boatloads of confidence helps because the more of it you have the more likely you’re to tackle new problems and get back up after a failure.
[...] Jabbar: Why Most Programmers are Lousy. If you’ve ever experience a bad programmer, now you know [...]
I think this can be applied to any career/job a person does. If you don’t like what you are doing or get stuck in a field before you knew what you really wanted to do then…well you do only what you need to do to make a pay check.
OP, it’s an interesting theory, but very subjective really. If this is your commercial experience, then it’s your problem I guess. If the programmers you’ve worked with don’t understand the fundamentals of programming, then isn’t that down to the development manager? If you aren’t that manager, or don’t have any input into the hiring process at this point in your career, doesn’t that just reflect badly on you and your organisation? Is that what you’re grumpy about? Also on the technical community issue, the references are just plain out of date.
“Young people today!”.
I think the biggest problem that was overlooked here is that most “real programmers” don’t program as a day job, and most of these people don’t have a formal education in programming. I taught myself how to program when I was 13 years old, and continue to learn and enjoy programming. In high school, most people in the programming class were just there to be able to check their email through class time, or because they thought, without much training, they could make an amazing game. I’d assume the same ideology can be applied to post-secondary education.
When I took the high school courses, I ended up becoming a teacher’s assistant (TA) because I knew the material better and could teach it more intelligently than the teacher.
Most of the programmers I know from around the globe haven’t taken formal computer science courses, and don’t want to pursue it as a career (with a few exceptions, of course) – I think it’s mostly because when it’s a job, it’s no where near as fun as a hobby-project.
my father is a computer programmer for Alwill Software and it is a high paying job.,~
so what! do you know have many people can do sport but dont do it as a career? who wouldnt do a course to get a friggin job so you ca afford your own damn bills?..lol
my job as a computer programmer is a very satisfying job ”
Parts of this article made me cringe, not because it’s poorly written but because I genuinely know people who have taken CS as a degree without giving the foggiest about programming.
I took CS because I loved programming and computer architecture and did it both hobbyist and academically (for my A-levels). Yet I know people who were in the same year at me who didn’t understand programming, took all the project management/UML/business units and came out with a decent-ish degree because there wasn’t enough programming in the core units of the course. The way the degrees are calculated you could get 40% (minimum PASS in the UK) and still end up with a high grade based on how the rest of your degree was calculated.
Genuinely a travesty… I loved that for 1-8 I can say ‘that’s not me’ – a well written article and a thumbs up from me.
“In other words, I don’t think it’s pos si ble, nowa days, to become a great pro gram mer if you didn’t start get ting some inter est in the field when you were very young, say about 10 years old (with the due excep tions, of course)”
Oh, excuse me sir for being too poor growing up and not having access to computers until I was like 16. So only rich people from 1st world countries get be be great programmers, I get it. AMAZING!
I think a lot of people still are leaving out the problem of demand. The IT industry even through this bad economy has had a high demand for developers. I am not talking about high level managers. I am talking about Senior Developers and lower. As long as the demand remains high it becomes easier for people to get hired. This is kind of off the cuff and I don’t have any statistics to back this up at the moment, but it sure seems like developers have an easier time finding a job nowadays then some other professions.
This article reflects the lack of professionalism that our industry is known for.
It’s good to be eager or passionate about one’s work, but the attitude expressed in this article is ridiculous. I personally think that there is a place for developers with a range of skills, goals, and motives. Think about it, do you want to develop cookie-cutter CRUD apps the rest of your life or should this type of task be given to a less-experienced programmer? If you’re so passionate about your job, then why not try to inspire or mentor some of the less-experienced programmers instead of whining?
I think that the immaturity amongst our ‘top’ developers is the real problem with IT; the fact that we have individuals with differing motives and skill-levels isn’t unique to our industry. We should realize that people can contribute in different ways and not everyone is motivated by the same things. Throughout one’s life, interests and motivation may (or may not) change.
It’s sad to see this attitude is perpetuated; I hope that the new developers out there don’t get the wrong impression of how one should act in their new role.
100% agree, my friend.
As I was reading through this article the only thing that struck me was the elitist attitude of the author. “If you don’t start programming before 10 you’re bad.” “If you don’t spend all of your free time on programming internet sites, you’re bad.”
All complete bullshit. To be a programmer is to be a problem solver, not a “code machine”. Humans are natural problem solvers. I believe anyone could be a passable programmer given the effort, granted with differing levels of aptitude as is the case in any field.
To write off someone because they’re new to programming, or new to a language, or new to a coding standard- is beyond blind. You should relish in the opportunity to see a problem through this fresh set of eyes, not deride them because you think programming should be some sort of “secret club.”
And the final line: “but all falls down to numbers.” Yep I think that about sums up this post. 0/10. I hope no prospective programmers have to deal with someone like you as they try to navigate the field, as they’ll obviously be left wanting.
the thing is this wannabe so-called uber alles programmer is sometimes breaking the market with their ultra stupid low payment/charges and prices. Thus demand and supply will benefit them although the customers with no prior programming knowledge don’t know that they are not that good, as long as the project/system is delivered on time.
iam a old fart who was really intrested and into programming over 25 years ago but the timing and family got in the way so now days am miles behind and way out of touch with what some programmers can do.I agree with most that some well most seem to have no idea and bang out sites with say 100s of games/apps on it,even thou there all rubbish it seem to keep the punters happy for 5 mins or so then they move onto the next thing for 5mins etc.staying on that site and making it money .
well i thought is this it just 1000s of sites with rubbish on.
then i met 4 bros. who to be honest with u inpressed the hell out of me with there understanding and committment to learning how to use the code out there to make proper apps/games that looked good(no java)worked has it should like in the real world and not be greedy about making loads of money for the hell of it .this is there history http://www.memirsoftware.com/history.html
has a team they were great and both there main site were doing really well a few years ago thesnookerclub.com and thepoolclub.com then they went seperate ways and now only 1 of them runs both the sites plus he has just made flash pool on facebook which really does rub it in the faces of other flash c… ive seen i never thought u could make such a good game with flash untill i saw that.
but you go to these sites now and ipool is hardly surviving and isnooker is going the same way y?
because thats all they are 1 site is pool other is snooker no fancy this or that,so punters get bored and leave.so moral of the story is do u make 1 brill program or bang out 100s of useless stuff.well a true programmer doesnt care about money thats all they want to do,just a shame that when offered help to say promote or update or just help there site progress,they look at u with a blank stare,and you think wow ok you got the brains but you got no idea on how the real world works lol.
reason for me to write all this sorry its so long i would just like us to remember those great programmers out there who have just disapeaed in the great net of nothingness long live them ,and soon ill add these site to that list too i fear.
mind you thanks to web.archive.org/ at least in years to come people can log on and see how the internet and sites were like back in our day.
Very incitefull as to the reasons. I would like to add, that most don’t have the appitude, period. If a person liked geometry, they probably make a better programmer. Management, with the ‘point and click’ mentality in corporations have no idea, they want cheap out sourced labor. The Asian-Indians are no smarter and maybe dummer than Americans due to the compliant attitude that comes from the ‘Hindu’ culture but its been marketed well, that somehow they are ‘better’.
I’ve been doing this for 20 years and still get paid well in a niche market.
It hard to find ‘programmers’ anymore that can actually ‘do it’.