I use a mental model that helps me classify the work we do, which allows me to communicate and make decisions. I call this mental model "The Mix".
In "The Mix", I classify the work we do as product engineers in:
- Normal product development.
- Implementing the Engineering Roadmap.
- Basic hygiene work.
Normal product developmentNormal product development should be the most common type of work for a Stream Aligned team. It should help to fulfill the mission of the team. It can be composed of new feature development, discovery experiments, feature evolution, etc. I prefer a very lean approach for this work, following agile development methods such as XP or Lean Software Development. It is essential to generate the expected outcomes with the minimal amount of code possible and a good internal quality that minimizes the maintenance cost. Following YAGNI, KISS, Simple design is the perfect approach for this kind of work. We don't know the future. The most efficient way to work is to have the most simple solution that covers our customer's needs without making any "speculative" design that generates tons of accidental complexity in 99% of the cases.
- Focus on outcomes for the customer within the business constraints.
- Evolutionary design uses Simple design and avoids creating anything for future "expected/invented" needs.
- Use a Lean approach (working in small safe steps).
- Avoid solving problems that we don't have.
- High-speed feedback loop.
- Aligned with the Product Roadmap.
Implementing the Engineering RoadmapIn parallel to the product work, it is very common to identify engineering needs derived from the company's engineering strategy. This strategy should prepare and maintain the current and future engineering capability. Examples of this type of work are:
- Designing the system for fast expected growth (the number of customers, engineering team size, etc.).
- A technology stack change.
- A change in the delivery strategy (from On-Prem to SaaS, from Web to mobile, etc.).
- Prepare the architecture to enable work in autonomous teams.
- This kind of work usually affects several Stream Aligned teams simultaneously and requires coordination at the engineering organization level.
- These initiatives require a lot of investment and should be coordinated with the product roadmap and aligned with the company's general strategy.
- Focus on outcomes for the internal architecture and engineering processes.
- Require more upfront effort to design the solution.
- It can be implemented with an agile approach but based on the initial design.
- Low-speed feedback loop.
- By definition, try to solve problems that we don't have (yet).
- It is aligned with the Engineering Roadmap (coordinated with the Product Roadmap).
Basic hygiene workTo develop any nontrivial product, we need to have some practices and development infrastructure that I consider basic hygiene. I'm talking about having a reasonable test strategy, zero-downtime releases, good internal code quality, basic security practices, etc.
In the middle of 2021, not considering these points above seems simply a lack of professionalism.
Using The MixThinking about these three types of work and separating them helps me be more explicit about the context and the appropriate trade-offs in each situation. For example, suppose we are in a Normal Product Development initiative. In that case, we cannot expect big architecture change decisions to emerge, and it is better to focus on small safe steps that add value. At the same time, we take notes to consider some initiatives to introduce in the engineering roadmap.
|Type of needs
If we analyze the current trends in technology using this mental model, some questions arise:
- How do technologies like PaaS or Serverless influence this Mix?
- How does working in Cloud vs. working on-prem affect the engineering roadmap?
- Does it make sense to consider ourselves good professionals if we don't have strong knowledge about hygiene factors?
- How does the mix change in the different phases of the company (startup pre-product-market fit, scale-up, big tech)? And with the life cycle of the product?