small medium large xlarge

Design It!: From Programmer to Software Architect


Cover image for Design It!

Design It!

From Programmer to Software Architect


Don’t engineer by coincidence—design it like you mean it! Grounded by fundamentals and filled with practical design methods, this is the perfect introduction to software architecture for programmers who are ready to grow their design skills. Ask the right stakeholders the right questions, explore design options, share your design decisions, and facilitate collaborative workshops that are fast, effective, and fun. Become a better programmer, leader, and designer. Use your new skills to lead your team in implementing software with the right capabilities—and develop awesome software!

Printed in full color.

Customer Reviews

Others have written about risk-driven architecture before, but only Michael
Keeling uses his taste for guacamole to illustrate it. “Design It!” is full of pragmatism,
personal experience, and useful tips. This book has something to offer anyone
involved in software development, and it’s fun to read.

- Eltjo Poort

CGI, recipient of the Linda Northrop Software Architecture Award

Of the numerous books that talk about software architecture, there are a select
few that are really, really good. This book runs the complexity of software architecture
through the real world of software development and distills it into real,
understandable concepts that can be applied to everyday software engineering
practices. In Design It!, Michael gives you his recipes for applying these concepts,
providing pragmatic guidance for success in a very tough discipline.

- Will Chaparro

Software Development Manager, IBM Watson

What I like most about Michael’s style is that it is inclusive: everyone on the team
should become a better architect. His book gives us hands-on ways to achieve
this by collecting many great ideas and tools that arose from the community. This
book is for everyone who wants to build better software together.

- Thijmen de Gooijer

IT Architect, Kommuninvest Sweden

This book covers the essentials of design and software architecture that all development
teams need to know. It is definitely going on the recommended reading
list for all my teams and anyone we bring on board!

- Jørn Ølmheim

Leading Advisor Software Architecture, Statoil ASA

What sets Design It! apart for me is its fresh perspective—that the technical undertaking
of building software is an intensely social activity. Michael manages to
uniquely fuse the mechanics of software architecture together with the chemistry
of design thinking. You’ll learn to move from architecture viewpoints into design
mindsets and from managing architecture life cycles into telling architecture stories.
This is a must-have reference book on modern software architecting.

- Amine Chigani

Chief Architect, GE Digital

This book is timely, valuable, accessible, and excellent. It is a clear, informed,
and practical guide to the principles and practice of software architecture, for the
aspiring architect as well as the established practitioner who wants to deepen
and refresh his or her skills. Michael Keeling takes the reader on a clear and results-
oriented journey, from the fundamentals of the field to the state of the art.

- Eoin Woods

CTO of Endava, editor of IEEE Software’s Pragmatic Architect column, and author of "Software Systems Architecture"

Invaluable for growing your career and your team! The perfect balance between
design theory and practical activities.

- Joseph Kramer

Software Engineering Manager, IBM

See All Reviews

Choose Your Format(s)

  • $26.95 In Stock
  • Ebooks are DRM free.

  • Ebook delivery options.

About this Title

Pages: 358
Published: 2017-10-10
Release: P1.0 (2017-10-11)
ISBN: 978-1-68050-209-1

Great software comes from great designers. Learn the essential software architecture fundamentals every programmer needs to know. With hands-on examples in every chapter, tips and advice from respected architects, practical scenarios, and dozens of architectural design activities, Design It! shows you how to lead your team as a software architect to create excellent software.

Uncover the big ideas behind software architecture and learn practical methods for designing software systems big and small. Gain a framework for thinking about design, enabling you to plan, lead, design, implement, and evaluate software architectures. Collaborate with your team, stakeholders, and other architects. Dig for architecturally significant requirements and write detailed quality attribute scenarios. Explore design alternatives, balance trade-offs, manage risks, and choose technologies based on their architectural impact. Make the architecture real for everyone with powerful sketches, engaging stories, and lean documentation people love to read. Evaluate your designs using lightweight methods and harness the power of your team to improve the architecture over time. Host collaborative workshops that create buy-in and get the whole team excited and involved in designing the software architecture.

Hands-on exercises, real-world scenarios, and practical team-based decision-making tools will give you the experience you need to become a confident software architect.

What You Need

No technology pre-requisites.


