Hacker News new | ask | show | jobs
by eurleif 4471 days ago
>How does this claim square with sites like the Daily WTF, which provide evidence that many gainfully employed programmers do not, in fact, use their brains very much? With the more or less weekly announcements of "security breaches" caused by people ignoring basic best practice, for instance storing passwords in plain text?

I take many people being bad at programming as evidence that programming is hard, not that it's easy. Maybe it's evidence that getting a programing job is easy, but that's not the same thing.

2 comments

> I take many people being bad at programming as evidence that programming is hard, not that it's easy.

We are in violent agreement. Note that "hard" is not the same as "abstract and intellectually demanding". Running a marathon is hard. Becoming a US Marine is hard. Many things are hard that do not primarily require quasi-mathematical skills.

For that matter, finding gravitational waves is hard but may be just as much about investing enough money (think space-based laser interferometry) or just plain luck.

The ways in which people suck at programming are much more diverse than just a failure of abstraction, otherwise we would all be writing Haskell.

These ways include failure to ask what the user or sponsor wants, failure to make sure we've understood what the user or sponsor said, failure to communicate with other members of the team, failure to question the things we learned in school and always took for granted. All of these are common failure modes in the biz, none of them are a failure of abstraction.

In fact excessive or premature abstraction is a widely recognized failure mode of software engineers, and the myth is responsible in good part for that.

You didn't just say "highly abstract", you also said "intellectually demanding". You only seem to be addressing the "highly abstract" part now. All of the failure modes you mention sound like failures of intellect to me.

Also, common failure modes of people working as programmers != common failure modes of people trying to become programmers. Even if most people working as programmers understand the abstractions involved well enough to function (and I'm not certain that's actually true), the abstractions may still be too much for many other people.

>In fact excessive or premature abstraction is a widely recognized failure mode of software engineers, and the myth is responsible in good part for that.

Part of really understanding abstractions is knowing when not to use them. And since, as you say, many people have trouble with that, understanding abstractions must be tough.

I take it as evidence that we are doing it wrong. I can only hope that in 50 years time people will look back and wonder how we managed to get it so wrong.