What does it mean to make software that doesn't just run, but is operable?
Good question! This represents some current thinking on the topic; there's tons of details in each of these things, so this list is expected to change and get more detailed over time.
Operable Software seems to involve (at a minimum) thinking a lot harder about and making sure there is a strategy (and code where appropriate) for:
- Metrics
- Logging
- Backups
- Alerting
- Deployment
- Migration
- Security
- Admin
- Reproducibility
- Documentation
There are also aspects that seem to warrant thought before deploying into production, even if the answer is "do nothing for now":
- Scalability / Capacity Planning
What about "make it run, make it right, make it fast"? This doesn't really change that; rather it is a modifier on the definition of "right", where now that doesn't just mean "well designed" but "operable" as well. And this should be implemented within an iterative feedback loop; the tricky part is that many of the things on this list are actually themselves a form of feedback.
So: apply with experience.
Testing, testing.