does it bring value to business? don’t just use
technology because it’s cool!
Having a goal! ask why we are doing it?
Design Goals
meets requirements
reliable
maintainable and operable (sustainable delivery of valuable, working
software)
scalable
Design it twice
write down two designs, each with pros and cons, then perhaps there
will appear a third design with combined pros and less cons
Architect great design rather than just working codes, then writing
comments should be fun since that’s how you identify the best
design
Reduce complexity by adding or removing abstraction
Start with writing documentation, ask for feedbacks as early as
possible
Designing new process that is easy to sell to the Team!
familiar technology
easy to pick up
improves dev experience, should improve the overall developer
experience rather than damaging developer experience
Ubiquitous language - same langaguge in code and business
Aggregate - one code object to represent one real world concept with
lifecycle
bounded context - grouping of aggregates to hide implementation
details, hide information. Present a clear boundary to the wider system
while hiding internal complexity that is able to change without
impacting other parts of the system.
The critical complexity of many software projects is in
understanding the domain itself.