Knowledge-base
  • Home
  • Samman Technical Coaching
  • Software craftsmanship
    • Practices
      • Pair Programming
      • Code Review
      • Co-designs
      • Design sessions
      • Interview Domain Experts
      • Dev ethics
    • The Software Craftsman
    • Egoless Crafting
    • Technical debt workshop
    • Functional Programming made easy in C# with Language-ext
    • F# for OO programmers
    • Domain Modeling Made Functional
    • Testing
      • Clean Tests
      • Improve the design and testing of your micro-services through CDC Tests
        • CDC testing made simple with Pact
        • Pact broker : the missing piece of your Consumer-Driven Contract approach
      • Improve your test quality with Mutation testing
      • How to name our Unit Tests
      • How to write better assertions
    • Katas
      • TDD
        • Stack kata
        • Fizzbuzz
        • Outside-in TDD (London Style)
      • Improve your software quality with Property-Based Testing
        • A journey to Property-Based Testing
      • Clean Code
      • Clean Architecture
      • Write S.O.L.I.D code
      • Mocking
      • Gilded Rose (Approval Testing)
      • Mikado method
        • Mikado kata
      • Pure functions
      • Theatrical players refactoring Kata
        • Let's refactor (OOP style)
        • Let's refactor (FP style)
      • Functional Programming made easy in Java & C#
      • Refactoring journey
      • Refactoring du Bouchonnois
        • 1) Se faire une idée du code
        • 2) "Treat warnings as errors"
        • 3) Let's kill some mutants
        • 4) Améliorer la lisibilité des tests
        • 5) "Approve Everything"
        • 6) Définir des propriétés
        • 7) Tests d'architecture
        • 8) Use Cases
        • 9) Tell Don't Ask
        • 10) "Avoid Primitives" - Commands
        • 11) "Avoid Exceptions"
        • 12) "Event Sourcing"
    • Software Design X-Rays
      • Workshop
    • The Programmer's Brain
      • How to read code better
  • Software Architecture
    • Fundamentals of Software Architecture
    • Aligning Product & Software Design
    • DDD re-distilled
    • Test your architecture with Archunit
    • NoSQL
  • Agile coaching
    • How to run a Community of Practices (COP)
    • The developers — the forgotten of agility
      • The secrets to re-on-board the devs in agility
    • Coaching toolbox
      • Echelle
      • Learning expedition
    • How to improve Team Decision making ?
      • Decision Making Principles and Practices
    • Learning 3.0
    • Retrospectives
      • Back to the Future
      • Mission Impossible
      • Movie themes
      • Rétro dont vous êtes le héros
      • Sad/Mad/Glad
      • Speed boat
      • Star wars theme
      • Story cubes
    • Technical Agile Coaching with the Samman Method
    • Xanpan - a team centric agile method story
    • XTREM WATCH — Découvrez la puissance de la veille collective
    • Become a better speaker through peer feedback
    • Project-to-Product Principles
  • Leadership
    • Bref. J'ai pris une tarte dans la gueule (et ça fait extrêmement de bien)
    • Forward Summit 2020
    • Learn leadership from the Navy SEALs
    • Learn to lead and help your team(s) to be successful
    • Towards a learning organization and beyond
    • Leadership is language
  • Serious games
    • My serious games
    • Libérez vos entretiens d’embauche avec la gamification
    • How to create a game
    • How to debrief a game ?
    • Lego Serious Play (LSP)
      • LSP in your job interviews
  • Xtrem Reading
    • Cultivate Team Learning with Xtrem Reading
    • My Book Infographics
    • How to make book infographics
    • En route vers l’apprenance avec Xtrem Reading
    • Resources
      • Book notes
        • Agile People: A Radical Approach for HR & Managers
        • Agile testing : A Practical Guide for Testers and Agile Teams
        • Boite à outils de l'intelligence émotionnelle
        • Building a better business using Lego Serious Play method
        • Building evolutionary architectures
        • Code that fits in your head
        • Culture Agile
        • Culture is everything
        • Domain-Driven Design: The First 15 Years
        • Dynamic Reteaming - The Art and Wisdom of Changing Teams
        • How to avoid a Climate Disaster
        • La liberté du commandement
        • Réaliser ses rêves, ça s'apprend
        • Refactoring at Scale
        • Succeeding with OKRs in Agile
        • Team Topologies
        • The Good Life
        • Tu fais quoi dans la vie
        • Who Does What By How Much?
  • My Activity
    • Retour sur mon année 2020
