> For the complete documentation index, see [llms.txt](https://yoan-thirion.gitbook.io/knowledge-base/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://yoan-thirion.gitbook.io/knowledge-base/software-craftsmanship/practices/design-sessions.md).

# Design sessions

When I was fully in Dev Teams it is a practice we used to define the implementations of our features. It consists in brainstorming and aligning at the beginning of each feature implementation.

### How to ?

![](/files/-MKddILFfduwRcdXHt2Y)

Once a team member wants to open a new Product Backlog Item, User Story or feature implementation, we do an instant meeting in front of a whiteboard and a computer.

![](/files/-MKde1yWx98qImgQS36F)

* We start by agreeing on its definition
* Be sure we are all aligned on what needs to be done

![](/files/-MKdeJsEAYXH3ms3hq4-)

We use the whiteboard to align ourselves on the different flows to implement

![](/files/-MKdecZMOV4Ghq97bwmR)

* We open the source code or create a new one and start designing the contracts :
  * From our external layers (APIs for example) to our Domain model
  * POCOs / POJOs
  * DTOs / Commands
* We don't implement anything except of the contracts
  * We throw exceptions `throw new NotImplementedException()`
* BUT we agree on the naming / parameters
  * We put TODOs in the code to be clear what is expected to implement
  * Later on I have learned that this TODO approach to implementation had a name : [Puzzle Driven Development](https://www.yegor256.com/2010/03/04/pdd.html)

![](/files/-MKdeoCO34bmGwnKFhDm)

The whole team or part of it can now work on the implementation by knowing exactly what to do.

### Pros

* Instant alignment feedback on what needs to be done
* Increased knowledge sharing
  * Quick up-skilling for new-joiners
* Better solution when designed collaboratively
  * "Alone we go faster together we go further"
* Save a lot of times
  * Avoid feedback loops (in code reviews for example) when no team alignment
* Reinforce the collective ownership feeling inside the team
* Help to shape a real team spirit as well
  * Everyone is involved at the beginning of everything

### Infography

![](/files/-MKdaqQcCCDQQ4fZ2xC8)
