Category Archives: Software Design

An Architect’s Dilemna: Should I Rework or Exploit Legacy Architecture?

I recently spoke with an architect has been tuning up a legacy system that is built out of a patchwork quilt of technologies. As a consequence of its age and lack of common design approaches, the system is difficult to … Continue reading

Posted in Software Architecture, Software Design | 2 Comments

Agile Architecture Myths #4 Because you are agile you can change your system fast!

Agile designers embrace change. But that doesn’t mean change is always easy. Some things are harder to change than others. So it is good to know how to explain this to impatient product stakeholders, program managers, or product owners when … Continue reading

Posted in Agile, Requirements, Software Architecture, Software Design, Uncategorized | Leave a comment

Landing Zone Targets: Precision, Specificity, and Wiggle Room

A landing zone is a set of criteria used to monitor and characterize the “releasability” of a product. Landing zones allow you to take product features and system qualities and trade them off against each other to determine what an … Continue reading

Posted in Agile, Requirements, Software Architecture, Software Design | Tagged , | Leave a comment

Software Decision Making Under Stress

I recently blogged about my discomfort with making software design decisions at “the last responsible moment” and suggested that deciding at the “most responsible moment” might be a better approach. To me, a slight semantic shift made a difference in … Continue reading

Posted in Agile, Psychology, Software Design | 2 Comments

Agile Architecture Myths #2 Architecture Decisions Should Be Made At the Last Responsible Moment

In Lean Software Development: An Agile Toolkit, Mary and Tom Poppendieck describe “the last responsible moment” for making decisions: Concurrent development makes it possible to delay commitment until the last responsible moment, that is, the moment at which failing to … Continue reading

Posted in Agile, Software Architecture, Software Design | 1 Comment

Agile Architecture Myths #1 Simple Design is Always Better

Over the next few weeks I plan to blog about some agile software architecture and design beliefs that can cause confusion and dissent on agile teams (and angst for project and program managers). Johanna Rothman and I have jointly drawn … Continue reading

Posted in Agile, Software Architecture, Software Design | 11 Comments

Draw a Tree

I often use a short, icebreaker to introduce design storytelling in talks and classes. I hand out an index card and ask people to draw a tree in 60 seconds. I’ve adapted this from Thiagi’s 99 second Draw a Tree … Continue reading

Posted in Software Design, Teaching techniques | Tagged , , , | 2 Comments

Design For Test

It sounds straightforward. Write your test code first, then write code to pass that test. Don’t write an inch of code without writing a test first. That is what test-driven development (TDD) is about: Use tests to drive out the … Continue reading

Posted in Software Design, Uncategorized | Tagged , | 2 Comments

The Value of Design Documentation

Recently I asked students to tell me what kinds of requirements they start with and what (if any) design documents do they produce. Several students said that they produced documentation just because it was part of their development process. As … Continue reading

Posted in Software Architecture, Software Design | Tagged | 2 Comments

Sustainable Design

In my most recent IEEE Column, Creating Sustainable Designs, I explore what it means to create software that can be maintained without too many growing pains. I have been intrigued by Christopher Alexander’s writings, particularly the first two volumes of … Continue reading

Posted in Half-baked Ideas, Software Design | Tagged , , , | 4 Comments