Fixed Releases vs. Continuous Deployment (CD) with Frequent, Small Releases
Several CTOs championed the benefits of continuous deployment. By deploying every commit, they argued, updates become small and manageable for users, reducing the risk of major disruptions and accelerating learning. âTrue continuous deployment (trunk-based dev instead of Gitflow, and every commit gets deployed right away) is more likely to reduce the issues that you brought up; while speeding up your orgâs learnings,â explained CA. CA noted that smaller, more frequent releases prevent major UX disruptions and help avoid API-breaking changes that impact customer workflows.
Another CTO shared how their team approached this: âWe donât really do traditional releases. Instead, we push out small updates and features as soon as theyâre ready,â explained Hugo Nogueira. He described this approach as âFluid,â where users are continuously introduced to minor improvements without the shock of major updates.
Feature Flags: Decoupling Deployments from User Experience
Feature flags were highly recommended for managing user impact without slowing development. âFeature flags and CDâthatâs all,â said KB.Â
Feature flags also make it possible to âdecouple code deployments from feature releases,â added CA. With feature flags, teams can deploy code anytime but only roll out visible features to specific users when ready. âYou could probably have release rings for customers depending on how much stability they want,â CA suggested, advocating phased rollouts for different customer segments.
Prioritizing Backwards-Compatible APIs for Corporate Clients
Supporting backwards-compatible APIs is essential for corporate clients, who often integrate once and resist frequent updates. Several CTOs shared how their larger customers rarely update their integrations, making it crucial to keep legacy versions stable. âOnce it was integrated, no matter how many new features we add, they never had the resources or the willingness to upgrade,â one CTO noted.
â We can't just decide to stop supporting old APIs. We have to assume that once APIs are deployed, theyâre going to stay in use long-term. But that shouldnât stop innovationâwe can continue to push new things. Architecturally, I like to think of APIs as interfaces that donât change from the userâs perspective, even if we update their implementation behind the scenes.â - AS
Beware of the unintended:
âKeep in mind: [Hyrumâs Law]Â not limited to the published API capabilitiesâ, - Rupert Rockinger
Even once an interface is in use, clients may start relying on even unintended functionality, which makes strong versioning a necessity.
Segmenting Product Stability Based on Feature Maturity
Rupert Rockinger proposed an approach focused on differentiating stable and evolving product areas. âIf you have a number of larger customers already depending on the product to a point where they would complain about changes, you are likely [at PMF] already (at least for those personas),â he observed. By segmenting the product, companies can provide stability for well-established features while retaining the flexibility to experiment and iterate in less mature product areas.
Proactive Communication and Robust Incident Management
Multiple CTOs stressed that with continuous releases, transparent communication becomes crucial.
âFor bigger, more noticeable changes (especially UX-related), we have a simple flagging system to decide if we need to communicate with users beforehand. We use feature flags for everything, and when something requires user communication, we send out a release email and only toggle the feature on after that.â - Hugo Nogueira
CA and MB suggested setting strict Service Level Agreements (SLAs) for incident resolution, noting that rapid response times are crucial to keep corporate clients satisfied.Â
âAutomate release notes/feature documentation (e.g., by using GitHub tags and release note generation based on issues),â recommended MB, suggesting that automation can help keep clients updated without overloading the development team with manual communication tasks.
Creating a Client Advocate Role
One additional idea emerged around helping clients navigate ongoing updates: the concept of a client advocate role. Rupert Rockinger suggested this role could support clients in adopting changes smoothly and maximizing the productâs value. A client advocate could serve as a bridge, ensuring that users remain engaged and informed despite the platformâs rapid evolution.
Conclusion
Balancing rapid innovation with the stability needs of corporate clients can be challenging, yet achievable with the right strategies. By implementing feature flags and continuous deployment, companies can control user impact and decouple deployments from user experiences. Maintaining backwards-compatible APIs allows corporate clients to rely on stable integrations without slowing down product development. Segmenting feature stability ensures that mature features remain consistent while newer areas continue to evolve. Proactive communication and robust incident management build client trust, fostering a partnership where clients feel informed and supported throughout product changes. Lastly, establishing a client advocate role can provide a personal touch, helping clients navigate and gain value from updates.
These strategies, when combined, create a release approach that not only strengthens product-market fit but also solidifies long-term client relationships.
Implement feature flags and CD to control user impact and decouple deployments.
Maintain backward-compatible APIs for corporate clientsâ stability needs.
Segment feature stability, keeping mature features consistent and innovating on newer ones.
Proactively communicate release and issue updates to build client trust.
Consider a customer advocate role to help clients navigate ongoing changes.