Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

In contrast with the author's point of view, there is research that suggests that the ability to program is dependent on an ability/desire to form consistent mental models. The actual paper is at [1] while Jeff Atwood's write up that's been linked to from HN before is at [2].

  [1] http://www.eis.mdx.ac.uk/research/PhDArea/saeed/paper1.pdf
  [2] http://www.codinghorror.com/blog/2006/07/separating-programming-sheep-from-non-programming-goats.html
[edit: formatting]


I've seen that trotted out before and my offer still stands: bring me the person that I can't teach programming at a level high enough to hold a job down provided they're willing to put the time in and willing to learn.

I pretty much guarantee you that I can do it, I have not found someone that I could not teach how to write code.

Desire is the key here, ability is very much overrated, but hey, it makes 'us' feel special right?

What about lawyers, do they get to feel special? Engineers? Mathematicians? Bookkeepers?

Really, it's just a matter of degree, and just like everybody (except for the rare case of tone deafness) can learn to sing to their ability everybody can program to their ability limited by how much time they put in and how motivated they are.

Nobody here was 'born a programmer' we became programmers by applying ourselves to a series of problems of increasing complexity, if you compare you 'the programmer' with 'you the 4 year old' then for sure there are differences there but they are very much about learning and not about innate ability.


My freshman year of college, I was working with a person in the introductory programming course. We worked together for hours at a time. I'm, by nature, a very patient person and was willing to let this person work through the problems and figure them out. However, at the end of the course the person was none the wiser about how to program (even basic things).

This person changed majors to another engineering discipline and is doing great in that field. It still requires the same engineering-esque reasoning skills.

By no means am I the perfect teacher nor does one anecdote make a data set. However, because of that experience, I am very much inclined to believe that there are very smart people that just do not have the inclinations needed to become a programmer.


Interesting story, thank you!

Were they interested in the work? Was their ambition to get in to programming (was that the major they wanted to go for)? And if so what was their motivation to do so? I've found that fascination with technology helps a great deal here, if you are not typically intrigued by how stuff works and like to puzzle then programming will probably not be the kind of challenge that you take to.

I remember when I first learned (or tried to learn) to program. For weeks I was just looking at the book without any progress whatsoever, finally it clicked and when it did it was like 'oh, that's how it works'... After that it came easy (most of the time, at least). But if I had quite in those first few weeks I would have literally gotten nothing out of it but a bunch of frustration. So I would presume that it is possible for people to get stuck in that particular phase for a long time.

Maybe it's the programmer equivalent of being 'tone deaf'?


I think your argument is flawed. Programmers do think differently. It is similar to the difference between a shy introverted person with few friends and an outgoing extroverted person with many friends. A great salesman could take the introvert and get them used to more social interaction. The introvert could learn about all kinds of social cues and ways to connect with people in any situation. So then you say that there is no difference between an introvert and an extrovert - look at how many friends the introvert has now!

There are many people in this world that don't use analysis and logic in the same way that programmers do. That doesn't mean they can't learn, but the fact remains that many non-programmers currently do not think the same way.

I do think most people are capable of programming, but I think it is misleading to say that "programmer thinking" is something everyone already does.


Just because you can teach anyone to program doesn't mean that certain personality types don't gravitate or acclimate to it more readily than others. I agree that conversations about the differences do contain an air of superiority, but it doesn't mean the generalization is false.


I agree that motivation can counteract for lack of talent, but I do not think that is as absolute as you make it here.

No amount of effort would have made me run the 100 meters within 11 seconds. Sure, there is a level I could have reached, and one could call that running, but I couldn't have made a living from it.

Qualitatively, I think programming is similar. Quantitatively, it is different; many more people can get a job as a 'programmer'. Nevertheless, I still think there are people who couldn't work hard enough to compensate their lack of talent to get one of those jobs.

