Best Practices for Short-term and Permanent Flags

1,103
LaunchDarkly
Serving over 20 trillion feature flags daily to help software teams build better software, faster. LaunchDarkly helps eliminate risk for developers and operations teams from the software development cycle.

This post is by Dawn Parzych of LaunchDarkly

What are best practices when it comes to feature flags? The answer to that as with most questions is “it depends.”

  • It depends on whether the flag is a short-term or permanent flag.
  • It depends on the purpose of the flag.
  • It depends on your specific business needs. What works for one company may not work for you.

This blog series will dive into best practices for feature flags, starting with best practices pertaining to short-term and permanent flags.

Determine whether you need a short-term or permanent flag

The first recommendation is to determine whether a flag will be a short-term or permanent flag as that will influence future decisions and best practices.

Short-term flags

A short-term flag has a limited lifespan. Remove the flag once it has fulfilled its business purpose. When thinking of feature flags, most people think of short-term flags. Types of short-term flags include:

Release: Slowly exposing a feature to new users—moving from internal users to beta and/or canary users until 100% of users are receiving the feature. When you reach 100% remove the flag (unless it is needed as a circuit-breaker as described below).

A/B testing: Segmenting your population to determine a preference for one option over another. Once testing ends, remove the flag, and 100% of users should receive the preferred variation.

Operational interaction testing: When rolling out a new microservice, infrastructure component, or third-party tag, a flag can be used to determine the impact on systems. If the CPU spikes or there is a memory leak, or unexpected errors occur, disable the new element while further troubleshooting takes place.

Kill switches: A toggle to disable a single feature when things start to go sideways during a release.

After reading those descriptions, you may be thinking that a release flag sounds a lot like an operational interaction testing flag. And they are similar. The primary difference is in who is the controller. An operational interaction flag is controlled by the ops team to protect the systems where the release flag is controlled by the product or business owner to control how user adoption progresses.

Permanent flags

A permanent flag is designed to provide control for an extended time after the release of a given feature. In some cases, the flag will be in existence for the life of a feature. Types of permanent flags include:

Entitlements: Giving users access to certain features based on a subscription level or authentication status.

Circuit breakers/Load shedding: Having the ability to quickly turn a feature off or terminate a connection when problems arise prevents problems from impacting all users. These flags are often activated based on an event. For example, a monitoring tool generates an alert when orders fail to complete. When the alert is triggered, a flag is toggled setting the site to ‘read-only.’

White labeling: Configuring the look and feel of an application for each client for a white-labeled solution.

Accessibility: Allowing users to select which accessibility options and refinements they prefer.

Feature flag best practices for all flags

Whether you have a permanent or short-term flag, consider these best practices.

Make flag planning a part of feature design

Feature flags shouldn’t be an afterthought. If you think about feature flags during the design process, you will be setting yourself up for success. Part of the planning includes whether the flag will be a short-term or permanent flag. This decision will then impact other areas such as a naming convention, configuration settings, review and removal processes, and access control and safety checks. We suggest proper planning up front for all flags.

Standardize naming

You may have a style guide for code with conventions on how to write code for your application that includes things like when and where to use camelCase or the proper use of indentation. These style conventions make it easier to read and understand the code.

Before creating your first flag, come up with a naming convention to be used. Our first recommendation is for verbose flag names, don’t try and be brief. You want people to know what the flag does. Verbose flag names can be helpful for others to understand what the flag is doing.

Things to consider when writing the style guide or naming convention.

  • Be descriptive about the flag’s behavior.
  • Include a prefix with a project name or team name.
  • Indicate whether the flag is temporary or permanent.
  • Include a creation date for the flag. (This will be helpful when cleaning up flags, more on this below).
  • Whether or not to use flag in the name. If using a service like LaunchDarkly using flag in the name is redundant. If using a home-grown solution using flag in the name may help clarify the purpose of the code.

For example, you are creating a flag to progressively roll out and test a new chatbox widget of your UI. This will be a short-term flag. Without a naming convention in place, you may end up with a flag called “brand-new-flag” or “new-UI-widget.”

