# Aligning Product & Software Design

## Context

### Average company

* Strong boundaries between Technical and Business&#x20;
* Technical debt ?&#x20;
  * Developers&#x20;
    * "We don't have time to improve our system"&#x20;
    * "We are struggling with technical debt"&#x20;
      * Vicious circle
  * Business
    * "We need more features"

### How to avoid that ?&#x20;

* Problem ?
  * **Project mindset**
    * Get to that end
    * Great for something with a start and an end
    * Optimize the means to that end
* Software product
  * Continuous evolution
    * Not a great fit for project
    * Sequence of valuable increment
  * **Should look at**
    * **Not only cost**&#x20;
    * **Continuous investment**

{% hint style="warning" %}
***"There is a tension between the way we manage project and the way we manage product"***
{% endhint %}

* Product strategy
  * Defined isolated from technology
  * Product backlog created
    * By the business
  * Only there the Dev team is coming in&#x20;
    * Not part of the product definition&#x20;
  * So the **result = Reactive design**&#x20;
    * Do not have time to architect
    * End by begging for time
      * To refactor for example
* As **developers**
  * We must explain the value of designing software
  * Part of the meeting **to contribute**
    * BUT we don't know exactly HOW
  * We need to have something to add
    * &#x20;Be able to explain Biz value of design
      * Not only to be able to organize our code
      * Can have a huge role
        * Examples
          * Enable different teams to work in parallel
          * Need to design our code to do so&#x20;
          * Be able to automate -> for CD purpose
    * Enable the way that we need to work

### Different levels of design

* Enterprise Architecture
  * How your product fits in a larger ecosystem&#x20;
* Solutions Architecture
  * Solution of your product
  * How we re gonna do / split
* Technical Architecture&#x20;
  * What technology
  * SLA
  * ...&#x20;
* Macro Design
  * Components
  * Overall structure&#x20;
* Micro Design
  * Classes
  * Functions
  * Methods

#### When we design ?

{% hint style="info" %}
*"We often struggle to find the time"*
{% endhint %}

### Understand Product design

