Skip to main content

Command Palette

Search for a command to run...

From "Design First" to "Prototype First"

Published
4 min read
From "Design First" to "Prototype First"

In a previous post titled "How Design Docs Bridged Cultural Gaps in Our Global Startup Team", I shared how our team leveraged detailed documentation to improve cross-cultural collaboration. Today, I want to explore a different perspective that I've developed since then: the "Prototype First, Design Second" approach.

Reconsidering Documentation Processes

While design docs served us well in certain contexts, particularly with large, distributed teams, I've discovered their limitations in fast-paced, innovative environments:

  1. Documentation can stall progress - In small, agile teams, documentation often becomes a bottleneck rather than an accelerator.

  2. Solutions emerge through building - When creating something truly new, theoretical planning only gets you so far. The most valuable insights come from building and iterating.

  3. Documentation can cement sub-optimal decisions - Detailed docs tend to create psychological commitment to initial approaches, making teams reluctant to pivot when necessary.

The "Prototype First, Design Second" Philosophy

After experiencing the downsides of documentation processes, I've adopted a more pragmatic approach:

Talk with Code, Not Docs

I've found that building a minimal, working solution first—even if imperfect—provides concrete material for discussion. Code becomes the primary communication medium, allowing team members to:

  • Experience rather than imagine the solution

  • Identify practical issues that weren't apparent in theory

  • Contribute improvements based on tangible examples

Focus on Solutions, Not Architecture

When faced with novel problems, starting with architecture design often leads to analysis paralysis. Instead:

  • Build a simple implementation that addresses the core problem

  • Let the architecture emerge organically as you identify actual, not theoretical, constraints

  • Use working code as the foundation for more thoughtful planning

Embrace a Hybrid Approach

I haven't abandoned documentation entirely. Instead, I've found a balanced approach works best:

  • Use lightweight documentation to capture key decisions and rationales

  • Build prototypes to validate assumptions before investing in detailed plans

  • Foster a "living documentation" culture where documented decisions are seen as part of an ongoing conversation rather than permanent fixtures, encouraging team members to challenge previous decisions whenever better solutions emerge

Real-World Results

This shift in approach has yielded surprising benefits:

  • Faster time-to-value: We're delivering usable features in days rather than weeks

  • More innovative solutions: Hands-on building surfaces opportunities that planning sessions miss

  • Increased team engagement: Engineers are more invested in solutions they've helped shape through building

  • Better adaptability: We pivot more easily when early implementations reveal new insights

From Theory to Practice

My journey from "Design First" to "Prototype First" wasn't straightforward. I encountered several challenges that forced me to refine this approach:

Challenge 1: Maintaining Coherence

Prototype first occasionally led to inconsistent implementations across features. To address this, we introduced:

  • Regular code review sessions focused on architectural patterns

  • Lightweight design principles documented after successful implementations

  • Shared libraries built from proven solutions

Challenge 2: Knowledge Transfer

Without comprehensive documentation, onboarding new team members became challenging. Our solution:

  • Well-commented code that explains the "why" behind decisions

  • Periodic architecture overview sessions based on existing implementations

  • Just enough documentation that captures key design decisions after they're validated

The Refined Approach

What I've ultimately arrived at is a more nuanced process that combines the best of both worlds:

  1. Build a minimal working solution to address the core problem

  2. Review and refine based on actual usage and feedback

  3. Document key decisions and patterns that emerge from successful implementations

  4. Scale the solution with the benefit of practical experience

Conclusion

My evolution from advocating detailed upfront design to embracing a "Prototype First, Design Second" approach reflects a deeper understanding of how software development actually works in practice. While documentation remains valuable, I've found that the most effective teams use it as a tool to capture wisdom gained through building, rather than as a prerequisite for creation.

The best conversations happen around working code, not theoretical documents. By letting solutions emerge through building and experimenting, we've created better products faster, while still maintaining the cohesion and knowledge sharing that documentation provides.

More from this blog

L

Lukas's Devlog

37 posts

A monthly notebook on digital identity, trust infrastructure, and engineering reality — written from Luxembourg.