Skip to content

Development process

Juliano Lazzarotto edited this page Aug 19, 2024 · 2 revisions

Overview

Yoroi Mobile and Extension are developed as open-source projects, meaning our entire development process is transparent and collaborative. We use Git, a version control system, to manage and track changes in our code. Here's how it works: When a developer on our team (or anyone else) wants to add a new feature or fix a bug, they first make a copy of the code, known as "cloning the repository." They then work on their changes in a separate branch to keep the main project code clean. Once the changes are ready, they submit a "Pull Request" (PR) on GitHub. A PR is essentially a proposal to merge their changes into the main project. Our team then reviews the PR, providing feedback and requesting adjustments if necessary. Once the changes meet our standards, we merge the PR into the main branch, officially incorporating the updates into Yoroi. This process ensures that every change is carefully considered and tested before becoming part of the official Yoroi Mobile and Extension projects.

Analysis

In the Analysis phase, our technical leaders take a close look at what the new product or feature needs to do. To get a clear picture, they gather as much information as possible from different sources like product managers, designers, and business experts. The more details they collect, the better they can understand what the product needs to accomplish. Once they have all the necessary information, they start planning how to build the product. This involves thinking about all the different parts that will be needed, such as the software that will run behind the scenes (backend), the parts users will interact with (frontend), how data will be stored, and how the system will handle things like security and speed. They also decide which technologies, tools, and software libraries will be used to bring the product to life.

Prepare

The Prepare phase is all about turning the big ideas and plans from the Analysis phase into specific, actionable steps. Imagine you have a big puzzle to solve; this is the stage where we break down that puzzle into smaller pieces so that each piece can be worked on individually. The goal is to make sure every team member knows exactly what they need to do and how it fits into the overall project. By breaking down the work into smaller tasks, we make it easier to manage and track progress.

Planning

During the Planning phase, we map out what needs to be done in the upcoming work cycle, which is usually a set period, like two weeks. The team sets a clear goal that they aim to achieve by the end of this cycle. They also decide which tasks should be prioritized and completed during this time, creating a "to-do" list, known as the cycle backlog. This phase ensures everyone is on the same page and knows what they should focus on in the coming days.

Review

The Review phase is when the team looks back at what they’ve accomplished during the work cycle. They check to see what tasks were completed and, just as importantly, what wasn’t finished. This review helps the team understand what went well and what could be improved. Feedback from stakeholders, who might be clients or internal team members, is especially valuable at this stage. Their input can change priorities or influence the next steps. Sometimes, the team will demonstrate the product to show what’s been built so far and discuss how it benefits users. The review also includes updating our progress towards broader goals (OKRs) to see if we’re on track.

Retrospective

The Retrospective happens at the end of the work cycle and is a time for the team to reflect on how they worked together. They look at their processes, tools, and techniques to see what’s working well and what could be improved. The goal is to continuously find ways to be more effective and efficient, ensuring that the team gets better with each cycle.

Grooming

Grooming is an ongoing process throughout the work cycle where the team takes a closer look at the tasks that need to be done. It’s about making sure that everyone understands what each task involves and clarifying any details that might be unclear. Grooming can happen multiple times during the cycle, especially if a task turns out to be more complicated than initially thought. If more information is needed, tasks might be broken down further and labeled to indicate they need more grooming. This helps keep the work organized and ensures that tasks are well-defined and ready to be tackled.

Product Pre-Production

In the Product Pre-Production phase, the product and design teams check that everything is ready before the product goes live. This is like a final inspection to make sure all the details are in place. They review the technical documentation to ensure it’s up to date, so anyone working with the product has the correct information. They also prepare release notes, which explain what’s new or changed in the product, for the app stores. Additionally, they ensure that translations and written content are correct in all the main languages the product supports. This phase is crucial for ensuring a smooth launch.

Daily Routine

Instead of traditional daily meetings, which can sometimes be time-consuming and less productive, we’ve adopted a more efficient way to stay updated. Each day, our tech leads and product managers keep an eye on progress by reviewing comments and updates that the engineers add to their tasks. These updates are part of the engineers’ daily routine, providing visibility into what everyone is working on and how things are progressing. This method keeps the team informed without the need for lengthy meetings, allowing more time to focus on the actual work. Any blockers must be immediately reported.

Flow

flow

Process summary

New Product Requirement (NPR) Initiation:

The process begins when a new product requirement is identified by the Product and Business Unit (Product+BU). This requirement can come from market needs, customer feedback, or internal business strategies.

Product Decision Context (PDC):

Once the new requirement is recognized, the Product+BU team evaluates the context surrounding this requirement. This step is crucial for understanding the overall impact and aligning it with business goals. The team considers whether the requirement fits within the current product strategy and whether it is feasible from a technical and design perspective.

Design Phase:

If the requirement is approved in the PDC stage, it moves to the Design team. Here, the designers create mockups and information architecture (IA), visualizing how the new feature or product will look and function. This stage ensures that the design aligns with user experience goals and business objectives.

Analysis and Specifications:

The Technical Leads (TL) take over in the Analysis phase, where they gather inputs from various stakeholders, including the product, design, and business teams. They create detailed specifications, outlining the technical requirements needed to implement the new feature. This involves considering backend, frontend, storage, security, and other technical aspects.

Preparation and Task Breakdown:

After the specifications are finalized, the TL team prepares the project by breaking down the specs into executable tasks. These tasks are then categorized into Epics and further detailed to ensure clarity and feasibility.

Planning and Grooming:

The Development Team begins with the Planning phase, where they define the goals for the upcoming cycle and prioritize tasks. Grooming is an ongoing process throughout the cycle, where tasks are reviewed, clarified, and refined as necessary to ensure they are ready for development.

Build Phase:

Once tasks are clear and approved, the Development Team begins building the product. This involves writing code, integrating different components, and creating the actual software based on the specifications and designs.

Pull Request (PR) and Approval:

After the development work is completed, a Pull Request (PR) is submitted for review. The code is thoroughly checked by peers to ensure quality, adherence to standards, and overall correctness. If the PR is approved, it moves to the next stage.

Quality Assurance (QA):

The QA team tests the product to ensure it meets all the requirements and works as expected. This includes functional testing, performance testing, and regression testing to identify any issues or bugs that need fixing.

Security and Compliance:

Following QA, the product undergoes a Security and Compliance review to ensure that it meets all necessary regulations and security standards. This step is critical to protect user data and maintain the integrity of the system.

Final Approval and Pre-Production:

If the product passes all reviews, it receives final approval. The product then moves to the Pre-Production phase, where it is prepared for deployment. This stage involves updating technical/product documentation, and user acceptance testing (UAT) ensuring that everything UI/UX, flow, functionality, translations and copy are correct, and finalizing release notes.

Deployment:

Finally, the product is deployed to production, making it available to users. This step marks the completion of the development cycle, and the team moves on to the next set of tasks or the next cycle.