O'Reilly logo

Code Simplicity by Max Kanat-Alexander

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

Chapter 2. The Purpose of Software

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.[2]

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. ...

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

Start Free Trial

No credit card required