Powered by GitBook
On this page
  • Context
  • Average company
  • How to avoid that ?
  • Different levels of design
  • Understand Product design
  • 1) Ideation
  • Build a vision for the product: NOT A PLAN
  • Product Definition
  • Value Proposition Canvas
  • Technical Feasibility
  • Results
  • 2) Strategy
  • Create a roadmap
  • Create an architecture
  • Results
  • 3) Planning
  • Impact Mapping
  • Create a plan
  • Results
  • 4) Development
  • Results
  • Conclusion
  • The talk

Was this helpful?

  1. Software Architecture

Aligning Product & Software Design

Abstract of a talk of Sandro Mancuso

Context

Average company

  • Strong boundaries between Technical and Business

  • Technical debt ?

    • Developers

      • "We don't have time to improve our system"

      • "We are struggling with technical debt"

        • Vicious circle

    • Business

      • "We need more features"

How to avoid that ?

  • 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

      • Continuous investment

"There is a tension between the way we manage project and the way we manage product"

  • Product strategy

    • Defined isolated from technology

    • Product backlog created

      • By the business

    • Only there the Dev team is coming in

      • Not part of the product definition

    • So the result = Reactive design

      • 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

      • 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

            • 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

  • Solutions Architecture

    • Solution of your product

    • How we re gonna do / split

  • Technical Architecture

    • What technology

    • SLA

    • ...

  • Macro Design

    • Components

    • Overall structure

  • Micro Design

    • Classes

    • Functions

    • Methods

When we design ?

"We often struggle to find the time"

Understand Product design

  • Looks a lot like Waterfall

    • Make it iterative

  • Devs involved only in the development

    • Through the product backlog

    • Not able to create the technical strategy

      • Not have time here

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

Value Proposition Canvas

  • Shape the scope of our product

  • 1 canvas per customer segmentation

Technical Feasibility

  • Build a technical vision

  • Create a unified view with business & technology

Results

  • Business & technology alignment

  • Shared & more realistic product vision

  • Context for pro-active & supportive tech strategy

2) Strategy

Create a roadmap

  • Use Lean Startup approach

Create an architecture

  • Define the technology stack

  • Refine what has been done in Tech feasibility

  • Design to support the way of the business

Results

  • Common understanding of business & technical strategy

  • Technical architecture created to support the business

  • More realistic & sustainable product roadmap with Biz and tech

  • High level modularisation makes it easier to plan

3) Planning

  • Use the term Minimum Valuable Increment

    • Need to invest in technical things

  • Validate the value towards the goal

  • Validate the things we want to build by value

Generate your backlog from the Impact Mapping

Create a plan

  • Achieve Continuous Delivery

  • Several teams working in parallel

  • Discover a lot of unknown

  • Help to reshape our backlog

Results

  • Technical effort, risks & dependencies impact prioritization of MVI's

  • 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)

4) Development

  • Design Apis from your mockup

    • Outside IN

    • What is the outside world expecting from us

Results

  • 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

  • Pro-active & continuous technical improvement aligned with biz value

    • Always improve

  • Prevents accumulation of technical debt

Conclusion

  • Often POs

    • They have

      • No good vision

      • Don't own it

      • Product definition is vague

    • Product roadmap

      • No milestones

      • Create a big plan

      • Rigid product backlog

    • 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

    • with Biz & technology

    • As a single team

"In a software product, software design should be an explicit part of the business strategy"

The talk

PreviousFundamentals of Software ArchitectureNextDDD re-distilled

Last updated 4 years ago

Was this helpful?

Impact Mapping