I recently read about the Unix Philosophy by Ken Thompson and Doug Mcllroy. It is a set of cultural norms and philosophical approaches to minimalist, modular software development. While I was aware of the simplicity of the Unix operating system, I had yet to read the core principles. Here are the core tenants of the Unix philosophy:
- Make each program do one thing well. To do a new job, build afresh rather than complicate old programs by adding new "features."
- Expect every program's output to become the input to another, as yet unknown, program. Don't clutter the output with extraneous information. Avoid stringently columnar or binary input formats. Don't insist on interactive input.
- Design and build software, even operating systems, to be tried early, ideally within weeks. Don't hesitate to throw away the clumsy parts and rebuild them.
- Using tools rather than unskilled labor helps to lighten a programming task, even if you have to detour to build the tools and expect to throw some of them out after you've finished using them.
Or quite simply, in the words of Peter Salus:
- Write programs that do one thing and do it well.
- Write programs to work together.
- Write programs to handle text streams because that is a universal interface.
Given the success of the Unix approach, we could take it into our everyday lives, too. Here are some ideas that we could adopt in our day-to-day life:
- Daily Routines: Break down complex tasks into smaller, manageable ones. Instead of "cleaning the house," you could have a dish, dusting, and vacuuming routine. This makes them less daunting and more accessible to integrate into your day.
- Decision Making: Simplify by focusing on one deciding factor at a time. Need a new phone? Prioritize features (camera? battery life?) and choose based on that single focus.
- Multitasking is a myth. What you think is multitasking is actually task switching. You lose valuable context, and you actually do things slower and with lesser quality. Focus on one thing at a time.
2. Leverage Simple Communication:
- Clear Communication: When you make a request, please be clear and concise. This avoids misunderstandings and wasted time. For example, instead of "Hey, can you finish that thing," ask, "Can you send over the report by lunch?"
- Active Listening: Pay close attention to what others are saying and focus on understanding their core message.
3. The Power of Combining Tools:
- Everyday Apps: Many tasks can be accomplished by combining simple apps. For example, you can use a note-taking app to capture ideas and then transfer them to a project management tool for the organization. I use the note-taking app to generate this weekly blog. I talk to several people weekly, and whenever I come across a new idea, I write it down in my notes app to create a blog later on.
- DIY Projects: Break down larger projects into smaller tasks and use specialized tools for each. This can make them more efficient and less overwhelming.
The Unix philosophy isn't a silver bullet. Some situations require a more holistic approach. But by adopting simplicity and leveraging the power of small, focused tools, you can streamline your day-to-day and create a more efficient way of living.
If you like, please subscribe to the FAQ on Data newsletter and/or follow Fawad Qureshi on LinkedIn.