Faster And Safer Software Development With Feature Flags

The Python Podcast.__init__

Episode | Podcast

Date: Tue, 26 Nov 2019 07:00:00 -0500

<div class="wp-block-jetpack-markdown"><h3>Summary</h3> <p>Any software project that is worked on or used by multiple people will inevitably reach a point where certain capabilities need to be turned on or off. In this episode Pete Hodgson shares his experience and insight into when, how, and why to use feature flags in your projects as a way to enable that practice. In addition to the simple on and off controls for certain logic paths, feature toggles also allow for more advanced patterns such as canary releases and A/B testing. This episode has something useful for anyone who works on software in any language.</p> <h3>Announcements</h3> <ul> <li>Hello and welcome to Podcast.__init__, the podcast about Python and the people who make it great.</li> <li>When you&#8217;re ready to launch your next app or want to try a project you hear about on the show, you&#8217;ll need somewhere to deploy it, so take a look at our friends over at Linode. With 200 Gbit/s private networking, scalable shared block storage, node balancers, and a 40 Gbit/s public network, all controlled by a brand new API you&#8217;ve got everything you need to scale up. And for your tasks that need fast computation, such as training machine learning models, they just launched dedicated CPU instances. Go to <a href="https://www.pythonpodcast.com/linode?utm_source=rss&amp;utm_medium=rss">pythonpodcast.com/linode</a> to get a $20 credit and launch a new server in under a minute. And don&#8217;t forget to thank them for their continued support of this show!</li> <li>You listen to this show to learn and stay up to date with the ways that Python is being used, including the latest in machine learning and data analysis. For even more opportunities to meet, listen, and learn from your peers you don&#8217;t want to miss out on this year&#8217;s conference season. We have partnered with organizations such as O&#8217;Reilly Media, Dataversity, Corinium Global Intelligence, Alluxio, and Data Council. Go to <a href="https://www.pythonpodcast.com/conferences?utm_source=rss&amp;utm_medium=rss">pythonpodcast.com/conferences</a> to learn more about these and other events, and take advantage of our partner discounts to save money when you register today.</li> <li>Your host as usual is Tobias Macey and today I&#8217;m interviewing Pete Hodgson about the concept of feature flags and how they can benefit your development workflow</li> </ul> <h3>Interview</h3> <ul> <li>Introductions</li> <li>How did you get introduced to Python?</li> <li>Can you start by describing what a feature flag is? <ul> <li>What was your first experience with feature flags and how did it affect your approach to software development?</li> </ul> </li> <li>What are some of the ways that feature flags are used? <ul> <li>What are some antipatterns that you have seen for teams using feature flags?</li> </ul> </li> <li>What are some of the alternative development practices that teams will employ to achieve the same or similar outcomes to what is possible with feature flags?</li> <li>Can you describe some of the different approaches to implementing feature flags in an application? <ul> <li>What are some of the common pitfalls or edge cases that teams run into when building an in-house solution?</li> <li>What are some useful considerations when making a build vs. buy decision for a feature toggling service?</li> </ul> </li> <li>What are some of the complexities that get introduced by feature flags for mantaining application code over the long run?</li> <li>What have you found to be useful or effective strategies for cataloging and documenting feature toggles in an application, particularly if they are long lived or for open source applications where there is no institutional context?</li> <li>Can you describe some of the lifecycle considerations for feature flags, and how the design, implementation, or use of them changes for short-lived vs long-lived use cases?</li> <li>What are some cases where the overhead of implementing and maintaining a feature flag infrastructure outweighs the potential benefit?</li> <li>What advice or references do you recommend for anyone who is interested in using feature flags for their own work?</li> </ul> <h3>Keep In Touch</h3> <ul> <li><a href="https://blog.thepete.net/about/?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">Website</a></li> <li><a href="https://twitter.com/ph1?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">@ph1</a> on Twitter</li> <li><a href="https://github.com/moredip?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">moredip</a> on GitHub</li> </ul> <h3>Picks</h3> <ul> <li>Tobias <ul> <li><a href="https://learn.adafruit.com/adafruit-circuit-playground-express/overview?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">Circuit Playground Express</a> <ul> <li><a href="https://www.pythonpodcast.com/circuitpython-hardware-hacking-episode-212/?utm_source=rss&amp;utm_medium=rss">CircuitPython Episode</a></li> </ul> </li> </ul> </li> <li>Pete <ul> <li><a href="https://itrevolution.com/book/accelerate/?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">Accelerate</a> by Nicole Forsgren, Jez Humble, and Gene Kim</li> </ul> </li> </ul> <h3>Closing Announcements</h3> <ul> <li>Thank you for listening! Don&#8217;t forget to check out our other show, the <a href="https://feeds.fireside.fm/pythonpodcast/rss">Data Engineering Podcast</a> for the latest on modern data management.</li> <li>Visit the <a href="https://www.pythonpodcast.com?utm_source=rss&amp;utm_medium=rss">site</a> to subscribe to the show, sign up for the mailing list, and read the show notes.</li> <li>If you&#8217;ve learned something or tried out a project from the show then tell us about it! Email <a href="mailto:hosts@podcastinit.com">hosts@podcastinit.com</a>) with your story.</li> <li>To help other people find the show please leave a review on <a href="https://itunes.apple.com/us/podcast/podcast.-init/id981834425?mt=2&amp;uo=6&amp;at=&amp;ct=&amp;utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">iTunes</a> and tell your friends and co-workers</li> <li>Join the community in the new Zulip chat workspace at <a href="https://www.pythonpodcast.com/chat?utm_source=rss&amp;utm_medium=rss">pythonpodcast.com/chat</a></li> </ul> <h3>Links</h3> <ul> <li><a href="https://www.perl.org/?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">Perl</a></li> <li><a href="https://www.ruby-lang.org/en/?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">Ruby</a></li> <li><a href="https://www.djangoproject.com/?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">Django</a></li> <li><a href="https://en.wikipedia.org/wiki/Feature_toggle?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">Feature Flag</a></li> <li><a href="https://martinfowler.com/articles/feature-toggles.html?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">Pete&#8217;s Blog Post On Feature Flags</a></li> <li><a href="https://www.thoughtworks.com/?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">Thoughtworks</a></li> <li><a href="https://en.wikipedia.org/wiki/Continuous_delivery?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">Continuous Delivery</a></li> <li><a href="https://continuousdelivery.com/?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">Continuous Delivery Book</a></li> <li><a href="https://trunkbaseddevelopment.com/?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">Trunk Based Development</a></li> <li><a href="https://martinfowler.com/bliki/BranchByAbstraction.html?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">Branch By Abstraction</a></li> <li><a href="https://en.wikipedia.org/wiki/Technical_debt?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">Technical Debt</a></li> <li><a href="https://en.wikipedia.org/wiki/Strategy_pattern?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">Strategy Pattern</a></li> <li><a href="https://en.wikipedia.org/wiki/Polymorphism_(computer_science)?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">Polymorphism</a></li> </ul> <p>The intro and outro music is from Requiem for a Fish <a href="http://freemusicarchive.org/music/The_Freak_Fandango_Orchestra/?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">The Freak Fandango Orchestra</a> / <a href="http://creativecommons.org/licenses/by-sa/3.0/?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">CC BY-SA</a></p> </div> <img alt="" height="0" src="https://analytics.boundlessnotions.com/piwik.php?idsite=1&amp;rec=1&amp;url=https%3A%2F%2Fwww.pythonpodcast.com%2Ffeature-flags-episode-239%2F&amp;action_name=Faster+And+Safer+Software+Development+With+Feature+Flags+-+Episode+239&amp;urlref=https%3A%2F%2Fwww.pythonpodcast.com%2Ffeed%2F&amp;utm_source=rss&amp;utm_medium=rss" style="border: 0; width: 0; height: 0;" width="0" />