Amplify - Scaleups and Hyper-Growth Companies
Amplify is targeted towards helping scaleups and post-PMF companies grow rapidly and sustainably. It includes everything in Launch and more.
A different engineering and design mindset is required to bring product endeavours to life in the hyper-growth phase. As the product, marketing, engineering, & design teams, we must unite & work as a unit. We'll need delivery processes & frameworks that are meant for hyper-growth.
In Amplify, on top of the practices in Launch, we focus on
Audit: Review the codebase, design system, infrastructure, configuration, build pipeline, testing and release processes. Identify the gaps and create a plan to overcome them.
Systematise: Systems scale. Processes and practices provide the structure and clarity required to execute consistently. What works in the 0-1 journey differs from the fastest path in the 1-N journey—we'll leverage battle-tested processes to help them short-circuit their journey.
Build: This is the implementation phase - the magic is in being able to plan so precisely that when you’re building, there are no how or what questions. Everybody knows exactly what to do, how to do it, and why they are doing it, leading to a single cohesive unit moving rapidly in one direction and punching way above their weight class.
Audit
Code-base Audits
It is a detailed analysis of the codebase, the expected product flows, third-party integrations, & software choices. We’ll use tools for automation to reduce the time to get critical information and take data-driven action and decisions.
The first thing to do when you’re in a hole is to stop digging. Essentially, you need to know what not to do. Instead of gut and intuition, we must use data to identify what not to do, and what is the highest priority items that need attention.
Static Code Analysis: We'll start by first running the codebase through a tool like sonar, or codacy and run static code analysis on the codebase. This will highlight the maintainability, readability, tech-debt, and critical issues prevalent in the system. This will ensure our refactoring process first focusses on high impact low effort issues. CPU and Memory Profiling: Run the application and check memory and CPU utilisation to identify resource intensive operations, bottlenecks and leaks. Monitor all hardware components like Databases, Caches, etc.
Traffic / Cost Estimate: Perform load tests using k6, or locust (This is a team activity, pizza for everyone involved), use the cost template created by Bhavesh and feed in the details. After the initial benchmark rationalise 3 sets of traffic data points and create the report.
Performance Profiling: Profile the application across various Key User Flows (KUFI).
Systematise
Release Management
Release management is an art. You've been working tirelessly to get a better experience out to your users, don't miss the boat for not crossing a few t's and dotting some i's. Release management is about deciding when to release, what activities to perform before the releases, during and after it. And then it's about doing all of those things. It starts from the very basics - what should this release include. You see what I did there, when you kick start a new endeavour, or a sprint the release cycle needs to be very clear. Good releases don't just happen, they are orchestrated.
Your release engineering determines the impact of all the hard work put into creating the features that go into a release. Instead of your releases being 0 or 1, good release management allows them to always become 1.
History is littered with examples of bad release management, for example, Knight Capitals suffered a lost of nearly $440 million cause the latest release wasn't applied to one out of 8 servers. Here's a list of the different activities that we perform to enable smooth releases: Release Planning: At the minimum we aspire to have a production release at the end of every Sprint. What goes as part of this release needs to be clear before beginning the sprint. Parallel features in a release need to be accounted for with feature flags, we never want to hold back the release if a ticket isn't ready.
Sprint Release Notes:** SPRs** create transparency. It clearly highlights what the objectives of the release are, what artefacts are produced, performance metrics, deviation in quarterly goals, retrospective points, important decisions, etc. It's a checkpoint in the product journey and serves as a window into that release for future reference. Stakeholder Communication: Clearly communicate the release date, time, changes, and features before hand. Have a rollback plan in place. Clearly mention what the threshold to initiate the rollback plan is. Run e2e in production systems that cover all important flows immediately after deployments Phased Rollouts: Releases needn't be a 0 or 1 activity. In an all or nothing situation the risk is too high. We leverage phased rollouts to ensure that things work as expected in a smaller group, and then gradually increase the percentage of users that have access to the new release ensuring seamless crash-free adoption. Feature behind flags: This enables toggling features on/off based on geography, tenant, or any other attribute. It also enables parallel feature development with independent release cycles. Production E2E tests: As much as we try to ensure that there is parity across all environments, there are cases where certain issues are found only on production. Leverage the UMAAMI framework to identify Key User Flows, and then design automation tests to run them in a live production environment. This is an essential post release step. User Guides: Whether your product is B2B or B2C or some variation of it, User Guides are an absolute necessity. PMs will start writing User Guides at the start of the sprint, as features and modules are built out they'll add the supporting GIFs, and images to it. The User Guides serve as your product handbook, & onboarding kit while creating absolute clarity in execution. Rollback plan: Though this is important I hope we never use it. If this is a major release (Major.Minor.Patch) let's make sure we have a rollback plan. This includes ensuring that database integrity is maintained, unsuccessful operations are logged and automatically retried once our systems are back up amongst other things that ensure a seamless experience to the users. Dependency Mapping: When you're releasing a part of an ecosystem it's important to ensure that the effort is coordinated across all verticals and there is alignment in the release strategy. Monitoring Observability: We've already got alerts set up and we'll be proactively notified when the thresholds are breached - however post releasing, we've just added a new variable in the equation. Monitor very closely to ensure there are no signs of failure.
Build
Visualisation and Business Intelligence
It includes collecting data about the user's activities, the screens they visit, and the difficulties they face. Data collection is the first part, and making sense of this data to forecast patterns, and predict outcomes requires it to be analysed through visualisations and algorithms.
It enables us to identify feature acceptance & usage, increases understanding of user intents and encourages building features and products that enhance the user experience. It allows us to increase engagement and catalyse growth.
For example, Amazon’s data-driven product recommendation system led to a 29% increase in average order value, while GE’s predictive maintenance solutions led to a 30% reduction in unscheduled maintenance in their aviation division, and even eBay saw an 18% higher conversion when using personalised data-driven marketing campaigns.
Data Collection: Use tools like Google Analytics, MixPanel, Clarity, UXCam to collect usage information.
Goal Definition, and measurement: Each feature needs to have a goal definition. We use PRFAQ methodology at the time of feature inception. Each feature should have a usage goal associated to it, and we should use tools to actually measure usage and actual uptake. Depend on meaningful metrics to let data shape the path ahead.
In App Feedback, surveys and suggestions: Talk to customers. Create mechanisms for in-app feedback, suggestions and surveys. Work with the business vertical reprresentative in your squad to understand why they are sponsoring a certain feature.
Visualisations and Intelligence: Leverage tools like tableau, powoerBI, quicksights, etc to create visualisations and infer insights from data. Actively create hypothesis and validate those with data. Use predictive and forecasting tools to derive insights from data and leverage that to make informed data-driven decisions.
Last updated