Optimizing Flag Deployment and Configuration
Project
Starting in the beginning of 2024, I joined Optimizely, specifically on the Experimentation platform. As the Senior Product UX Designer, I have been responsible for developing and executing our shared vision within experimentation and Optimizely. My primary focus in the team has been on making our platform more user-friendly and ensuring its scalability across Optimizely One.
Deliverables
• High-fidelity interactive prototypes
• Refined designs prepared for launch.
• User Interviews
• Personas
• User journeys and task flows
• Low-fidelity wireframes
• High-fidelity mockups and prototypes
Tools
• Figma
• Lucid Chart
• Origami Studios
Introduction to Feature Flags
A feature flag (or toggle) within experimentation allows developers to enable or disable specific features for different user segments without deploying new code. This approach helps in testing new features, rolling them out gradually, or running A/B tests to determine their impact on user behavior or system performance. Feature flags improve agility by reducing the risks associated with full-scale releases and providing control over who experiences new changes.
Situation
At Optimizely, our customers are facing major difficulties with their current feature flag management within our product. The lack of effective configuration and governance over changes has resulted in the following problems:
- Unrestricted Access:
Currently, there are no safeguards in place. Anyone within the organization can make changes to feature flags or experiments, which poses a substantial risk. - Production Impact:
The lack of governance means that changes can significantly impact the production environment or code. This unmonitored access can lead to unwelcome surprises and disruptions. - Safety and Reliability:
Ensuring that changes akin to code modifications or pull requests (PRs) are safely and reliably implemented is a significant challenge. There are no built-in mechanisms to ensure that modifications are secure and dependable, compromising the overall reliability of the system.
The current systems/approach rely heavily on trust, which is insufficient for managing feature flags and experiments effectively. To address these challenges, a more structured and controlled approach is necessary to improve safety, reliability, and the overall management of feature flags.
What we want to achieve
Empowering Users with Control: Enabling Custom Setup, Approval, and Rejection of Flag Changes.
Task
My main responsibility was to develop a new system for requesting and approving changes within feature flag experimentation. This required a complete overhaul of existing workflows and designing a new approval process, which included everything from setting up an admin dashboard to managing change requests for specific feature flags.
Action
To create a more effective approval flow for feature experimentation, I followed a structured approach that began with user research to understand pain points and needs. This informed the design and implementation of key features. The process combined continuous user feedback and iterative design adjustments to ensure a solution that balances usability and functionality.
- Conduct User Research:
Begin with user interviews and iterative design testing to understand needs and refine the solution. - Outline and Implement Key Features
Develop the approval flow by designing a robust system for setup, specifying approvers, and configuring settings. - Design User Interface:
Create a clear display for new changes, determine the placement of the approval system, and ensure users can track statuses. - Enable Admin Controls:
Allow administrators to efficiently approve or deny changes.
Result
The newly implemented approval flow at Optimizely received very positive feedback, effectively addressing issues related to governance, transparency, and communication. Users appreciated the granular control within a flag, which helped maintain workflow velocity by requiring approval only for specific changes. While there were some concerns about the setup and maintenance of the new system, all participants agreed that it was a significant improvement over the previous situation. Additionally, there was a high demand for in-app notifications among participants, indicating a need for this feature in future iterations. Overall, the flow for requesting, accepting, and setting up approvers was considered straightforward and aligned well with customer needs and expectations.