Good Advice

From APIDesign

How do you recognize Good Advice? We already know what a good technology is, can we use the same concept to evaluate whether an advice is good or not? Let me answer that by a quote from TheAPIBook which Yoshiki asked about:

Page 363

Part 1 presents all of API design as a scientific discipline with a strong rational background,
not as the art that it sometimes pretends to be. It defines terminology and initial prerequisites
that can objectively help us measure if an API design is good. These rules try to be language neutral
and applicable to any programming language, not just Java. The theory is unlikely to be
complete. Other principles of API design exist elsewhere or are still waiting to be discovered.

However, that should not scare us, as Chapter 1 gives us a tool to evaluate the quality of various
principles to find out whether a certain piece of advice helps us design better shared libraries
and their APIs or not. It gives us the grand meta-principle: selective cluelessness. This cluelessness
is a tool that can measure whether various goals really help. That’s because if they allow
people to know less while achieving more and building better software systems more easily, then
this advice is good. There is a need for this advice, especially in the future, when software systems
will outsize the intellectual capacity of any of their designers.

"this advice" is a reference to advice mentioned in "to find out whether a certain piece of advice helps us design better shared libraries". To rephrase: any advice that helps users increase cluelessness is good and it will be even more valuable in the future when we start to build even bigger systems.