A first principle is a principle that is so fundamental that we can infer other principles from it. The Golden Rule is an example of a first principle, “Do unto others as you have them do unto you.” This is a first principle because many of our laws, our code of ethics, and even our culture are derived from this one simple statement.
So then what are the first principles in software development?
Software is so fundamentally different from everything else in the world we often have a hard time wrapping our brains around it.
In medicine, the first line of the Hippocratic Oath is a first principle. “First, do no harm.” Medicine requires intervention but the purpose and duty of a doctor is to heal her patient. She may have to amputate an infected leg but that’s in order to save a life. So doctors are constantly weighing the risks and potential benefits of treatment plans.
Back to software, what is its purpose? What is the goal of writing software? The answer to that question used to be to make the computer do something meaningful, but that answer isn’t good enough anymore. We have to do more than just make the computer do something. We have to build it in a way that can provide value now as well as into the future, which means software has to be built to be changeable and easy to work with in the future.
There are a whole litany of principles and practices around doing this correctly and many of these practices have only recently been discovered so they’re not all pervasive throughout the industry. But someday they will be.
Someday we will understand software development and we’ll know exactly what first principles to draw on, but that day hasn’t yet arrived.