3. 4
Architects
[verb]
what is the verb? shoot quickly
decisions
until the last responsible moment
make? (wrong answer)defer making
4. 7
The Last Responsible Moment
"the moment at which failing to make a decision
eliminates an important alternative.“
Mary and Tom Poppendieck
Keep as many options open for as long as possible
Commit when you must or when you have a good
reason to
5. 8
Early and Late Decisions
Some decisions can be made late in projects
look-and-feel
Some have to be made early on
implementation language
The majority of design decisions fall between
7. 13
Sample Decision – How Many Servers
Context Internet-facing system requires about 12 services
to be implemented
Decision Implement as 12 different servers?
Implement as small number of monolithic servers?
Forces Separation of concerns, operational complexity,
duplication of effort, evolution
Result Chose to create 12 different servers, despite the
operational complexity.
9. 15
Renegotiate
Change the decision to be made by renegotiating
time, scope, constraints, …
e.g. persuade client to allow late change to the
user interface
10. 16
Redesign
Avoid the decision by redesigning your system to
avoid the problematic element
e.g. alter structure to avoid connection to
element needing early decision
13. 21
Exercise
Identify one early decision
Discuss ways we can architect and design systems to
defer or manage better.
10 minutes
Present
4 teams, 5 minutes each
14. 22
Sample Decision – How Many Servers
Context Internet-facing system requires about 12 services
to be implemented
Decision Implement as 12 different servers?
Implement as small number of monolithic servers?
Forces Separation of concerns, operational complexity,
duplication of effort, evolution
Result Chose to create 12 different servers, despite the
operational complexity.
18. Grow (not build!) a framework
Goal: Allow developers to focus on meeting
requirements, not repetitive programming
Time: Incrementally done.
Results from seeing repeated code and identifying
common functionality.
19. Experiment on Branches
Goal: Experiment away from main code branch.
Time: Few hours to a few days.
When done: Merge or throwaway branch code.
20. Spikes
Used to figure out a functional or design approach.
Functional
break down and clarify large functionality,
identify critical & risky functionality,
Technical
identify feasibility and impact of design
strategies
Where: part of the product backlog
When: whenever necessary.
Allocated time: Few hours to few days.
21. 33
Exercise
Split into groups
Start from the Product Vision
Think of
1 functionality which is unclear or risky
1 architecturally significant problems
Analyze them in a functional and technical spike
10 minutes
Present
2 teams – functional spike, 5 minutes each team
2 teams – technical spike, 5 minutes each team
22. 34
Our Product Vision
Great apps for your Mac. Right on your Mac.
The Mac App Store is just like the App Store for iPad,
iPhone, and iPod touch.
So it’s as easy to find and download Mac apps as it is to
add your favourite magazine to iPod or a new game to
iPod touch.
You can browse Mac apps by category, such as games,
productivity, music, and more. Or do a quick search for
something specific.
Read developer descriptions and user reviews. Flip
through screenshots. When you find an app you like, click
to buy it. The Mac App Store has apps for just about
everything and everyone. Here are a few of our favourites.
This is what happens when you think TOO MUCH up-front!
Don’t do it, only think as much as you really need.
Talk a few minutes about the Cynefin framework, author, year, etc. Please read the wiki article on Cynefin: http://en.wikipedia.org/wiki/Cynefin
Please also watch this : http://www.youtube.com/watch?v=N7oz366X0-8 as this is the source of some of the previous slides
The framework is set up with a distinct separation from left to right. On the right are problems that are ordered and mechanical in nature. We have become very good at dealing with these types of problems and have many tools at our disposal for addressing these. These are analytical thinking type problems and have a fairly well delineated connection between cause and effect. On the left, the problems are unordered. These cannot be designed, but rather they evolve over time. They are non-linear and have emergent properties.
Assuming that’s the perfect architecture for our product, do we think this us something we could design up-front?
This is one of the bad habits we received from the past: too much up-front thinking and design.
http://www.romanpichler.com/blog/product-backlog-learning-tool/
To turn your backlog into a learning tool, expose product increments early and regularly to customers and users, for instance by demoing the increment or by releasing it.Read more http://www.romanpichler.com/blog/product-backlog-learning-tool/