These names don’t tell us a whole lot about this flag. But with a standard naming convention in place that addresses all of the above, you can create a more descriptive flag name like “aTeam-chatbox-widget-temp-030619.” We know from the name, this is a temporary flag for a chatbox widget created by the “a team” on June 3rd, much better.

Minimize the reach of a flag

The focus of a flag should be small. Having a flag that controls more than one feature action at a time can be confusing and will make troubleshooting issues harder. Think about the smallest unit of logic needed for the most responsive flag. If there are multiple parts to a feature that have to work together, you can create a master flag as a dependency.

For example, say you’re launching a new dashboard in your application. The dashboard has three widgets. You should create a total of four flags: one flag for each widget with a dependency on a fourth flag for the main dashboard. With this scenario, if one widget causes problems the dashboard with two widgets can still be served.

Review use at regular intervals

Whether you are creating a short-term or permanent flag you need to review flag use at regular intervals. The frequency at which you review the flags may vary based on business requirements and the type of flag. To avoid accrual of technical debt, review both permanent and short-term flags at a regular cadence.

For short-term flags, look to see if the flag has rolled out to 100% of users, or if a flag is served to no users. For permanent flags, examine whether the flag is still needed—was a feature once part of a premium bundle and is now available for all users.

We will cover specific criteria related to removing short term flags below.

Best Practices for permanent flags

Establish access control and safety checks

If you have regularly scheduled flag clean-up events, you may worry about the accidental removal of permanent flags. Minimize the risk by implementing access control and safety-checks.

Within LaunchDarkly a flag cannot be deleted without confirmation, but that is a partial solution. There are two additional ways to implement access controls for added peace of mind.

  • Use tags and custom roles to assign permissions to flags within LaunchDarkly quickly.
  • Set role-based access control (RBAC) to specify who can delete flags in a given environment.

Best Practices for Short-term flags

Create a process for removing flags before you create one

Coding a flag is a two-part process. The act of removing a flag should not be a separate process from the act of creating a flag. As mentioned above, you should plan for flags during the feature design process. This includes the removal of short-term flags. An easy way to handle the removal process is to write a pull request to remove the flag at the time you create it. Schedule a Github reminder for after the feature is deployed to review and determine if the PR to remove the flag should be committed.

Conduct regular clean-up and review cycles

Avoiding and eliminating technical debt is necessary. If you don’t pay attention to your flags and conduct regular clean-up and review cycles, you can quickly end up with hundreds or thousands of unused feature flags. Here are some ways to schedule flag clean-up.

  • Schedule time at the end of every sprint to review existing flags.
  • Schedule a clean-up/refactoring sprint at a regular cadence (quarterly, semi-annually, whatever works for your business) to pull out old flags & tags.
  • Make it a competition. Hold a “Capture the Flag” day. The individual or team that removes the most flags wins. (Caution: make sure teams aren’t gaming the system and creating fake flags just to delete them.)

Within LaunchDarkly, we make it easier to identify which flags for removal.

You can:

  • Filter tags by create date to view the oldest flags.
  • View which variations of a flag were recently served. Are 100% of users receiving the same variation?
  • Filter on the last evaluation date of a flag.

Once you have identified a flag for removal, use code references to find all the instances of that flag in your code base.

If not using LaunchDarkly a consistent naming strategy can help you grep the code for instances of flags.

Conclusion

Although I refer to these as best practices, other practices may be better. These are recommendations that we follow and have heard from other customers. Over time these recommendations may change as we learn more. These should be seen as recommendations and suggestions, feel free to modify and alter based on your specific needs. What works well for one company or team may not work well for another team. Future blogs in this series will cover best practices and recommendations around specific use cases. If there is a best practice you would like to share please drop us a line.

Look for more best practices blogs coming soon:

Operational flags best practices

Release management flags best practices

Experimentation flags best practices

Entitlement flags best practices

