rbandrews: (Lambda)
[personal profile] rbandrews

Computer science is perhaps the only profession where most people not only see no need to learn theory, but actually consider it bad.

In any debate about programming languages/tools/techniques, someone is going to say "that's too hard for the average programmer" or equivalent. The "average programmer" apparently learns one language, and uses it to do his job in one way, at one level of abstraction. Anything more is ivory-tower nonsense that your co-workers will hate you for forcing on them. Any study of computing history is right out.

Try to imagine an equivalent "average" anything else. An "average biologist" would have no idea who Charles Darwin was, or why speciation happens. An "average architect" would make big brick cubes, all post-and-lintel, and say that arches would take too much time to build. An "average" anything else would get laughed out of the room. At my company, I can swing a cat and hit ten programmers who have no clue who Alonzo Church was.

You can make the argument, and a lot of people do, that there's a difference between "computer science" (theory) and "computer programming" (practice). It's sort of like saying that an average biologist is a farmer; he doesn't need to know anything about Mendel, or why an F1 cross is good, just that it is. There are two problems with this, though, that make programming different:

First is that if there's a difference between theory-programmers and bricklayers, then you need both. Having just bricklayers doesn't let you keep up with the Joneses in your industry, because bricklayers (by definition) don't invent anything. You need to know how things were made in order to make new things.

The other is that your theory-programmers will inevitably make the bricklayers obsolete. Bricklayers only work at one level of abstraction; real programmers abstract away everything they can, making programs that write programmers that write programs. Eventually the thing your bricklayers do will be done automatically, and they will have to learn something new, and they won't know how to. What use is knowing how to write a bunch of code to map to database tables now? When I was in high school, it was a significant portion of the code of any web app.

So: hire just bricklayers, you stagnate. Hire both, and the bricklayers become useless. Hire theorists, and you can change the game.

If you program, study theory or die.

TCon post soon. Ish.

Profile

rbandrews: (Default)
rbandrews

July 2024

S M T W T F S
 123456
78910111213
14151617181920
212223242526 27
28293031   

Style Credit

Page generated Jun. 26th, 2025 05:35 am
Powered by Dreamwidth Studios

Expand Cut Tags

No cut tags