Hacker News new | ask | show | jobs
by Tloewald 4571 days ago
Seems to me like none of these descriptions is an actual terrible programmer (well maybe the "illiterate" or "stream of consciousness").

Actual terrible programmers write incredibly bad code. Their motivations are generally not the problem. I'd probably come up with a taxonomy like this:

The approximationist -- writes code that kind of does what was intended, and then writes more code to get closer to the intention, and then more code to get closer to the intention, and then more...

The design patternist -- writes implementations of design patterns instead of implementations of the specification.

The classicist -- related to the overnormalizing database designer, breaks EVERYTHING down into classes.

Etc.

And that's just covering terrible CS graduates.

1 comments

Really? I'd love to have people that focus on design patterns and nice classes. Sure, it'd suck to go overboard, but I've too frequently been stuck with people who use single letter variable names and 10 level deep for loops.
I love code that does what it's supposed to and can be understood and maintained. If design patterns contribute to that, great. But a lot of the programming I see is makework that lets mediocre programmers feel productive while at best not contributing to the project, and at worst (and more commonly) burying needed but poorly implemented functionality in a writhing mass of crap.

In general, I find people who use crappy variable names also write code that doesn't actually work.

The classicist and patternist use insanely long variable names (index or iterator or myForLoopIterator instead of i, say) that convey no information and write code that doesn't actually work and, frequently, fails in convoluted ways that separate cause from effect by splitting implementations of simple features across multiple functions, classes, and/or source files.