Dahl on Software
Ryan Dahl, whose work on node.js is important, loses his temper about the state of software today.
I hate almost all software. It's unnecessary and complicated at almost every layer. At best I can congratulate someone for quickly and simply solving a problem on top of the shit that they are given. The only software that I like is one that I can easily understand and solves my problems. The amount of complexity I'm willing to tolerate is proportional to the size of the problem being solved.
I know the feeling, but it’s wrong.
We are not suffering from the consequences of some evil arbitrary blunder. This is how things are, the way the world in which we live is wired. Yes, water is inconveniently wet, and pi is hard to remember, and maybe we can solve those problems or maybe they are not in fact the sort of thing one can solve.
Railing against /usr/lib leaves you chained to a rock.
Complexity is painful. Along with filth and poverty and disease and death, we work against it, and we know we aren’t likely to get it quite right. There’s no shame in shaking your fist now and then, but it doesn’t help a lot. Better to go back to fetching fire.
Dahl concludes that "the only thing that matters in software is the experience of the user." This sounds great and says precisely nothing. What is the experience of the user? It might be any observable property of behavior of the software. Is the software pretty? That’s experience, sure. Is it easy to use? Experience. Does it give the right answer? That’s part of the experience, too. Does it do what you want to do, even if that’s not what everyone’s sainted aunt is likely to want? That’s a big part of your experience. Is it easy to extend and build and maintain? Developers are a big community, and making their experience better is a powerful way to make lots of stuff better. Everything is part of the experience of the user, because there is no user. (No hay banda, either,)
There is just us and the software and the world.