Over the decades I’ve seen the praise and critique of the “Unix way”. I don’t remember reading about the aspect I’ll describe below. This might be a banality, and I haven’t invested much thought into it either. I’m just curious to hear your opinions.
At the core of the Unix way is that tools should do just one thing. Users very often need results that can only be achieved after doing several things. With only single-purpose tools at hand, users have to integrate them. In other words, the tool authors delegate integration to the users.
Here’s the idea I want to discuss. In programming languages, integrating various modules to achieve a goal is already a complex task because we often have to handle numerous failure modes and edge cases. In shell scripts this is much worse, since shells are more limited than programming languages. Writing a tool that does only one thing looks like avoiding the most complicated task. Which leads to a conclusion that the Unix way only works well in a rather small fraction of use cases; the majority of cases are better served by different approaches.
What do you think?


I think you’re missing the difference between professional software development and a QnD script thrown together to accomplish a task.
The UNIX philosophy is also related to The Agile Manifesto and “worse is better”.
People are supposed to have the power to solve their problems. Unix provides primitives and tools to people, and they are expected to learn enough to use the system. It’s from a very different time. Well before the “don’t make me think” crowd showed up.
Now ignore all of the failure modes and edge cases except those that a script is going to directly run into, and that should simplify the requirements. This is “worse is better”.
Perl, Python, and Ruby are supposed to be approachable and easy to get started with. They were never supposed to be industrial programming languages like C, C++, Ada, Pascal, Java, etc., and what you’re noticing is the software industry not understanding there needs to be levels which address the different needs of people. Sometimes people need a simple tool, and not everyone needs to master the professional tool which takes two hours to set up and adjust.
The software industry destroying easy, simple to use software is another discussion.
So, it is me “missing the difference between professional software development and a QnD script” or the whole software industry? ;)
I’ve seen lots of cases of catastrophically wrong expectations of what the script will run into. Both for casual personal scripts, and professionally written scripts. I dare to claim that the majority of script authors cannot properly estimate this.
What does QnD mean here? Sorry if it’s a stupid question, but I tried searching google and Wikipedia and got nothing relevant
QnD is Quick ‘n Dirty.
Quickly thrown together with dirty code.
Ah yes! I know the expression and the meaning, but I’ve never seen that abbreviation before! You learn something everyday! Thank you very much! (And I agree with your original comment)
Sometimes I’m looking for a throwaway script that only does one thing and it doesn’t necessarily need to be pretty. I’m not looking to make it publicly used or even to be repeatable. Like the famous Todd Howard quote, “it just works.” QnD is the best option.