Define, Design & Build Features Overview
Developing Joyfully is an on-going and organic process. The process we describe in the book is the process we follow most often.
The stages of Joyfully
- Stage 1: Product scopes, designs and refines a chunk of features.
- Stage 2: Product and engineering align around the details.
- Stage 3: Engineering crews build the features.
Figure 8 The Joyfully process
Multiple chunks are running through our process at any given time.
Due to the current size of our engineering team, we typically have three chunks being built at a time, each by an engineering crew. Soon this will expand to four.
Flexing the process
For all objectives we follow the path that makes the most sense for the work instead of adhering strictly to process.
Occasionally we will batch many chunks through one step at the same time. For instance: for our Fully Flexible Conversations objective we defined and carved up all the features for four big chunks at once.
Our engineers also designed the Group Architecture for most of the work upfront. This happened at the same time as product began to design the features.
For engineering led features, such as codifying our multi-regional infrastructure, the process is once again flexed. In this case there was a lot of investigation and prototyping along with Group Architecture that occurred at the start.
There was no requirement for Design and thereafter the process continued as usual.
Our joyful practices
A weekly organisation wide showcase. Once a week our entire organisation comes together to share our work with each other. This includes all 30 people in our organisation across all locations and functions. The idea is to share work early and often, rather than waiting until the end of a piece of work.
A weekly Product & Engineering catchup. Once a week we all discuss:
- Each item the engineers are working on at a task level, and demo any visual work.
- We will unpack any risks such as work taking longer than anticipated, or technical challenges.
- At a high level we gauge how each chunk of work is going, and update our forecasts.
- We will discuss and plan how to ship our releases.
- Product will share upcoming work, and share updates about the roadmap.
A weekly Product catch up. Product come together to discuss:
- Each ICP customer. We review any updates, tasks and metrics for each customer, and form a plan if needed.
- Product updates. We will check-in on each other and make sure we are on track, and offer support if needed.
- Other projects. Often product has other large projects on the go. For example: we recently launched a new Help Center for customers.
A weekly Engineering catch up. Engineers come together, and discuss:
- How the code base is shifting.
- New concepts entering the code base.
- New patterns or tools that are being introduced.
Engineers share regular presentations of new features under the hood. In enough detail to make the code approachable. The crew that completes the work presents it to the rest of engineering. This exercise is great for ensuring technical documentation is clear.
A bi-weekly retrospective. Product and Engineering will have a regular retrospective. There isn't a standard format for retrospectives, each week is different. Sometimes they are serious, and other times they are fun!
"Once we did a retrospective where we each described the V3.0 project as if it were a movie. We gave it a title, a genre, a main character and a twist. It was heaps of fun."