Post by James Snook
๐ Dev Productivity for Banks | ๐ DORA expert | ๐ฒex VP Eng, YC startup | ๐ฌ 7 million post views | ๐จ๐ฆ+๐ฌ๐ง
๐ฉ โLetโs just add a flag for that.โ As if flags were free. Here's how it goes: โข Someone proposes a feature.ย โข Someone else says it'll break existing behaviour.ย โข A third person - usually the one with the loudest voice - says: "๐๐ฉ๐ข๐ต ๐ช๐ง ๐ธ๐ฆ ๐ฎ๐ข๐ฌ๐ฆ ๐ช๐ต ๐ค๐ฐ๐ฏ๐ง๐ช๐จ๐ถ๐ณ๐ข๐ฃ๐ญ๐ฆ?" And suddenly you have a flag. The flag is a lie you tell yourself. You're not ๐ด๐ฐ๐ญ๐ท๐ช๐ฏ๐จ the problem. You're ๐ง๐ช๐ญ๐ช๐ฏ๐จ it - in a namespace no one will revisit until the codebase is so haunted that onboarding a new developer requires a Ouija board. Two flags interact in ways nobody predicted. Three flags interact in ways nobody ๐ค๐ข๐ฏ predict. By the time you have ๐๐ฒ๐ป, you no longer have a ๐ฑ๐ณ๐ฐ๐ฅ๐ถ๐ค๐ต. You have ๐ฑ๐ณ๐ฐ๐ฅ๐ถ๐ค๐ต ๐ด๐ฑ๐ข๐ค๐ฆ. And much of the space is unexplored wilderness where bugs live rent-free. The worst part? Flags never die. Flags accumulate, like conference tote bags, until someone senior enough to authorize the cleanup finally loses their temper. Grit your teeth, and make a decision. Choose the behaviour that makes sense for your product and your customers. Add a flag only when you have a ๐ฑ๐ฒ๐ฝ๐น๐ผ๐๐บ๐ฒ๐ป๐ reason, not a ๐ฑ๐ฒ๐ฐ๐ถ๐๐ถ๐ผ๐ป ๐ฎ๐๐ผ๐ถ๐ฑ๐ฎ๐ป๐ฐ๐ฒ reason. And don't forget to regularly clean up the feature flags you ๐ฅ๐ฐ add. ๐ ๐จ๐๐ฒ๐ณ๐๐น? ๐๐ถ๐ ๐๐ถ๐ธ๐ฒ. โป๏ธ ๐ช๐ผ๐ฟ๐๐ต ๐๐ต๐ฎ๐ฟ๐ถ๐ป๐ด? ๐ฅ๐ฒ๐ฝ๐ผ๐๐. ๐ฃ ๐ ๐ผ๐ฟ๐ฒ ๐น๐ถ๐ธ๐ฒ ๐๐ต๐ถ๐? +๐๐ผ๐น๐น๐ผ๐. Thanks! #SoftwareDevelopment #TechDebt #Agile