Chapter 23. Structure and Behavior
Software creates value in two ways:
-
What it does today
-
The possibility of new things we can make it do tomorrow
“What it does today” is the system’s behavior—calculating payroll, sending dropship orders, notifying friends. (And yes, all software systems are sociotechnical systems, and we won’t be designing the socio- part of it just yet.)
Behavior can be characterized in two ways:
- Input/output pairs
-
This many hours at this pay rate in this jurisdiction should result in a paycheck like this and a tax filing like that.
- Invariants
-
The sum of all entitlements should equal the sum of all deductions.
Behavior creates value. Rather than having to calculate a bunch of numbers by hand, the computer can calculate millions of them every second. Turns out people will pay not to have to calculate numbers by hand. If running the software costs $1 in electricity and you can charge folks $10 to run it on their behalf, then you have a business.
In theory, this business could run forever, producing $10 for every dollar we put in. We know this is an oversimplification. Bit rot is real. Something is always changing. Staying in place in the river requires constant paddling. But for purposes of the distinction I’m drawing, this is good enough for the moment.
You know what’s better than a machine that spits out $10 for every $1 you put in? A machine that spits out $100 for every $10 you put in. Or $20 for every $1. How are we going to get to that better ...