Contents & Extracts

  • *Welcome
  • *Introducing Software Architecture
    • Become a Software Architect
      • What Software Architects Do excerpt
      • What Is Software Architecture?
      • Become an Architect for Your Team
      • Build Amazing Software
      • Case Study: Project Lionheart
      • Next Up
    • Design Thinking Fundamentals
      • The Four Principles of Design Thinking
      • Adopt a Design Mindset
      • Think, Do, Check
      • Next Up
  • Architecture Design Fundamentals
    • Devise a Design Strategy
      • Find a Design That Satisfices
      • Decide How Much to Design Up Front
      • Let Risk Be Your Guide
      • Create a Design Plan
      • Project Lionheart: The Story So Far…
      • Next Up
    • Empathize with Stakeholders
      • Talk to the Right People
      • Create a Stakeholder Map
      • Discover the Business Goals
      • Project Lionheart: The Story So Far…
      • Next Up
    • Dig for Architecturally Significant Requirements
      • Limit Design Options with Constraints
      • Define the Quality Attributes
      • Look for Classes of Functional Requirements
      • Find Out What Else Influences the Architecture
      • Dig for the Information You Need
      • Build an ASR Workbook
      • Project Lionheart: The Story So Far…
      • Next Up
    • Choose an Architecture (Before It Chooses You)
      • Diverge to See Options, Converge to Decide
      • Accept Constraints
      • Promote Desired Quality Attributes
      • Assign Functional Responsibilities to Elements
      • Design for Change
      • Project Lionheart: The Story So Far…
      • Next Up
    • Create a Foundation with Patterns
      • What Is an Architecture Pattern?
      • Layers Pattern
      • Ports and Adapters Pattern
      • Pipe-and-Filter Pattern
      • Service-Oriented Architecture Pattern
      • Publish-Subscribe Pattern
      • Shared-Data Pattern
      • Multi-Tier Pattern
      • Center of Competence Pattern
      • Open Source Contribution Pattern
      • Big Ball of Mud Pattern
      • Discover New Patterns
      • Project Lionheart: The Story So Far…
      • Next Up
    • Manage Complexity with Meaningful Models
      • Reason About the Architecture
      • Design the Meta-Model
      • Build Models into the Code
      • Project Lionheart: The Story So Far…
      • Next Up
    • Host an Architecture Design Studio
      • Plan an Architecture Design Studio
      • Choose Appropriate Design Activities
      • Invite the Right Participants
      • Manage the Group
      • Work with Remote Teams
      • Project Lionheart: The Story So Far…
      • Next Up
    • Visualize Design Decisions
      • Show the Architecture from Different Views
      • Draw Fantastic Diagrams
      • Project Lionheart: The Story So Far…
      • Next Up
    • Describe the Architecture
      • Tell the Whole Story
      • Match the Description Method to the Situation excerpt
      • Respect Your Audience
      • Organize Views around Stakeholders’ Concerns
      • Explain the Rationale for Your Decisions
      • Project Lionheart: The Story So Far…
      • Next Up
    • Give the Architecture a Report Card
      • Evaluate to Learn
      • Test the Design
      • Host an Evaluation Workshop
      • Evaluate Early, Evaluate Often, Evaluate Continuously
      • Project Lionheart: The Story So Far…
      • Next Up
    • Empower the Architects on Your Team
      • Promote Architectural Thinking
      • Facilitate Decision Making and Foster Skills Growth
      • Create Opportunities for Safe Practice
      • Delegate Design Authority
      • Design Architecture Together
      • Project Lionheart: The Epic Conclusion
      • Next Up
  • The Architect’s Toolbox
    • Activities to Understand the Problem excerpt
      • Activity 1. Choose One Thing
      • Activity 2. Empathy Map
      • Activity 3. Goal-Question-Metric (GQM) Workshop
      • Activity 4. Interview Stakeholders
      • Activity 5. List Assumptions
      • Activity 6. Quality Attribute Web
      • Activity 7. Mini-Quality Attribute Workshop
      • Activity 8. Point of View Mad Lib
      • Activity 9. Response Measure Straw Man
      • Activity 10. Stakeholder Map
    • Activities to Explore Potential Solutions
      • Activity 11. Personify the Architecture
      • Activity 12. Architecture Flipbook
      • Activity 13. Component Responsibility Collaborator Cards
      • Activity 14. Concept Map
      • Activity 15. Divide and Conquer
      • Activity 16. Event Storming
      • Activity 17. Group Posters
      • Activity 18. Round-Robin Design
      • Activity 19. Whiteboard Jam
    • Activities to Make the Design Tangible
      • Activity 20. Architecture Decision Records
      • Activity 21. Architecture Haiku
      • Activity 22. Context Diagram
      • Activity 23. Greatest Hits Reading List
      • Activity 24. Inception Deck
      • Activity 25. Modular Decomposition Diagram
      • Activity 26. Paths Not Taken
      • Activity 27. Prototype to Learn or Decide
      • Activity 28. Sequence Diagram
      • Activity 29. System Metaphor
    • Activities to Evaluate Design Options
      • Activity 30. Architecture Briefing
      • Activity 31. Code Review
      • Activity 32. Decision Matrix
      • Activity 33. Observe Behavior
      • Activity 34. Question–Comment–Concern
      • Activity 35. Risk Storming
      • Activity 36. Sanity Check
      • Activity 37. Scenario Walkthrough
      • Activity 38. Sketch and Compare


Michael Keeling is an experienced software architect, agile practitioner, and programmer. He has worked on a variety of software systems including combat systems, search applications, web apps, and IBM Watson. When not doing software stuff, Michael enjoys hiking, running, cooking, and camping.