LaunchDarkly
Serving over 20 trillion feature flags daily to help software teams build better software, faster. LaunchDarkly helps eliminate risk for developers and operations teams from the software development cycle.
Tools mentioned in article
Open jobs at LaunchDarkly
Platform Engineer
- US
<p data-renderer-start-pos="2137"><strong data-renderer-mark="true">About the Job:&nbsp;</strong></p> <p data-renderer-start-pos="2154">As a Platform Engineer, you will help us extend and scale LaunchDarkly's engineering infrastructure. You will build an internal development platform that brings joy to your end users - LaunchDarkly developers - and you are passionate about multiplying our engineering force through automation, orchestration, documentation, and productivity tools.</p> <p data-renderer-start-pos="2503">LaunchDarkly is a rapidly growing software company with a strong mission and vision carried out by a talented and diverse team of employees. Our goal is to help teams build better software, faster. You'll join a small team from companies like Atlassian, Intercom, and Twitter, and you'll have an immediate impact with our product and customers.</p> <h4>Responsibilities:</h4> <ul> <li> <p data-renderer-start-pos="2874">Collaborate with engineering teams to identify bottlenecks and areas for improvement in their development lifecycle, including Infrastructure as Code (IaC) templates for consistent provisioning.</p> </li> <li> <p data-renderer-start-pos="3072">Implement tools and processes to increase developer productivity and reduce time-to-market.</p> </li> <li> <p data-renderer-start-pos="3167">Automate infrastructure provisioning, scaling, and management to ensure efficiency and reliability.</p> </li> <li> <p data-renderer-start-pos="3270">Lead the design and implementation of our internal developer platform, empowering development teams to build and operate their services faster and more effectively.</p> </li> <li> <p data-renderer-start-pos="3438">Ensure the platform is scalable, secure, and aligned with best practices.</p> </li> <li> <p data-renderer-start-pos="3515">Troubleshoot and resolve delivery pipeline issues to ensure a reliable release process.</p> </li> <li> <p data-renderer-start-pos="3606">Keep up-to-date with platform engineering industry trends and emerging technologies.</p> </li> </ul> <h4>Qualifications:</h4> <ul> <li> <p data-renderer-start-pos="3713">You possess excellent communication and collaboration skills. You play well on a small, tight-knit team.</p> </li> <li> <p data-renderer-start-pos="3821">You are a self‐starter and problem solver, willing to solve hard problems and work independently when necessary. You identify potential problems and nip them in the bud before they surface.</p> </li> <li> <p data-renderer-start-pos="4014">You have a passion for reducing toil for yourself and your colleagues, and love solving problems with scripts and automation (e.g. with Python and Bash.)</p> </li> <li> <p data-renderer-start-pos="4171">You have successfully run large-scale production systems on public cloud infrastructure.</p> </li> <li> <p data-renderer-start-pos="4263">You have strong proficiency in building and maintaining CI/CD pipelines with tools like CircleCI and Spinnaker.</p> </li> <li> <p data-renderer-start-pos="4378">You are familiar with running systems with a service-oriented architecture.</p> </li> <li> <p data-renderer-start-pos="4457">You have written software in languages like Go or Python.</p> </li> <li> <p data-renderer-start-pos="4518">You have extensive experience codifying infrastructure with tools like Terraform.</p> </li> </ul> <div> <p><strong>Pay:</strong></p> <p>Target pay ranges based on Geographic Zones* for Level P3:</p> <ul> <li>Zone 1: San Francisco/Bay Area or New York City Metropolitan Area: $150,000-176,000**</li> <li>Zone 2: Boston, DC, Irvine, LA, Monterey, Santa Barbara, Santa Rosa, Seattle: $135,000-158,000**</li> <li>Zone 3: All other US locations: $127,000-150,000**</li> </ul> <p>Target pay ranges based on Geographic Zones* for Level P5:</p> <ul> <li>Zone 1: San Francisco/Bay Area or New York City Metropolitan Area: $200,000-235,000**</li> <li>Zone 2: Boston, DC, Irvine, LA, Monterey, Santa Barbara, Santa Rosa, Seattle: $180,000-212,000**</li> <li>Zone 3: All other US locations: $170,000 - $200,000**</li> </ul> <p data-renderer-start-pos="6572"><em data-renderer-mark="true">*Within the United States, our geographic pay zones are defined by counties surrounding major metropolitan areas.<br>**Restricted Stock Units (RSUs), health, vision, and dental insurance, and mental health benefits in addition to salary.</em></p> <p data-renderer-start-pos="6572"><em data-renderer-mark="true">LaunchDarkly operates from a place of high trust and transparency; we are happy to state the pay range for our open roles to best align with your needs. Exact compensation may vary based on skills, experience, degree level, and location.</em></p> </div> <h4><strong>About LaunchDarkly:</strong></h4> <p>Modern software delivery was supposed to be the foundation for a thriving digital business but reality has proven otherwise. Slow, inefficient development cycles, costly outages, and fragmented customer experiences are preventing developers from building their best software. The LaunchDarkly platform helps developers innovate on new features faster while protecting them with a safety valve to instantly rewind when things go wrong. Developers can target product experiences to any customer segment and maximize the business impact of every feature. And by gradually rolling out new application components, they escape nightmare "big-bang" technology migrations.&nbsp;</p> <p>The LaunchDarkly platform was built to guide engineers to the next frontier of DevOps by:</p> <ul> <li>Improving the velocity and stability of software releases, without the fear of end customer outages</li> <li>Delivering targeted experiences by easily personalizing features to customer cohorts</li> <li>Maximizing the business impact of every feature through the ability to experiment and optimize</li> <li>Coordinating the release and optimization of software to provide consistent experiences across mobile platforms and device types</li> <li>Improving the effectiveness and productivity of engineering teams, by providing insights into engineering cadence and stability</li> </ul> <p>At LaunchDarkly, we believe in the power of teams. We're building a team that is humble, open, collaborative, respectful and kind. We are an equal opportunity employer and value diversity at our company. We do not discriminate on the basis of race, religion, color, national origin, gender, gender identity, sexual orientation, age, marital status, veteran status, or disability status.<br><br>One of our company values is 'Widen the Circle'. Which means we seek out diversity of perspectives to get better results. We understand everyone has their own unique talents and experiences. We encourage you to apply to this role even if you don’t think you meet 100% of the qualifications outlined above. We can find out together if it's the right match for your skillset.</p> <p class="p1">Learn more about the interview process &amp; what it’s like to work with <a class="css-tgpl01" href="https://www.gem.com/lp/landing-pages/launchdarkly-product-delivery" data-testid="link-with-safety" data-renderer-mark="true">LaunchDarkly's Product Delivery team</a>!</p> <p class="p1"><span class="s1"><strong>Do you need a disability accommodation?</strong></span></p> <p class="p1">Fill out this&nbsp;<a href="https://docs.google.com/forms/d/e/1FAIpQLSdYb_7upYMtdRVXzvXGHGfQw0pU2FNma-6Rwp-I6NjKm7SYNw/viewform"><span class="s2">accommodations request form</span></a>&nbsp;and someone from our People Operations team will contact you for assistance.&nbsp;</p>
Enterprise Solutions Engineer (Pre-Sa...
London, England, United Kingdom
<h4>About the Job:</h4> <p>As a Solutions Engineer, you will educate and guide prospects on the proper implementation of LaunchDarkly's SaaS product and Private Instances. You are passionate about trends and technologies involved in modern application development.&nbsp;You will be the technical voice during our sale and ensure our customers are comfortable with the way our systems work. You are passionate about the developer tools space and helping development teams eliminate risk and deliver value.</p> <p data-renderer-start-pos="1601">LaunchDarkly is a rapidly growing software company with a strong mission and vision carried out by a talented and diverse team of employees. Our goal is to help teams build better software, faster. Software powers the world and LaunchDarkly empowers all teams to deliver and control their software.</p> <p data-renderer-start-pos="1601">Please note this position is a Pre-Sales Engineer role, working alongside our existing SE team and providing key support and technical insight throughout the sales cycle.&nbsp;</p> <h4>Responsibilities:</h4> <ul> <li data-renderer-start-pos="1924">Evangelize and advise customers on the importance and different uses of feature flags and how to administer them</li> <li data-renderer-start-pos="2040">Presenting solutions to customer's challenges implementing feature flags across large monolith and microservice applications, large organizations, and different technology stacks</li> <li data-renderer-start-pos="2218">Become a domain expert on LaunchDarkly architecture</li> <li data-renderer-start-pos="2273">Demo LaunchDarkly product to technical and business audiences</li> <li data-renderer-start-pos="2338">Become a subject matter expert on LaunchDarkly and communicate our value and features to potential customers</li> <li data-renderer-start-pos="2450">Be the voice of the customer by translating, aggregating, and representing customer feedback to the Product and Engineering teams</li> </ul> <h4>Qualifications:</h4> <ul> <li data-renderer-start-pos="2608">4+ years of experience consulting with enterprise customers and large development teams</li> <li data-renderer-start-pos="2700">You led successful technical proof of concepts&nbsp;</li> <li data-renderer-start-pos="2751">Proven success in building strong customer relationships</li> <li data-renderer-start-pos="2811">Ability to learn and synthesize large amounts of information with little context</li> <li data-renderer-start-pos="2895">Effective communicator with the ability to simplify complex technical concepts</li> <li data-renderer-start-pos="2977">A self‐starter and problem solver, willing to take on hard problems and work independently when necessary.</li> <li data-renderer-start-pos="3116">Experience working with teams that underwent development process transformation</li> <li data-renderer-start-pos="3199">Familiarity with at least one of our supported languages: Java, .NET, GO, JS, Python, PHP, Node, Ruby, Rails, iOS, or Android</li> <li data-renderer-start-pos="3328">Experience with data persistence technologies like Varnish or Redis</li> </ul> <p><strong>Specific Requirements:</strong></p> <ul> <li>Must be able and willing to travel as needed</li> </ul> <h4><strong>About LaunchDarkly:</strong></h4> <p>Modern software delivery was supposed to be the foundation for a thriving digital business but reality has proven otherwise. Slow, inefficient development cycles, costly outages, and fragmented customer experiences are preventing developers from building their best software. The LaunchDarkly platform helps developers innovate on new features faster while protecting them with a safety valve to instantly rewind when things go wrong. Developers can target product experiences to any customer segment and maximize the business impact of every feature. And by gradually rolling out new application components, they escape nightmare "big-bang" technology migrations.&nbsp;</p> <p>The LaunchDarkly platform was built to guide engineers to the next frontier of DevOps by:</p> <ul> <li>Improving the velocity and stability of software releases, without the fear of end customer outages</li> <li>Delivering targeted experiences by easily personalizing features to customer cohorts</li> <li>Maximizing the business impact of every feature through the ability to experiment and optimize</li> <li>Coordinating the release and optimization of software to provide consistent experiences across mobile platforms and device types</li> <li>Improving the effectiveness and productivity of engineering teams, by providing insights into engineering cadence and stability</li> </ul> <p>At LaunchDarkly, we believe in the power of teams. We're building a team that is humble, open, collaborative, respectful and kind. We are an equal opportunity employer and value diversity at our company. We do not discriminate on the basis of race, religion, color, national origin, gender, gender identity, sexual orientation, age, marital status, veteran status, or disability status.<br><br>One of our company values is 'Widen the Circle'. Which means we seek out diversity of perspectives to get best results. We understand everyone has their own unique talents and experiences. We encourage you to apply to this role even if you don’t think you meet 100% of the qualifications outlined above. We can find out together if it's the right match for your skillset.</p> <p class="p1"><span class="s1"><strong>Do you need a disability accommodation?</strong></span></p> <p class="p1">Fill out this&nbsp;<a href="https://docs.google.com/forms/d/e/1FAIpQLSdYb_7upYMtdRVXzvXGHGfQw0pU2FNma-6Rwp-I6NjKm7SYNw/viewform"><span class="s2">accommodations request form</span></a>&nbsp;and someone from our People Operations team will contact you for assistance.&nbsp;</p> <p>&nbsp;</p>
Senior Analytics Engineer
Oakland, California, United States
<h4><strong>About the Job:<br></strong></h4> <p>LaunchDarkly is seeking an experienced Analytics Engineer to join our data team. You will work with other Data Engineers, Analytics Engineers, and stakeholders across the company to deliver data insights that create material impacts to our business.</p> <h4>Responsibilities:</h4> <ul class="ak-ul" data-indent-level="1"> <li> <p data-renderer-start-pos="2997">Develop data-driven solutions to critical business problems by leveraging our data warehouse, analytics tools, and scripting languages.</p> </li> <li> <p data-renderer-start-pos="3136">Partner with stakeholders throughout the company to drive improved business results in their areas by providing creative technical solutions to their most pressing business challenges.</p> </li> <li> <p data-renderer-start-pos="3325">Translate quantitative analyses and findings into clear visuals, written documentation, and other data assets for non-technical end users.</p> </li> <li> <p data-renderer-start-pos="3468">Provide suggestions for improving the reliability, ease of use, and performance of the Data Team’s technical infrastructure.</p> </li> <li> <p data-renderer-start-pos="3596">Form strong relationships with your team and refine our best practices e.g. naming convention, data modeling, and data quality testing.</p> </li> <li> <p data-renderer-start-pos="3735">Enable users across the organization to self-serve requests using our explorable data sets</p> </li> </ul> <h4>Qualifications:</h4> <ul> <li> <p data-renderer-start-pos="3848">5+ years of professional experience as an Analytics Engineer, Data Scientist, or similar.</p> </li> <li> <p data-renderer-start-pos="3941">A Bachelor’s degree in a technical field (Computer Science, Physics, Math, Economics, etc)</p> </li> <li> <p data-renderer-start-pos="4036">An ability to balance humility with rigorous standards for work quality</p> </li> <li> <p data-renderer-start-pos="4111">A curious and growth-oriented mindset towards learning and teaching.</p> </li> <li> <p data-renderer-start-pos="4183">Ability to understand, tackle, and communicate problems from both technical and business perspectives</p> </li> <li> <p data-renderer-start-pos="4288">Experience with data modeling and warehousing concepts</p> </li> <li> <p data-renderer-start-pos="4346">Proficient in Snowflake (SQL), Python, and visualization tools</p> </li> <li> <p data-renderer-start-pos="4412">Proficient with advanced statistical techniques</p> </li> <li> <p data-renderer-start-pos="4463">Comfortable working in DBT and AWS Data Tools.</p> </li> </ul> <p><strong>Pay:</strong></p> <p data-renderer-start-pos="6395"><em data-renderer-mark="true">Target pay range for a Level P4 in San Francisco/Bay Area: </em><em>$173,000 - $204,000*</em></p> <p data-renderer-start-pos="6451"><em data-renderer-mark="true">*Restricted Stock Units (RSUs), health, vision, and dental insurance, and mental health benefits in addition to salary.</em></p> <p data-renderer-start-pos="6572"><em data-renderer-mark="true">LaunchDarkly operates from a place of high trust and transparency; we are happy to state the pay range for our open roles to best align with your needs. Exact compensation may vary based on skills, experience, degree level, and location.</em></p> <h4><strong>About LaunchDarkly:</strong></h4> <p>Modern software delivery was supposed to be the foundation for a thriving digital business but reality has proven otherwise. Slow, inefficient development cycles, costly outages, and fragmented customer experiences are preventing developers from building their best software. The LaunchDarkly platform helps developers innovate on new features faster while protecting them with a safety valve to instantly rewind when things go wrong. Developers can target product experiences to any customer segment and maximize the business impact of every feature. And by gradually rolling out new application components, they escape nightmare "big-bang" technology migrations.&nbsp;</p> <p>The LaunchDarkly platform was built to guide engineers to the next frontier of DevOps by:</p> <ul> <li>Improving the velocity and stability of software releases, without the fear of end customer outages</li> <li>Delivering targeted experiences by easily personalizing features to customer cohorts</li> <li>Maximizing the business impact of every feature through the ability to experiment and optimize</li> <li>Coordinating the release and optimization of software to provide consistent experiences across mobile platforms and device types</li> <li>Improving the effectiveness and productivity of engineering teams, by providing insights into engineering cadence and stability</li> </ul> <p>At LaunchDarkly, we believe in the power of teams. We're building a team that is humble, open, collaborative, respectful and kind. We are an equal opportunity employer and value diversity at our company. We do not discriminate on the basis of race, religion, color, national origin, gender, gender identity, sexual orientation, age, marital status, veteran status, or disability status.<br><br>One of our company values is 'Widen the Circle'. Which means we seek out diversity of perspectives to get better results. We understand everyone has their own unique talents and experiences. We encourage you to apply to this role even if you don’t think you meet 100% of the qualifications outlined above. We can find out together if it's the right match for your skillset.</p> <p class="p1"><span class="s1"><strong>Do you need a disability accommodation?</strong></span></p> <p class="p1">Fill out this&nbsp;<a href="https://docs.google.com/forms/d/e/1FAIpQLSdYb_7upYMtdRVXzvXGHGfQw0pU2FNma-6Rwp-I6NjKm7SYNw/viewform"><span class="s2">accommodations request form</span></a>&nbsp;and someone from our People Operations team will contact you for assistance.&nbsp;</p>
Backend Engineer, Data Pipeline
Oakland, California, United States
<p data-renderer-start-pos="1895"><strong data-renderer-mark="true">About the Job:</strong></p> <p data-renderer-start-pos="1911">We are currently looking for a talented Software Engineer to join our Experimentation Product team. You will help us architect and write fast, reliable, and scalable data processing tools to process data from our thousands of customers and their hundreds of millions of users around the world. We're looking for someone who knows what it takes to deliver value to customers and takes pride in the quality of their work.</p> <p data-renderer-start-pos="2332">Our data platform processes events from over twenty billion feature flag evaluations, and billions of experimentation metrics events daily. The core technologies we use daily include Golang, Scala, Kinesis, and Flink. As part of our you-build-it-you-run-it culture, all developers may be responsible for supporting applications in production, including on-call.</p> <p data-renderer-start-pos="2695">Your work will directly reflect on the customer experience to allow them to run the most effective experiments possible.</p> <h4 id="Responsibilities:" data-renderer-start-pos="2821"><strong data-renderer-mark="true">Responsibilities:</strong></h4> <ul class="ak-ul" data-indent-level="1"> <li> <p data-renderer-start-pos="2842">Working with a modern data stack and open source frameworks</p> </li> <li> <p data-renderer-start-pos="2905">Build and expand our data platform, pipeline, and services</p> </li> <li> <p data-renderer-start-pos="2967">Design data pipelines for new products and evolving customer needs</p> </li> <li> <p data-renderer-start-pos="3037">Collaborate with product team to influence and deliver user-facing features</p> </li> <li> <p data-renderer-start-pos="3116">Monitor and improve data pipeline performance for continuous improvement</p> </li> <li> <p data-renderer-start-pos="3192">Champion engineering standards, tooling, and processes</p> </li> </ul> <p data-renderer-start-pos="3250"><strong data-renderer-mark="true">Qualifications:</strong></p> <ul> <li data-renderer-start-pos="3269">Proven experience and fluency in a JVM language or Golang</li> <li> <p data-renderer-start-pos="3330">Experience building data platforms (e.g. using Flink, Kafka, DataFlow, Hadoop, Spark)</p> </li> <li> <p data-renderer-start-pos="3419">Experience with data pipelines, distributed systems, and large-scale data processing</p> </li> <li> <p data-renderer-start-pos="3507">Strong communication skills, a positive attitude, and empathy</p> </li> <li> <p data-renderer-start-pos="3572">You hold yourself and others to a high bar when working with data systems</p> </li> <li> <p data-renderer-start-pos="3649">You value high code quality, automated testing, and other engineering best practices</p> </li> <li> <p data-renderer-start-pos="3737">Experience with AWS</p> </li> <li> <p data-renderer-start-pos="3760">Experience with experimentation systems / products</p> </li> <li> <p data-renderer-start-pos="3814">Working knowledge of ETL and a query language</p> </li> </ul> <div> <p><strong>Pay:</strong></p> <p data-renderer-start-pos="3872"><em data-renderer-mark="true">Target pay range for a Level P5 in San Francisco/Bay Area: $200,000-$235,000*</em></p> <p data-renderer-start-pos="6451"><em data-renderer-mark="true">*Restricted Stock Units (RSUs), health, vision, and dental insurance, and mental health benefits in addition to salary.</em></p> <p data-renderer-start-pos="6572"><em data-renderer-mark="true">LaunchDarkly operates from a place of high trust and transparency; we are happy to state the pay range for our open roles to best align with your needs. Exact compensation may vary based on skills, experience, degree level, and location.</em></p> </div> <h4><strong>About LaunchDarkly:</strong></h4> <p>Modern software delivery was supposed to be the foundation for a thriving digital business but reality has proven otherwise. Slow, inefficient development cycles, costly outages, and fragmented customer experiences are preventing developers from building their best software. The LaunchDarkly platform helps developers innovate on new features faster while protecting them with a safety valve to instantly rewind when things go wrong. Developers can target product experiences to any customer segment and maximize the business impact of every feature. And by gradually rolling out new application components, they escape nightmare "big-bang" technology migrations.&nbsp;</p> <p>The LaunchDarkly platform was built to guide engineers to the next frontier of DevOps by:</p> <ul> <li>Improving the velocity and stability of software releases, without the fear of end customer outages</li> <li>Delivering targeted experiences by easily personalizing features to customer cohorts</li> <li>Maximizing the business impact of every feature through the ability to experiment and optimize</li> <li>Coordinating the release and optimization of software to provide consistent experiences across mobile platforms and device types</li> <li>Improving the effectiveness and productivity of engineering teams, by providing insights into engineering cadence and stability</li> </ul> <p>At LaunchDarkly, we believe in the power of teams. We're building a team that is humble, open, collaborative, respectful and kind. We are an equal opportunity employer and value diversity at our company. We do not discriminate on the basis of race, religion, color, national origin, gender, gender identity, sexual orientation, age, marital status, veteran status, or disability status.<br><br>One of our company values is 'Widen the Circle'. Which means we seek out diversity of perspectives to get better results. We understand everyone has their own unique talents and experiences. We encourage you to apply to this role even if you don’t think you meet 100% of the qualifications outlined above. We can find out together if it's the right match for your skillset.</p> <p class="p1">Learn more about the interview process &amp; what it’s like to work with <a class="css-tgpl01" href="https://www.gem.com/lp/landing-pages/launchdarkly-product-delivery" data-testid="link-with-safety" data-renderer-mark="true">LaunchDarkly's Product Delivery team</a>!</p> <p class="p1"><span class="s1"><strong>Do you need a disability accommodation?</strong></span></p> <p class="p1">Fill out this&nbsp;<a href="https://docs.google.com/forms/d/e/1FAIpQLSdYb_7upYMtdRVXzvXGHGfQw0pU2FNma-6Rwp-I6NjKm7SYNw/viewform"><span class="s2">accommodations request form</span></a>&nbsp;and someone from our People Operations team will contact you for assistance.&nbsp;</p>
Verified by
Software and Product Engineer
Software Engineer
Computer Science
Physics
Director Marketing
Software Engineer
Engineering Manager
Software Engineer
Software Engineeer
VP of Product and Engineering
Engineering Lead
Software Engineer
Special Circumstances
Demand Program Manager
You may also like