audrys kažukauskas: big up front design is dead. long live emergent design
TRANSCRIPT
Big Design Up Front is Dead.Long Live Emergent Design
Audrys Kažukauskas, UAB „Net Frequency“Team Lead Development
Target
Name: Waterfall
Other names: Big Design Up Front
Food: programmers
Other info: Deadly
BDUF serves well in
despite this huge thinking up-front, still major mistakes are made
dams collapse...
Teton Dam, USA, 1976
spacecrafts fall down in pieces...
Mars Climate Orbiter, NASA, 1998
microchips are shipped with major bugs...
Cougar Point chip, Intel, 2011
So BDUF came into software development...
• very hard to think through all the issues up-front
• genericness overhead, over-engineering
• changing requirements (master killer)
Problems with BDUF in software development
Changes later are COSTLY and very HARD,BDUF says
But... we develop software, don't we?
Materials are cheap. Building is cheap. Changes are easy.
software is different
"programming is not about building software; programming is about designing software"
{Jack W. Reeves}
"In software development, the design document is a source code listing"
"the only way we validate a software design is by building it and testing it"
{Jack W. Reeves}
If
• materials are cheap, building is cheap, changes are easy
• true design is done in a programming language
• design is completed only after it is built it and tested
then why waste time on paper designs?
Listen to your code, allow design to emerge
Philosophy of Emergent Design
• coding reveals new important information
• thus, defer decisions until the last responsible moment
Keep cost of change low
• choose simple solutions
• keep code base small and clean
Enabling Emergent Design
• Test Driven Development
• Continuous Integration
• Refactoring
True TDD leads to emergent design
How much design up-front is enough?
Audrys Kažukauskas, UAB „Net Frequency“Team Lead Development
Long live Emergent Design!