What we wanted to preserve was not just a good environment in which to do programming, but a system around which a fellowship could form. We knew from experience that the essence of communal computing, as supplied by remote-access, time-shared machines, is not just to type programs into a terminal instead of a keypunch, but to encourage close communication.

Unix Developers were the users of the system and they developed tools to solve their own problems

Unix Developers were given freedom to experiment and rewrite Unix as needed

Unix Software Philosophy

Don't create programs that are like a Swiss Army Knife... meaning they do too much

One simple example would be sorting... either you can do one of the two following things:

Write a bunch of programs to do various tasks, each of which has an option to sort its output

Choose a common representation for your system (e.g. streams of ASCII text), create a mechanism for composing pieces of the system (Unix pipes), and only write the sorting functionality once

A less simple example would be the LLVM compiler (and compilers in general), which uses an intermediate representation (IR) that is understood and operated on by all pieces of the system as the compiler does all the passes required to generate its target (e.g. lexing, parsing, optimization, code generation, etc.)

In general, choosing a common representation for a system will turn the problem of interfacing the various pieces from an m*n problem into an m+n problem (where m is the number of different outputs in the first stage, n is number of inputs that are received in the second stage)

Tools can be combined using pipelines and the shell to get your work done

One famous example is Doug McIlroy's word count program, compared to Donald Knuth's, as described here and elsewhere

Self Contained Shell Scripts

In computing, executable code or an executable file or executable program, sometimes simply referred to as an executable or binary, causes a computer "to perform indicated tasks according to encoded instructions,"[1] as opposed to a data file that must be parsed by a program to be meaningful.

Typically a high level language is used that compiles to executable machine code files

Executable scripts typicall start with a Shebang => #! /bin/bash or the like