Instagram just launched the Repost feature.
But have you ever stopped to think about how a feature like this is born and evolves until it reaches your app?
In a product with millions of users and a large team behind it, almost nothing is simple. There’s a path, a process, and it can inspire even smaller projects.
Here I’ll walk you through the 10 most common steps in creating a new feature at tech companies that follow modern development best practices.

This is where it all begins. The Product team defines the problem, the goal, and the proposed solution in a document called a PRD.
The design may or may not be ready by the end of this stage.
In the case of the Repost:
The proposal is then shared with stakeholders, people directly or indirectly impacted by the feature (engineering, marketing, support, compliance, etc).
In this phase, engineering, product, and design discuss together, and an engineer is assigned as the owner of the delivery and writes the RFC: a technical document explaining how the feature will be implemented.
It covers:
The document is open for comments and suggestions from all technical areas involved. A solution is proposed along with open questions that still need validation from the team.
After that, the RFC is shared with other stakeholders, who can (and should) comment, suggest improvements, or raise concerns.
With the RFC approved, it’s time to prepare the ground for refinement.
The feature lead organizes everything needed for the deeper technical discussion:
This step ensures the refinement doesn’t become an abstract conversation, but rather an objective and productive meeting with supporting materials and a clear scope.
The refinement is the meeting where engineering, product, and design dive deep into the feature’s execution. This is where the team gets into the technical details and defines, for example:
All these decisions are documented for the next step.
Formal documentation of the solution’s architecture.
Created by engineering, it serves as a technical reference and covers:
The ADR is especially important in large teams or with multiple squads, as it ensures any technical person can understand how the feature was designed.
With PRD, RFC, refinement, and ADR approved, the execution phase begins.
Here, engineers work to implement the feature according to the scope and decisions already defined. During this phase:
In parallel, the team already starts thinking about the QA (Quality Assurance) strategy for the next stages.
This is where validation begins for real, and in depth.
The main types of tests applied are:
The QA team creates test plans, looks for failures, simulates regressions, and documents everything.
Now it’s time to find out: does what was implemented match what was envisioned?
Design and product test the feature in the staging environment (an environment that simulates what the end user uses):
If anything is off, adjustments are made before launch.
With everything approved, the launch begins, but not all at once.
In addition to the feature flag, the famous phased release strategy is used:
During this time, the team monitors:
This greatly reduces the risk of launching something with flaws at scale, and allows reverting the feature in time.
At the end of the phased release that the team closely monitored, the following are analyzed:
If the data is positive and everything is stable, the team proceeds to the global launch, releasing the feature to 100% of the user base.
From there, it officially becomes part of the product and enters the continuous improvement cycle.
Now you know the step-by-step behind a simple button.
Nothing is as simple as it seems.
But with process, collaboration, and good decisions… ideas become code. Code becomes product. And product becomes impact!