{ "uuid": [ { "value": "a8753236-c6ec-4eab-88c0-cf1939cf0333" } ], "langcode": [ { "value": "en" } ], "type": [ { "target_id": "daily_email", "target_type": "node_type", "target_uuid": "8bde1f2f-eef9-4f2d-ae9c-96921f8193d7" } ], "revision_timestamp": [ { "value": "2025-05-11T09:00:24+00:00" } ], "revision_uid": [ { "target_type": "user", "target_uuid": "b8966985-d4b2-42a7-a319-2e94ccfbb849" } ], "revision_log": [], "status": [ { "value": true } ], "uid": [ { "target_type": "user", "target_uuid": "b8966985-d4b2-42a7-a319-2e94ccfbb849" } ], "title": [ { "value": "Fail fast, fix fast\n" } ], "created": [ { "value": "2023-12-17T00:00:00+00:00" } ], "changed": [ { "value": "2025-05-11T09:00:24+00:00" } ], "promote": [ { "value": false } ], "sticky": [ { "value": false } ], "default_langcode": [ { "value": true } ], "revision_translation_affected": [ { "value": true } ], "path": [ { "alias": "\/daily\/2023\/12\/17\/fail-fast-fix-fast", "langcode": "en" } ], "body": [ { "value": "\n

I recently listened to a podcast that discussed Elon Musk and quoted something like, \"If 20% of attempts aren't failing, you aren't taking enough risk\".<\/p>\n\n

In a software context, I'm not advocating that one in five production releases should fail, but I like trying new ideas and approaches.<\/p>\n\n

If you're releasing small changes regularly or practising continuous deployment, changes are easy to revert if there's a problem or the smaller the deployment and the more recently the code was written, then it should be easier to resolve the issue and \"fix forward\" instead of rolling back.<\/p>\n\n

Using feature flags lets you quickly turn off a feature flag while investigating and resolving the issue without needing another deployment.<\/p>\n\n

If you have an appropriate plan to follow in the case of an issue, that mitigates the risk and minimises the impact of a potential issue - making it quicker to resolve and restore the service.<\/p>\n\n

Two of the DORA metrics refer to failure rate and restoration time:<\/p>\n\n