Well, I can't entirely agree, because you have to worry about all of it. And for that matter, one of the things I love about programming is the switches through different levels of abstraction and size that jump quickly from thinking about nanoseconds to thinking about months, and back again.
However, the higher things are more important.
If I've a flaw in a couple of lines of problems that causes incorrect behaviour, it probably isn't too hard to fix. If it's causing it to under-perform, it probably doesn't even matter.
If I've a flaw in the choice of data structure in a sub-system, that causes incorrect behaviour, it's a much bigger problem and harder to fix. If it's causing it to under-perform, it could be quite serious or if bearable, still appreciably less good than a rival approach.
If I've a flaw in the relationship between the most important data structures in an application, that causes incorrect behaviour, I've a massive re-design in front of me. If it's causing it to under-perform, it might be so bad that it would almost be better if it it was behaving wrong.
And it'll be what makes finding those lower-level problems difficult (fixing low-level bugs is normally easy, it's finding them that can be hard).
The low-level stuff is important, and its remaining importance is often seriously understated, but it does pale compared to the big stuff.
18I think this question probably has multiple answers that are equally valid. But it's a good question anyway. I love that quote. It expresses why I don't understand programmers who worry about switching languages. It's rarely the language that matters in a program, it's the data structures and how they relate. – Ryan Kinal – 2012-08-31T18:18:23.370
5Maybe if you take the time making the data structures "elegant" then the code doesn't have to be convoluted to deal with these data structures? I'm probably too dumb to really know the meaning of Torvalds' quote. :} – programmer – 2012-08-31T18:33:06.503
2@JasonHolland That's pretty much it. Once you understand the data structures, the code is almost irrelevant. It becomes a matter of memory and/or reference. The complicated and interesting part is conceptually figuring everything out. I often solve problems and design solutions away from the keyboard. – Ryan Kinal – 2012-08-31T18:59:31.787
3@RyanKinal But of course the language does matter, because it makes it considerably easier to deal with and think about certain data structures. Think about all the languages that specialize in LISt Parsing, for example, or languages that have native support for data structures that have to be hacked into other languages, (sets and sparse arrays come to mind). – kojiro – 2012-08-31T21:22:33.207
83Torvalds is not alone in this, by the way: "Show me your flowchart and conceal your tables, and I shall continue to be mystified. Show me your tables, and I won't usually need your flowchart; it'll be obvious." – Fred Brooks, The Mythical Man-Month. "Show me your code and conceal your data structures, and I shall continue to be mystified. Show me your data structures, and I won't usually need your code; it'll be obvious." and "Smart data structures and dumb code works a lot better than the other way around." – Eric S. Raymond, The Cathedral and The Bazaar. – Jörg W Mittag – 2012-09-01T02:10:48.193
1IMHO it is referring to functional aspect of programming. – Sid – 2012-09-01T18:23:57.010
1@kojiro Language will, of course, matter for implementation, but there are very few times when you can't express your solution in whichever language you want. Some might be more difficult, or you may have to modify your solution slightly, but it usually doesn't matter much at all. – Ryan Kinal – 2012-09-04T13:13:30.280
Very profound quote, and true in many dimensions. Is it smart to write the CSS before the HTML? – MathAttack – 2012-09-23T13:57:44.233
Does anyone have an example of a problem solved in each of the two contrasted styles, maybe a kata, which would make the idea concrete? – Jonathan Hartley – 2012-09-23T18:45:04.153
4This explains why the Linux kernel is a mess :) – l1x – 2012-09-24T05:34:36.110
1I have a friend who used to use another quote that I like even more: "Most programmers think about things in terms of how they work. Great programmers think about them in terms of how they break." – Eric Burcham – 2013-03-11T17:52:03.643
I would also add Dijkstra's remark that "...our intellectual powers are rather geared to master static relations and that our powers to visualize processes evolving in time are relatively poorly developed." – Dave – 2013-08-22T21:22:09.360
recommended reading: Discuss this ${blog}
– gnat – 2014-04-14T06:56:41.253