We have our product strategy. We have strategic alignment. We have a single prioritised roadmap.
Unified Engineering allows us to map our efforts directly to that roadmap.
At Joyous, all engineers are part of a single team. Our team has shared ownership of the whole codebase. Engineers work on roadmap items in priority order.
As items complete the freed engineers start on the next item or help with ongoing items.
Unified engineering is the opposite of the Spotify squad model. No silos, no dependencies, no arbitrary splits. One roadmap, one engineering team.
Unified engineering consists of the following principles:
All engineers are full stack and are able to contribute to all portions of the codebase. No individual or group of individuals has ownership over any section of code.
The code base is considered as a whole, not as parts.
This is very important to enable all engineers to work on any part of the code base.
We achieve this by:
If we want a shared understanding the code base must be easy to understand.
We achieve this primarily through two means:
For example at Joyous we use TypeScript for everything.
We have a single defined way of writing TypeScript. We enforce this standard through compiler options, tools and pull request reviews. We use Prettier (code formatting) and ESLint (static code analysis).
To keep the cognitive load of engineering low, we write as little code as we can. We try to only write code that deals with business logic. We try to keep business concerns simple and separated from one another. We don't force separation as this adds its own flavour of complexity.
A few guidelines we follow:
Unified engineering leads to needing fewer engineers. All engineers are focusing on the top business priorities at all times.
With Unified Engineering we achieve our goals with a smaller and more efficient team. Engineering Crews describes how we scaled unified engineering.