Convexity in Software Dev

The romance of software development is the power of abstraction.

If you’re building:

  • physical widgets, you can only get so much better at building widgets (concave).
  • software and you come up with a better way of building software (tool/language/technique/pattern/library), the only limits to improvement are the limits of human imagination (convex).

If I’m building software, I can build better and better quality, but the payoff quickly tops out for most applications. By building a better:

  • way of achieving quality (test-driven development)
  • tool for achieving quality (xUnit),

the payoff grows such that greater success increases the rate of payoff (convex).

The same is true for:

These are both severely convex projects.

Convexity is why software is eating the world. The more of the world connected to software, the greater the value of connecting the next bit of the world to software (convex). Good news for programmers, the greater the leverage of software the greater the leverage of improving software (doubly convex).

Powered by ComboStrap