The Unix philosophy are rules and approaches for software development. It is collected with the experience of some well known Unix-programmers. Mike Gancarz, a developer of the X Windows System, wrote down some main receivables in 1994.
Small programs are easy to understand and to maintence. Small programs also need less systems ressources, that means that they did not need much storage. Small programs are also easier to combine with other tools. A collection of small programs is much more flexible than other big full functional programs.
Is already a tool out there which does the same things maybe better? Many programs have many unnecessary functions, so programmers should always think about the functionality and the usability.
Of course, building a prototype is a long and time intensive process, but an early building of a prototype can reduce risks. Programmers experience shows, that often the customer and the programmers have misconception, so an early prototype shows this problems and there is still time left to fix it or do it even better.
Portability reduces the necessary of user training. The mightiest computer is not the computer with the fastest CPU and the most storage, it is the computer which is used more often. So, if computers and their platform are out of date, good programs will be ported to the new platform.
That means, data has to be stored in flat text files. As important as portability of programs is the portability of data.
Nearly everything should be automatized. There is a big advantage to let the machine do the work, there is no waste of time in something that a computer can do. There is also another clue, to use or lend good code form great programmers. The whell has not do be invented again.
There is a right tool for the right task. There is a transition between complex commands and shell cripts, so they should be used.
Captive User Interfaces are big and difficult to create. They are also difficult to combine with other programs and not scalable. It is better to use scalable graphical user interfaces.
Data is not created by programs, but rather by human. Nobody can know how a program will be used. That is the reason why it is advisable to use filters. 1)
These nine main receivables together result to Unix philosophy. None of these receivables makes realy sense on its own. In Unix everything is a file. 2)
Of course there are other rudiments of Unix philosophy. Eric Raymond, also an unix program wrote down his seventeen unix rules in 2003. For more information about this, please have a look at http://www.catb.org/~esr/writings/taoup/html/