Evolutionary Design

Supports Pillars:

Product

Dependencies on Other Skills:

Supportive Culture

Definition:

Agile is about delivering a product that meets the user's needs, in the most direct and simple way we can find. There may be more efficient ways of getting to the final destination, but instead we focus on making sure that every step is in the right direction, by confirming the value with the business every step along the way. Agile is iterative and incremental--sometimes we revisit decisions made yesterday because of something we learn today (iterative), but most often we seek to build upon what we've already made (incremental). Often we only have a foggy idea of the end goal, and that's OK--we'll refine the vision as we hear from real user experiences, and as we learn the business vocabulary.

Resources:

Domain-Driven Design by Eric Evans

Decomposition of this Skill:

Learn to do just-enough design up front (we want to avoid revisiting too many decisions, and we want to be sure we understand the real business need).

Defer commitment unless you know why (real options).

Seek feedback from all stakeholders affected by the product--customers, users, support staff, maintenance staff.

Organizational Support of this Skill:

Seek customers who are willing to partner in the development process, who can evaluate regular deployments.

Foster a learning environment, where mistakes are seen as inevitable for making progress.