When publishing software, you make a promise to your users. This is true outside of software as well of course – nobody wants a beagle when they ordered a bagel. But in software specifically there are a few unique considerations around promises to deal with:Software is both an abstract and real object. You can run Minecraft on a computer, but you can also make a "Computer" in Minecraft. This abstraction allows for any piece of software to technically be converted into any other piece of software given enough time and space. Speaking of time... Software practitioners are significantly constrained by resources, while at the same time, software scales near perfectly. This paradox means that good (or bad) software can reach millions nearly instantly, but any piece of software will always be bottlenecked by developer time. Creativity cannot be parallelized in any way that matters.In short, software can be anything in imagination, but must be something in reality. That "something" is a list of features, intertwined within a noisy field of bugs. This "something" is all software: browsers, compilers, video games, open source repositories, "print hello world x 10", etc.. (perhaps this is why copycatting runs rampant in software? Good ideas are harder to come by than to recreate?)If you let either of the above considerations go haywire, you will inevitably fail.This is where your promise comes in. Given your resources and goals: What are you promising your users? And how is this promise testable?You must be as strict as you can in your definitions. Freedom from "head in the clouds" abstractions, and the burnout of "over promise and under deliver" comes from being as clear as possible. Let's examine a case study of what promises can do.Case Study: Your CommonbaseYour Commonbase (YCB) is personal library science software. Personal Library Science is defined as four functions operating on an individual's library: store, search, synthesize and share. All four functions have many ...
First seen: 2025-06-09 03:16
Last seen: 2025-06-09 12:18