The Product Cycle

Documentation as a shared design artifact for continuous product evolution

Living Documentation

Our team believes documentation is a shared design artifact. Software is never done and thus managing product is a recurring cycle. These common product design artifacts become living documents that stay up-to-date and reflect the evolution of thought, design, and system architecture related to a software project.

Continuous Evolution

Software projects progress iteratively through common stages to greater-or-lesser degrees of explicitness. Each stage informs the others in a continuous feedback loop, ensuring products evolve based on real user needs and behaviors.

Living Documentation

These artifacts evolve together, each informing another

Shared Understanding

Documentation becomes a shared design artifact that keeps the team aligned on vision, decisions, and rationale.

Continuous Evolution

As we learn from user feedback and testing, we update our understanding and reflect changes across all artifacts.

Product Cycle Overview

Start with user needs

  • Define personas based on real user research
  • Document specific use cases and scenarios

Understand the objects we're working with

  • Inventory concepts and relationships
  • Create coherent mental models
  • Design data structures (DDD & OOP)

How will software and behave?

  • Sketch wireframes and user flows
  • Create detailed screen designs
  • Iterate based on feedback

Implementation

  • Establish Continuous Integration with automated tests (TDD, BDD)
  • Deploy working, tested software
  • Gather feedback to inform future work

The Product Cycle

graph TD A[Personas] --> B[Use Cases] B --> C[Concept Inventory] C --> D[Concept Model] D --> E[Data Model] E --> F[Wireframes & User Flows] F --> G[Screen Designs] G --> H[Working, Tested Software] H --> A A:::persona B:::usecase C:::concept D:::model E:::data F:::wireframe G:::design H:::software classDef persona fill:#fef3c7,stroke:#f59e0b,stroke-width:2px,color:#92400e classDef usecase fill:#dcfce7,stroke:#16a34a,stroke-width:2px,color:#166534 classDef concept fill:#dbeafe,stroke:#2563eb,stroke-width:2px,color:#1e40af classDef model fill:#f3e8ff,stroke:#9333ea,stroke-width:2px,color:#7c3aed classDef data fill:#fce7f3,stroke:#ec4899,stroke-width:2px,color:#be185d classDef wireframe fill:#f0f9ff,stroke:#0ea5e9,stroke-width:2px,color:#0369a1 classDef design fill:#fff7ed,stroke:#ea580c,stroke-width:2px,color:#c2410c classDef software fill:#f0fdf4,stroke:#059669,stroke-width:2px,color:#047857

Software projects invariably work through these steps to greater-or-lesser degrees of explicitness.

and repeat ➰

Product Cycle Stages

User needs Curating Information About Users & Their Needs

πŸ‘€

Personas

Understanding who will use the system and what drives their behavior and needs

πŸ“‹

Use Cases

Specific scenarios describing how personas will interact with the system

Data modeling Decomposing & Modeling the Software Domain (DDD & OOP)

πŸ“

Concept Inventory

Cataloging all the concepts, entities, and relationships within the problem domain

πŸ—ΊοΈ

Concept Model

Organizing concepts into a coherent mental model of how the system should work

πŸ—ƒοΈ

Data Model

Translating concepts into concrete data structures and relationships

Visual interaction design Generating Visual Design & Assimilating Feedback

πŸ“

Wireframes & User Flows

Sketching the user journey and interface structure without visual design details

🎨

Screen Designs

Creating detailed visual designs that bring wireframes to life

Continous delivery Automated Testing & Continuous Integration

πŸ”„

Continuous Integration

Automated testing infrastructure emphasizing TDD & BDD approaches to ensure code quality and behavioral correctness

βš™οΈ

Working, Tested Software

The implemented solution that users can interact with, validated through automated tests and continuous integration pipelines

πŸ”

The Feedback Loop

The product cycle is completed by gathering feedback, synthesizing insights, and taking action. This continuous feedback loop ensures the product evolves based on real user needs and behaviors.

Behavioral Assertions: Keeping a changelog of business process changes based on feedback functions as a type of "unit test" for your productβ€”an assertion of expected behavior that can be validated against reality.

Feedback informs: πŸ‘€ Personas πŸ—ƒοΈ Data Model 🎨 Interface

Ready to Start Your Product Cycle?

Let's create living documentation that evolves with your product and keeps your team aligned.

Begin The Cycle