Talk/Think about all related
- how do we store data,
- client api
- ui change
- back compatibility: how to handle old data/client
But focus on most important stuff (first)
Talk/think about design principles/practices
- such as idempotent, parallelization,monitoring, etc
- Check more at System Design - Summary
What's the impact of other (internal and cross-team) components?
What're the known and potential constraints/issues/flaws in current design?
Don't only talk about its advantages,
Also talk about issues, don't hide them
What are alternatives?
Think alternative and different approaches, this can help find better solution
We can't really review and compare if there is no alternatives
Welcome different approaches
- although it doesn't mean it's better, or we will use it
How do can we know when the new feature works or doesn't work
How can we know problems happen
Feature Flag
Can we enable/disable the feature at runtime
Be Prepared
Ok to have informal/impromptu discussion with one or two colleagues
But make sure everyone is prepared for the formal team design discussion
All attendees should know the topic: how they would design it
Attitude
Listen first
When you don't agree with other's approaches
Don't get too defensive
Talk about ideas not people
Be prepared
Make API/Feature easier
- to use
- to test/rollback in production (feature flag)
Related
System Design - Summary
- how do we store data,
- client api
- ui change
- back compatibility: how to handle old data/client
But focus on most important stuff (first)
Talk/think about design principles/practices
- such as idempotent, parallelization,monitoring, etc
- Check more at System Design - Summary
What's the impact of other (internal and cross-team) components?
How others components use it?
Don't only talk about its advantages,
Also talk about issues, don't hide them
What are alternatives?
Think alternative and different approaches, this can help find better solution
We can't really review and compare if there is no alternatives
Welcome different approaches
- although it doesn't mean it's better, or we will use it
Development Cost
- How difficult it takes to implement?
What may change and How to evolve
What may change in (very) near future?
Visibility/Monitoring- How difficult it takes to implement?
What may change and How to evolve
What may change in (very) near future?
How do can we know when the new feature works or doesn't work
How can we know problems happen
Feature Flag
Can we enable/disable the feature at runtime
Be Prepared
Ok to have informal/impromptu discussion with one or two colleagues
But make sure everyone is prepared for the formal team design discussion
All attendees should know the topic: how they would design it
Don't make design decision immediately - for things that really matters
Take time to reflect and develop disagreement, talk it again later
Listen first
When you don't agree with other's approaches
Don't get too defensive
Talk about ideas not people
Be prepared
Make API/Feature easier
- to use
- to test/rollback in production (feature flag)
System Design - Summary