![](https://1936518372-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MAffO8xa1ZWmgZvfeK2%2F-MBcVOZPsqpv6zCULGa3%2F-MBcmnKdj3n4wwsq5wiC%2Fimage.png?alt=media\&token=1b21193e-2dad-4aa4-aec3-bd00908df842)

* Looks a lot like Waterfall
  * ***Make it iterative***

![](https://1936518372-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MAffO8xa1ZWmgZvfeK2%2F-MBcVOZPsqpv6zCULGa3%2F-MBcmvftoSVhAX9y5cSX%2Fimage.png?alt=media\&token=eb047a6b-6f85-4b39-a58f-fd0efea7e19e)

* Devs involved only in the development
  * Through the product backlog
  * Not able to create the technical strategy
    * Not have time here

![](https://1936518372-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MAffO8xa1ZWmgZvfeK2%2F-MBcVOZPsqpv6zCULGa3%2F-MBcne4v9W-4rFk4UPm5%2Fimage.png?alt=media\&token=30509c85-3c9e-435d-be44-286629b5ebce)

## 1) Ideation

In startup product is part of the company

### Build a vision for the product: NOT A PLAN

* A direction
  * Guiding our work
  * Create a context to offer services

### Product Definition

![](https://1936518372-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MAffO8xa1ZWmgZvfeK2%2F-MBcVOZPsqpv6zCULGa3%2F-MBcq2QJ0CaII-knmBBB%2Fimage.png?alt=media\&token=f491c1ca-2326-4bc5-a42d-a8d7ef2a8918)

### Value Proposition Canvas

* Shape the scope of our product&#x20;
* 1 canvas per customer segmentation

![](https://1936518372-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MAffO8xa1ZWmgZvfeK2%2F-MBcVOZPsqpv6zCULGa3%2F-MBcq8vgV55-EEt0vQ6j%2Fimage.png?alt=media\&token=cbd87e6e-fd35-4e7c-a4ba-3c0d74797a45)

### Technical Feasibility

* Build a technical vision
* Create a unified view with business & technology

![](https://1936518372-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MAffO8xa1ZWmgZvfeK2%2F-MBcVOZPsqpv6zCULGa3%2F-MBcqPKOu_t5-X_Poc-J%2Fimage.png?alt=media\&token=ed7fe539-aee4-4ec7-80e9-a819ac04f8f0)

### Results

{% hint style="success" %}

* Business & technology alignment
* Shared & more realistic product vision
* Context for pro-active & supportive tech strategy
  {% endhint %}

## 2) Strategy

![](https://1936518372-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MAffO8xa1ZWmgZvfeK2%2F-MBcVOZPsqpv6zCULGa3%2F-MBcqjKQAoJmyjMhmFaR%2Fimage.png?alt=media\&token=02dc8258-255d-4a86-9415-d8185a19f290)

### Create a roadmap

* Use Lean Startup approach

![](https://1936518372-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MAffO8xa1ZWmgZvfeK2%2F-MBcVOZPsqpv6zCULGa3%2F-MBcqsSoB_CGOCyd2Qht%2Fimage.png?alt=media\&token=5710cc3f-0ae1-4715-9b3d-f748e791de5a)

### Create an architecture

* Define the technology stack
* Refine what has been done in Tech feasibility&#x20;
* Design to support the way of the business

### Results

{% hint style="success" %}

* Common understanding of business & technical strategy
* Technical architecture created to support the business&#x20;
* More realistic & sustainable product roadmap with Biz and tech&#x20;
* High level modularisation makes it easier to plan
  {% endhint %}

## 3) Planning

* Use the term Minimum Valuable Increment&#x20;
  * Need to invest in technical things

![](https://1936518372-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MAffO8xa1ZWmgZvfeK2%2F-MBcVOZPsqpv6zCULGa3%2F-MBcrXNc2quGAVWUzEWF%2Fimage.png?alt=media\&token=8d7ffeca-14e0-4b9b-b342-3ba21c7b79d3)

### [Impact Mapping](https://www.impactmapping.org/)

* Validate the value towards the goal
* Validate the things we want to build by value

> Generate your backlog from the Impact Mapping

![](https://1936518372-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MAffO8xa1ZWmgZvfeK2%2F-MBcraM27D0yMlapg3q6%2F-MBcs30F6kzCEAPk-l7I%2Fimage.png?alt=media\&token=21db5731-ff74-4fdd-b547-90b92f0a1635)

### Create a plan

* Achieve Continuous Delivery
* Several teams working in parallel

![](https://1936518372-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MAffO8xa1ZWmgZvfeK2%2F-MBcraM27D0yMlapg3q6%2F-MBcsCXKxwWo8u2P6FCI%2Fimage.png?alt=media\&token=2c0b13f4-5052-4c57-b4ba-df51c6cde013)

* Discover a lot of unknown
* Help to reshape our backlog

## Results

{% hint style="success" %}

* Technical effort, risks & dependencies impact prioritization of MVI's&#x20;
* Easier to size MVI's when high level technical details are known
* Helps to distribute work across teams efficiently
* Technical solution designed to support Continuous Delivery (goal of Agile)
  {% endhint %}

## 4) Development

![](https://1936518372-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MAffO8xa1ZWmgZvfeK2%2F-MBcraM27D0yMlapg3q6%2F-MBcsiN4zQmgEFKoB3S6%2Fimage.png?alt=media\&token=c0d3e098-f54f-4ee2-b01a-5c38a21665bd)

* Design Apis from your mockup&#x20;
  * Outside IN&#x20;
  * What is the outside world expecting from us

### Results

{% hint style="success" %}

* Test & deployment strategies for each increment
* Enables CD
* Detailed design helps to identify risks, dependencies & unknown
* Enable safe evolution of the code
  * Keeping it maintainable&#x20;
* Pro-active & continuous technical improvement aligned with biz value&#x20;
  * Always improve
* Prevents accumulation of technical debt
  {% endhint %}

## Conclusion

![](https://1936518372-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MAffO8xa1ZWmgZvfeK2%2F-MBct7Ht377LiSt4uLfV%2F-MBctmvbsITmPsQKJh0_%2Fimage.png?alt=media\&token=55795b1f-b50d-4f6e-a29b-8c57d0305b85)

* Often POs
  * They have
    * No good vision
    * Don't own it&#x20;
    * Product definition is vague
  * Product roadmap
    * No milestones
    * Create a big plan
    * Rigid product backlog&#x20;
  * From High level strategy to Product backlog
* Architects
  * Architecture are created without biz inputs
  * No connection with dev teams
* Introduce technical milestones to balance the graph
* Make sure than each phases are done&#x20;
  * with Biz & technology&#x20;
  * As a single team

{% hint style="success" %}
***"In a software product, software design should be an explicit part of the business strategy"***
{% endhint %}

## The talk

{% embed url="<https://youtu.be/PGsW9qFb-_M>" %}
