I Have an Minimum Viable Product — Am I done?
As of this year, I have been programming for 40 years. In 1979, I discovered coding on a TI-57. Since then, a lot has changed. The most significant impact is not what you think!
As I quickly transitioned from calculators (TI-58C) to real computers (TRS-80, Commodore 64, PC), new elements became available:
Graphics and sounds
External devices
Networking (Fidonet anyone?)
One can think that technology spawns new possibilities. However, expectations are the real drivers of innovation!
Developers codify user expectations as the 'Definition of Done.' Here's a partial list for your consideration.
Available in production.
Validated and approved by the product owner.
Fast, automated and repeatable deployments without human intervention.
Covered by automated tests in the CD pipeline:
Static analysis: coding style, language version adherence (ex: ES2016, Java 9), anti-patterns, security
100% unit tests coverage
Acceptance tests
Performance tests
Availability monitoring (ex: Pingdom, Cloudwatch)
Infrastructure capacity planning (ex: Datadog)
Code flow performance measures (ex: NewRelic)
Functional transactions and user behavior auditing (ex: Intercom Platform)
Minimum Viable Products are more sophisticated today than before simply because people expect more from us.