I felt a desire to argue against this quote, but of course a better idea would be to ask what it means.
I’m guessing that “practice” means “the way people are solving this problem now,” while “theory” means “the study of what makes a problem-solving method good.”
If theorists invent some method that they think is good, but which has already been rejected by practitioners, then I would guess that the theorists have a wrong notion of “good,” and they should update their theory on the evidence. If the theorists invent a new method, then there is a chance that it is an improvement, and it may catch on.
Torvalds is an engineer applying engineer’s thinking, and here “practice” means engineering. The context was problems with a particularly awful API that just wasn’t fit for purpose, but which had twenty years’ encrusted usage to work around. He was responding to an ext4 filesystem programmer who was complaining that KDE4 users suffering dataloss on ext4 just weren’t using the bad API the way he thought they should, even though other filesystems did not exhibit the dataloss.
I must confess that, reading the email, I don’t see how he derives the last line from what he’s saying above … it doesn’t seem to follow from taking about a 20-years-encrusted SNAFU. Perhaps it does follow from a programmer demanding people use an API the way he thinks they should, rather than the way everyone conventionally had for two decades. Real-world use winning over abstractions of how things should be:
So rather than come up with new barriers that nobody will use, filesystem people should aim to make “badly written” code “just work” unless people are really really unlucky. Because like it or not, that’s what 99% of all code is.
It is, however, a widely-quoted statement—it resonates with people somehow. This is not, of course, the same as constituting or being about rationality.
It’s about rationality on the grounds that the filesystem programmer had lost sight of the necessity of winning; in this case, putting out code that actually works, rather than code that makes the programmer feel good.
It’s painful to write clunky APIs, and pleasant to write elegant APIs… but that doesn’t mean much if your elegant code would just be thrown away on release because everyone’s already using the existing API.
If your beliefs are defeated whenever they clash with reality, then you have attained a mastery of rationality that very few humans achieve. Torvalds’ quote looks to me like an “is” statement rather than an “ought” statement, so I can’t agree with your interpretation.
He’s talking about the status of the code in question in his Linux tree, the one everyone in the world pulls from, so in that context he does in fact have the power to make his opinions reality …
I don’t think that quite jives. The situation seems to be the opposite: Torvalds’ practice (the Linux code base, and its quite healthy community of contributors and users, who would be annoyed if ext4 programs stopped working suddenly) is winning against theory (the notion that the API policy of the Linux kernel should be revised more in favor of elegance over compatibility).
I’ve been assuming that this subthread is about gerg’s interpretation. Are you claiming that interpretation is correct, and offering some clarification, or are you just offering a different interpretation?
The former. Gerg’s interpretation is about the map and the terrain, and it seems to me that “the actual codebase in its practical usage” associates closely with “the terrain”, while “ideas/predictions about what would make the API more elegant” associates closely with “the map”.
Tovalds doesn’t have direct access to the reality of his users, but he does have direct access to the code they use.
Interesting nuance. You have taken “loses” to mean “defeated”, presumably leading to “and therefore updated”; I agree that this is by no means an automatic process. But I took “loses” to mean “is less accurate” (which of course makes my interpretation more tautological).
If theorists invent some method that they think is good, but which has already been rejected by practitioners, then I would guess that the theorists have a wrong notion of “good,” and they should update their theory on the evidence.
Practitioners can reject an idea for wrong reasons—for example, because it seems weird and runs contrary to how things were always done.
In my experience, most people who say something like this mean “To hell with your longer-term thinking, look at the short-term success my short-term thinking has got me!”
Thanks for the reference, I hadn’t heard about that controversy before. Reading this article linked from that WP page reduces my respect for Torvalds a fair bit.
Luckily for everybody, though, the end result of the kerfluffle was the excellent git software.
| Theory and practice sometimes clash. And when that happens, theory loses. Every single time.
-- Linus Torvalds
I felt a desire to argue against this quote, but of course a better idea would be to ask what it means.
I’m guessing that “practice” means “the way people are solving this problem now,” while “theory” means “the study of what makes a problem-solving method good.”
If theorists invent some method that they think is good, but which has already been rejected by practitioners, then I would guess that the theorists have a wrong notion of “good,” and they should update their theory on the evidence. If the theorists invent a new method, then there is a chance that it is an improvement, and it may catch on.
Torvalds is an engineer applying engineer’s thinking, and here “practice” means engineering. The context was problems with a particularly awful API that just wasn’t fit for purpose, but which had twenty years’ encrusted usage to work around. He was responding to an ext4 filesystem programmer who was complaining that KDE4 users suffering dataloss on ext4 just weren’t using the bad API the way he thought they should, even though other filesystems did not exhibit the dataloss.
I must confess that, reading the email, I don’t see how he derives the last line from what he’s saying above … it doesn’t seem to follow from taking about a 20-years-encrusted SNAFU. Perhaps it does follow from a programmer demanding people use an API the way he thinks they should, rather than the way everyone conventionally had for two decades. Real-world use winning over abstractions of how things should be:
It is, however, a widely-quoted statement—it resonates with people somehow. This is not, of course, the same as constituting or being about rationality.
It’s about rationality on the grounds that the filesystem programmer had lost sight of the necessity of winning; in this case, putting out code that actually works, rather than code that makes the programmer feel good.
It’s painful to write clunky APIs, and pleasant to write elegant APIs… but that doesn’t mean much if your elegant code would just be thrown away on release because everyone’s already using the existing API.
My first reading of this quote was essentially “the map loses to the terrain”. I interpreted “theory” as “our beliefs” and “practice” as “reality”.
If your beliefs are defeated whenever they clash with reality, then you have attained a mastery of rationality that very few humans achieve. Torvalds’ quote looks to me like an “is” statement rather than an “ought” statement, so I can’t agree with your interpretation.
He’s talking about the status of the code in question in his Linux tree, the one everyone in the world pulls from, so in that context he does in fact have the power to make his opinions reality …
According to gerg’s interpretation, you’re saying that Torvalds’ theory wins against practice, which contradicts Torvalds’ statement.
I don’t think that quite jives. The situation seems to be the opposite: Torvalds’ practice (the Linux code base, and its quite healthy community of contributors and users, who would be annoyed if ext4 programs stopped working suddenly) is winning against theory (the notion that the API policy of the Linux kernel should be revised more in favor of elegance over compatibility).
I’ve been assuming that this subthread is about gerg’s interpretation. Are you claiming that interpretation is correct, and offering some clarification, or are you just offering a different interpretation?
The former. Gerg’s interpretation is about the map and the terrain, and it seems to me that “the actual codebase in its practical usage” associates closely with “the terrain”, while “ideas/predictions about what would make the API more elegant” associates closely with “the map”.
Tovalds doesn’t have direct access to the reality of his users, but he does have direct access to the code they use.
Interesting nuance. You have taken “loses” to mean “defeated”, presumably leading to “and therefore updated”; I agree that this is by no means an automatic process. But I took “loses” to mean “is less accurate” (which of course makes my interpretation more tautological).
Practitioners can reject an idea for wrong reasons—for example, because it seems weird and runs contrary to how things were always done.
I don’t think so. Many, many common practices would be improved by some properly applied theory.
“properly applied” qualifies it as practice
In my experience, most people who say something like this mean “To hell with your longer-term thinking, look at the short-term success my short-term thinking has got me!”
That’s a good point. However, Torvalds specifically has got some solid long-term success as well to his credit.
And in programming in particular, I think there’s a lot to be said for avoiding elegance creep.
Sure, but I think the same category contains his disdain for the “license purists” who criticized his choice of BitKeeper.
Thanks for the reference, I hadn’t heard about that controversy before. Reading this article linked from that WP page reduces my respect for Torvalds a fair bit.
Luckily for everybody, though, the end result of the kerfluffle was the excellent git software.