Before we can dive into the laws of software development, we have to understand what direction we’re heading in with them. What’s the yardstick for determining whether they work or not? Well, ideally we would have some purpose in mind. Then we could say that our ideas are valid to the degree that they accomplish that purpose.
Thus, what we need is a statement of the purpose of software itself. Not the personal purposes of the developers writing it, or the reasons the organization has for hiring programmers, but the actual purpose of software as a whole. Then we can see if our laws and rules help achieve that purpose.
Is it possible to derive a single statement of purpose that would fit all software? Well, I believe that I have.
The purpose of software is to help people.
We can break this down to a more specific purpose for individual pieces of software. For example, a word processor exists to help people write things, and a web browser exists to help people browse the Web.
Some pieces of software exist only to help specific groups of people. For example, there are many pieces of accounting software that exist to help accountants; these target only that specific group of people.
What about software that helps animals or plants? Well, its purpose is really to help people help animals or plants.
The important thing here is that software is never there to help inanimate objects. Software does not exist to help the computer, it always exists to help people. ...