{"url":"https://api.github.com/gists/93b1551fd25488eaa8a33856deb54c81","forks_url":"https://api.github.com/gists/93b1551fd25488eaa8a33856deb54c81/forks","commits_url":"https://api.github.com/gists/93b1551fd25488eaa8a33856deb54c81/commits","id":"93b1551fd25488eaa8a33856deb54c81","node_id":"MDQ6R2lzdDkzYjE1NTFmZDI1NDg4ZWFhOGEzMzg1NmRlYjU0Yzgx","git_pull_url":"https://gist.github.com/93b1551fd25488eaa8a33856deb54c81.git","git_push_url":"https://gist.github.com/93b1551fd25488eaa8a33856deb54c81.git","html_url":"https://gist.github.com/michaellihs/93b1551fd25488eaa8a33856deb54c81","files":{"trunk-based-development.md":{"filename":"trunk-based-development.md","type":"text/markdown","language":"Markdown","raw_url":"https://gist.githubusercontent.com/michaellihs/93b1551fd25488eaa8a33856deb54c81/raw/7c9816881c9152f3ab49cbab3bf88f0bd8085bbc/trunk-based-development.md","size":1778,"truncated":false,"content":"# You don't simply do TBD\n\n* embed it in a proper workflow\n* implement fast and specific feedback loops on all stages\n  * analysis\n  * development\n  * CI pipeline\n  * shipping working software to PROD afap\n\n# Build review in\n\n* lean manufacturing: reduce waste\n  * changeover time is waste\n  * reducing changeover time means reducing waste\n  * pull-request based reviews involve 2 changeovers\n    1. reviewer has to \"stop\" her work and switch context to reviewed code\n    2. developer implementing the change has to come back to the code later, re-establish context in her brain...\n* better: have review during coding\n  * pair programming\n  * proper rotation in team across stories and topics\n* involve PO, BA, QA early and often\n\n# Hone your engineering skills by optimising for TBD\n\n* think about a good migration path\n* small changes less likely cause breaking change\n* spend less time in code reviews and shift the time to improve your infrastructure / pipeline / test suite\n\n# Speed up the feedback loop\n\n* commit early & often leads to integrate early and often\n* the fresher the code is in your mind, the easier to fix it, hence the cheaper to fix it\n\n# Engineering practises that enable TBD\n\n* feature toggles\n* a good test suite\n  * balanced test suite / testing pyramid\n  * integration tests\n  * PACT tests\n* tech huddles, have everyone involved\n\n# \"Issues\" with feature branches\n\n* delay integration == delay feedback\n  * you only know whether changes are properly working once you integrate into master, which happens quite late\n  * possibly many intermediate changes to master\n* undermine the concept of continuous integration\n* increases complexity of your CI process\n  * exponential explosion of possible combinations to check every branch with every other branch","encoding":"utf-8"}},"public":true,"created_at":"2021-01-14T23:17:43Z","updated_at":"2021-01-14T23:20:33Z","description":"Trunk-based development","comments":0,"user":null,"comments_enabled":true,"comments_url":"https://api.github.com/gists/93b1551fd25488eaa8a33856deb54c81/comments","owner":{"login":"michaellihs","id":575011,"node_id":"MDQ6VXNlcjU3NTAxMQ==","avatar_url":"https://avatars.githubusercontent.com/u/575011?v=4","gravatar_id":"","url":"https://api.github.com/users/michaellihs","html_url":"https://github.com/michaellihs","followers_url":"https://api.github.com/users/michaellihs/followers","following_url":"https://api.github.com/users/michaellihs/following{/other_user}","gists_url":"https://api.github.com/users/michaellihs/gists{/gist_id}","starred_url":"https://api.github.com/users/michaellihs/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/michaellihs/subscriptions","organizations_url":"https://api.github.com/users/michaellihs/orgs","repos_url":"https://api.github.com/users/michaellihs/repos","events_url":"https://api.github.com/users/michaellihs/events{/privacy}","received_events_url":"https://api.github.com/users/michaellihs/received_events","type":"User","user_view_type":"public","site_admin":false},"forks":[],"history":[{"user":{"login":"michaellihs","id":575011,"node_id":"MDQ6VXNlcjU3NTAxMQ==","avatar_url":"https://avatars.githubusercontent.com/u/575011?v=4","gravatar_id":"","url":"https://api.github.com/users/michaellihs","html_url":"https://github.com/michaellihs","followers_url":"https://api.github.com/users/michaellihs/followers","following_url":"https://api.github.com/users/michaellihs/following{/other_user}","gists_url":"https://api.github.com/users/michaellihs/gists{/gist_id}","starred_url":"https://api.github.com/users/michaellihs/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/michaellihs/subscriptions","organizations_url":"https://api.github.com/users/michaellihs/orgs","repos_url":"https://api.github.com/users/michaellihs/repos","events_url":"https://api.github.com/users/michaellihs/events{/privacy}","received_events_url":"https://api.github.com/users/michaellihs/received_events","type":"User","user_view_type":"public","site_admin":false},"version":"6abec4f38006669126827e88ab325f309e7bc61a","committed_at":"2021-01-14T23:20:32Z","change_status":{"total":11,"additions":10,"deletions":1},"url":"https://api.github.com/gists/93b1551fd25488eaa8a33856deb54c81/6abec4f38006669126827e88ab325f309e7bc61a"},{"user":{"login":"michaellihs","id":575011,"node_id":"MDQ6VXNlcjU3NTAxMQ==","avatar_url":"https://avatars.githubusercontent.com/u/575011?v=4","gravatar_id":"","url":"https://api.github.com/users/michaellihs","html_url":"https://github.com/michaellihs","followers_url":"https://api.github.com/users/michaellihs/followers","following_url":"https://api.github.com/users/michaellihs/following{/other_user}","gists_url":"https://api.github.com/users/michaellihs/gists{/gist_id}","starred_url":"https://api.github.com/users/michaellihs/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/michaellihs/subscriptions","organizations_url":"https://api.github.com/users/michaellihs/orgs","repos_url":"https://api.github.com/users/michaellihs/repos","events_url":"https://api.github.com/users/michaellihs/events{/privacy}","received_events_url":"https://api.github.com/users/michaellihs/received_events","type":"User","user_view_type":"public","site_admin":false},"version":"efb5bc7179aea8bfa2250c2db837f84c26117aaa","committed_at":"2021-01-14T23:17:57Z","change_status":{"total":0,"additions":0,"deletions":0},"url":"https://api.github.com/gists/93b1551fd25488eaa8a33856deb54c81/efb5bc7179aea8bfa2250c2db837f84c26117aaa"},{"user":{"login":"michaellihs","id":575011,"node_id":"MDQ6VXNlcjU3NTAxMQ==","avatar_url":"https://avatars.githubusercontent.com/u/575011?v=4","gravatar_id":"","url":"https://api.github.com/users/michaellihs","html_url":"https://github.com/michaellihs","followers_url":"https://api.github.com/users/michaellihs/followers","following_url":"https://api.github.com/users/michaellihs/following{/other_user}","gists_url":"https://api.github.com/users/michaellihs/gists{/gist_id}","starred_url":"https://api.github.com/users/michaellihs/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/michaellihs/subscriptions","organizations_url":"https://api.github.com/users/michaellihs/orgs","repos_url":"https://api.github.com/users/michaellihs/repos","events_url":"https://api.github.com/users/michaellihs/events{/privacy}","received_events_url":"https://api.github.com/users/michaellihs/received_events","type":"User","user_view_type":"public","site_admin":false},"version":"f638764e98c8fdcf2fb111d11ff6ba81e834caa6","committed_at":"2021-01-14T23:17:43Z","change_status":{"total":41,"additions":41,"deletions":0},"url":"https://api.github.com/gists/93b1551fd25488eaa8a33856deb54c81/f638764e98c8fdcf2fb111d11ff6ba81e834caa6"}],"truncated":false}