5 ms·
I wish people would stop applying the "only do one thing and do it well" to all software. Kernighan/Pike were explicitly talking about software tools in the Un
by deng 3y ago
I wish people would stop applying the "only do one thing and do it well" to all software.
Kernighan/Pike were explicitly talking about software tools in the Unix environment, not about all software in general. It is an idealist, you might even say elitist view of how software should work, which they then realized in Plan9. And as impressive as Plan9 is, there's a reason it never got widespread adoption, and that is not just because of evil Microsoft/IBM/whatever. It simply did not solve the problems people had, because it did not run the software the people (which are mostly non-programmers) actually needed to do their daily work. Yes, you can use these systems to write shell primitives, yet another build system, a window manager, a Wiki system, a basic text editor - mostly tools for programmers. It's like people with 3D printers mostly printing stuff to improve their 3D printer.
- asddubs 3y agoHey! I'll have you know, I don't print improvements for my 3D printer, I mostly don't use my 3d printer at all
- giantrobot 3y agoI love the cognitive dissonance of people saying "do one thing and do it well" when talking about Unix/Unix-like systems shipping with tools like sed, awk, and Perl. The idea that gets elided or list entirely is building composable tools. Composability lends itself to focusing a tool on a task but doesn't necessarily require it. If you build tools focused on composability i.e. output that is regular and easily parsed and properly using input and output channels, you'll get a system that is very extensible and responsive to end user needs. If you instead focus just on the "single purpose" tools you'll often end up getting ones that are too limited. They'll end up tightly coupled with other programs/service since their functionality alone doesn't do anything all that useful.