When I choose to use an OS, or a software program, or a programming language, I tend to look at the philosophy that guides the makers and users of the software first. Then I determine if it matches my intended use or purposes.
In my opinion, it’s very important to make sure the philosophy suits the purpose of what you’re using the software for. It results in less headaches and less surprises.
If you look at the philosophy of the maker, you can see how it affects the entire feel and what the software is good for.
For example, the Ruby programming language comes from Matz’s personal philosophy for a programming language that is fun to code in, without any extra steps and with an unusually readable syntax. From that you can tell it’s hella fun to code in, but speed was never a priority. So don’t use it for mission critical stuff unless you plan on replacing bottlenecks with faster solutions.
Another example, Rails, the web development framework built on Ruby, is based on David H.H.’s aesthetics and pragmatic rule breaking approach. When he said “Fuck You” to vendors in his infamous conference speech, I was sold.
Ultimately it comes down to personal choice, and what your priorities are. I chose Ruby & Rails several years ago because both of those philosophies resonated with my priorities.
Sounds pretty straight forward doesn’t it? But you’d be surprised that people often make choices that are completely counter to the philosophy.
The biggest example of people making such a questionable mistake that I can think of off the top of my head is Ubuntu web servers. Ubuntu is very popular, and its original philosophy was to be the “best desktop linux distribution.” However, you see many people choosing to run it as their production web servers.
WHA?!
This seems like a pretty obvious mis-match. In reality, it probably works just fine as a server for many people. But I will never be surprised when others encounter huge headaches in the setup or configuration or debugging of their Ubuntu “web servers.”
The take away message is: Pay attention to the philosophy behind the software, and pick the software that has the philosophy most specialized to the task at hand. You’ll end up with better results in most scenarios.