One could say it works both ways. developers do not fully understand the user's needs and it's all about "look at this new code! so cool!" while the users are going "just fix it you stoopid geek" etc.
But Linus has a good point about end users. You could have the most fantastic recursive whale saving algorithm (which unlike Johnny's algorithm, uses B+ trees instead of linked lists and heaps somewhere) on the planet but it is no good if your target audience cannot use it. If the target audience can use Johnny's algorithm but not your more super efficient one, they'll use Johnny's algorithm even though it is a hundred times slower.
A classic example is Heidi Eraser - was a fantastic product until the head developer guy decided to use .NET (in version 6.0) and now when people complain about it he ignores them and just goes "Oh the code's a lot better and much cleaner than before and it doesn't matter what the end user thinks..." and shit. Sure the code *might* be better but now you have a huge runtime, shit that runs in the background, and a crappy and difficult to use interface. And you've lost Windows 2000 support. Needless to say now I am writing my own erase utility since even that is an easier task than attempting to use their stupid interface. While that is being written I'm sticking with the older version.
This also brings me to another thing about massive changes in code: if it ain't broke then don't fix it.
I agree with Linus on this one.
On Wed, 28 Sep 2011 13:56:52 +0400 Aleksey Bragin aleksey@reactos.org wrote:
FYI:
This is Linus' interview. http://h30565.www3.hp.com/t5/Feature- Articles/Linus-Torvalds-s-Lessons-on-Software-Development-Management/ ba-p/440
He very correctly outlines many things. One of the most important: "The other thing—and it's kind of related—that people seem to get wrong is to think that the code they write is what matters. No, even if you wrote 100% of the code, and even if you are the best programmer in the world and will never need any help with the project at all, the thing that really matters is the users of the code. The code itself is unimportant; the project is only as useful as people actually find it.”
And this: "Way too many projects seem to think that the code is more important than the user, and they break things left and right, and they don't apologize for it, because they feel that they are ‘fixing’ the code and doing the right thing.”
WBR, Aleksey Bragin.