And of course, the number of programmer jobs in the world depends on one's definition of programmer. At one extreme, HTML and Excel are programming languages. At the other end, there are maybe a couple of thousands of programmer jobs in the world.


Programmers do 'competitive sports', code golfing and what not. Sure there is a level that you can reach, but you can't make a living with code golf no matter how good you are.

Excavator jockeys hold egg peeling contests, and of course you need to be really good at that to be able to even begin to control a 30 ton excavator to peel an egg without squashing it.

The only reason you can earn money with running is because:

(a) everybody can do it (so we can all appreciate a good runner)

(b) we can judge your expertise by the clock (in 1/100th of a second, as if that matters)

But in the end that's very likely a large amount of innate ability and an even larger amount of training. Setting aside your life to be able to run a world record is in itself not worth anything to anybody - if you fail. But if you succeed we will place an inordinate amount of value on that because of media exposure and national prestige.

Running by itself has little to no value, even very fast running (unless you're trying to get away from that cheetah).

Programming is a useful thing, at almost every level of skill and the more you do it the better you become.


Anyone can hold down a programming job without being able to program. That's unfortunately one of the main issues in the industry. Most 'professionals' are complete rubbish.

You can "teach" anyone to play the piano. But only a small % of them will be able to play it well.

Difference is, anyone can tell if someone is a great pianist, but being a great programmer is much harder to measure.


"...at a level high enough to hold a job down..."

Don't you think you're setting the bar a bit low?


No, not really. Is that a 'no true Scotsman' argument in the making?


No. Being able to program is not really a requirement for holding down a programming job. I have honestly worked with "programmers" on dev teams who never actually got a line of code into the product -- because thier code was always gibberish that barely compiled, didn't actually do anything, and was easier to just rewrite. Somehow they made management happy so continued to get paid.


Sounds like you should move to better employers :)


I have -- thanks :)

However, the point still stands: unfortunately this is an industry where being able to adequately perform the tasks is not a job requirement, therefore holding down a job is not a good measure of skill.


I'm quite surprised by that because that would seem to be pretty counterproductive and is not going to help those companies one bit. Most companies have a profit motive and would not be able to achieve their goals if they went about hiring people like that. I also honestly do not know of a single place where the programmers are not able to actually produce working code, though I definitely have seen various levels of expertise on display.

The most interesting little group of people are three friends that I know, one started out doing electronics, I taught him how to code, he taught one of his friends and they together taught a third guy (who was a pizza courier at the time!) and together they now run a very profitable software company.

And they're all pretty good at what they do, and they would never hire someone that was not able to hold their own.

I've worked at a bank long ago, and definitely the number of people working there that were 'adequate' but not 'great' was larger than elsewhere but there were a couple of guys there that would definitely give you a run for your money.

Typically they'd gravitate to 'systems programming' and the others would be 'application programmers'.

In an symphony orchestra I guess there would have to be a first violinist and 'others', and in carpentry there are cabinet makers and 'general' carpenters. Not everybody will end up being equally good at their job.


Sure, this is true and logical, and actually observable in small/medium companies. In large companies, or companies where software is not the focus however, there is very much room for this sort of counter-productive behavior/effect.

In the middle management tiers, and in the "non-mission critical, support divisions" the company goal and money making are easy to lose sight of. There is a lot of politicking for personal gain, and the employees have a tendency to not care about the company and maximize ways they can personally benefit. This is the land of the programmer who can't code. He exists as a warrior in the landscape of barely competent people with nominal jobs, carving out little empires for themselves and doing things that actively hurt the overall bottom line.

I think maybe jacquesm, you have been a good, motivated programmer surrounded by other good, motivated programmers for long enough that you have forgotten the world isn't entrepreneurial, that most people do the bare minimum at "work, cuz thats why it's called work". This isn't a criticism so much as a reminder of the rest of reality :)


>they're willing to put the time in and willing to learn.

People who can't learn programming will quickly decide it's not worth putting their time in--this criteria will select out those people you are looking for...




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: