December 2, 2012
I have a friend who works at a local coffee shop. Today he was telling me about some shops and restaurants he’d recently visited. One story was of a lady who serves nothing but chicken sandwiches. She’s open only around lunchtime but sells a few hundred of these $10 sandwiches each day. Another story was of a restaurant that essentially serves just specially poached eggs (the eggs are steamed). They too are successful and have a dedicated following. And then I was thinking of Unix.
A famous Unix precept is, “Make each program do one thing well.” That’s what these shops were doing. All she makes is chicken sandwiches but hers are evidently done well enough they are worth standing in line to pay $10 for.
My friend continued. He has financing and is on his way to opening his own shop. He described some of the ways his shop will be different - some of the ways it will be, well, good. I listened, liking his ideas and before long was thinking of Unix again - or more specifically “Worse is Better.” A gross simplification of Worse is Better might be to say these things matter, in this order:
There are close parallels between these principles and my friend’s goals. I’ll just describe #1, simplicity. My friend pointed to the page-long coffee menu beside us and said he’d start by cutting it down to just a handful of choices. That would make choosing easier. Also, he said when a new customer comes in the experience can be, well, challenging:
And that’s not the end of it. My friend aims to make the ordering process simpler. We talked about other simplifications including behind-the-counter processes. In distinguishing between those processes and the customer interaction I made a mental parallel to distinguishing between software internals and external interfaces (e.g. API’s). That got me thinking again about Worse is Better and how it’s discussed there. The author states, “It is more important for the implementation to be simple than the interface.” In a coffee shop scenario the opposite may be true. It may be all-important to have a simple customer interface (interaction).
In the end I thought about Unix’s focus on portability, “Choose portability over efficiency.” Does that just mean, “For here or to go?” Ha, ha, no. Ahem.