I started my undergraduate studies by pursuing a double major in philosophy and mathematics. While people often remarked that these subjects were complete opposites, this couldn’t be further from the truth. Philosophy is not only linked to math and sciences – it’s their ancestor. Philosophy has had a profound impact on most scientific fields, and computer science is no exception.
A philosophy is a way of thinking that determines how we understand ourselves, the world, or the right thing to do. Much like a program, a philosophy is composed of a set of premises and principles that determine how we handle events. Whether or not we’re aware of it, there’s a philosophy driving everything we do – from the way we honor history, to the way we develop software.
Today we’ll discuss three philosophies that have influenced software development, in ways big and small.
We’ll cover:
Before our discussion, I want to address one of philosophy’s most obvious and important contributions to computer science. Namely, our earliest binary representation of data came from a branch of philosophy called logic. Specifically, Boolean logic provided the framework through which we represent data in binary digits (0s and 1s). These binary digits are called bits in computer science. Bits are our tiniest units of data, and are the building blocks through which we animate lifeless hardware into functional machines.
Boolean logic was developed by George Boole in the 1850s. A mathematician and philosopher, Boole was building upon the findings of his predecessors. The hardware to physically realize these bits came much later thanks to findings in quantum physics. Still, Boolean logic was a breakthrough that’s often credited for transitioning us into the Information Age.
From decluttering to software development, minimalism has had a widespread impact on many areas of our lives. While the term “minimalism” was first coined to describe a post-WWII Western art movement, the term found itself applied in various contexts where there was a benefit to doing more with less.
Generally, minimalist philosophies value:
Minimalism worked its way into software development in the 1970’s. In these early days of programming, developers worked to optimize programs within the constraints of limited hardware resources and budget. While our hardware capabilities and budgets have certainly grown since then, minimalism remains an influence in software design and development.
We see minimalism’s influence on many communities and technologies, including:
Minimalism in software development advocates for:
Open-source software is software that makes its source code available to the public. We owe today’s abundance of open-source software to open-source philosophy and the open-source-software movement in the 1990s.
The open-source philosophy is closely linked to the hacker ethic. Indeed, many open-source activists were hackers (a term with positive connotations in this context). Like the hacker ethic, the open-source philosophy believes software and information should be freely available to anyone who wishes to use or improve upon it.
Open-source philosophy advocates for:
The open-source-software movement was a response to the increased privatization and commercialization of software around the advent of the personal computer (PC). This privatization was a contrast to the early days of programming, when researchers and programmers openly collaborated and software was shared in the public domain. Open-source philosophy advocates for bringing source code back to the hands of the people.
We now enjoy an abundance of open-source technologies, including:
Kaizen is a Japanese business philosophy that has influenced countless industries. The term Kaizen roughly translates to “change for the better” or “continuous improvement.” Kaizen was first implemented by Japanese businesses after WWII. It became popular in the US in the 1980s.
Kaizen advocates for:
Kaizen’s incremental approach laid the groundwork for agile development methodologies, including lean development. Agile methodologies share a focus on continuous improvement, and are widely used by software development teams today.
A program is not so different from a philosophy. They both inform how we move through the world – and in the case of programs, through the world as data. As a programmer, how you develop software can reflect your values, your purpose, and what you believe in.
Happy learning!
Try Educative’s Learn to Code series:
Free Resources