2016-12-11

Software Goodness

The Ultimate Purpose of Software is to help somebody achieve a greater goal 1. The degree of Software Goodness of a piece of software is the degree to which the software realizes its ultimate purpose.

For example, software that helps 1M people learn algebra can be said to have greater Software Goodness 2 than another software that helps only 100 people learn algebra.

Note that people who benefit from software can be anyone impacted by the software, other software engineers, for example. If a library is a joy to use (due to its -ilities [readability, simplicity, robustness, etc]), then it can be said that it achieves greater Software Goodness than a library that is a pain to use (due to its lack of -ilities).

What drives a person to pursue Software Goodness?

I believe that what drives a peson to write software with a high degree of Goodness is that person's Care 3 4 for others and the greater goal the software is helping achieve.

That is why an engineer writes Better Software when she works for a company whose goal she Cares about. However, a Care for other software engineers (and her future self) will also increase her motivation to produce software with a high degree of internal quality (the -ilities [maintainability, readability, extensibility, etc]).

Sources

  • Code Simplicity: The Fundamentals of Software by Max Kanat-Alexander
  • Zen and the Art of Motorcycle Maintenance: An inquiry into values by Robert M. Pirsig

Footnotes

  1. This is a modified version of Max Kanat-Alexander's definition in his book Code Simplicity: The Fundamentals of Software: "The purpose of software is to help people".
  2. I am using the word Goodness to refer to Socrate's Form of the Good
  3. Care as Robert M. Pirsig refers to it in Zen and the Art of Motorcycle Maintenance.
  4. I write with capitalized words when I use a word to convey a different meaning than that which you would find in a dictionary or convention.


blog comments powered by Disqus