Continuousdesign 200521011800
Continuousdesign 200521011800
Design
No Big
Upfront Design
Design Upfront
(BDUF)
What is Continuous Design?
• Roots in Extreme
Programming
• “Evolutionary” or
“Emergent” Design
• Requires a High Degree of
Discipline
• Reacting to Feedback
Design Goals
• Don’t Repeat Yourself
• Explicit
• Simple
• Cohesive
• Decoupled
• Isolated
• In the present
Pull vs Push
• Build it and they will come
• “You aren’t going to need it” – YAGNI
• Do the Simplest Thing That Could Possibly Work
The Last Responsible Moment
Make decisions as late as you can responsibly wait
because that is the point at which you have the most
information on which to base the decision.
Reversibility
“If you can easily change your decisions, this
means it’s less important to get them right –
which makes your life much simpler. ”
Martin Fowler
Low Reversibility
Avoid being frozen by the fear of what you don’t yet know
Top Down start with the basic workflow, leave placeholders for
individual steps later
Spike
• “A very simple program to explore potential
solutions”
• Quick and dirty prototyping
• Throwaway the code
Process Stuff
• Constantly challenge the
design
• Always be thinking
• Socialize the design
• Every developer
contributes
Questions?