Design sessions

A technic to better design solutions in a collaborative way

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 ?

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.

  • We start by agreeing on its definition

  • Be sure we are all aligned on what needs to be done

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

  • 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

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

Last updated