What is the goal? ask why we are doing it? what is the problem
statement?
Does it bring value to business? what’s the priority for the
business?
Design Considerations:
Design it three times
write down three designs, each with pros and cons, then there will
appear more designs with combined pros and less cons
Architect great design rather than just working codes, then writing
documentations and code should be fun since that’s how you identify the
best design
Choosing the proper boundaries between functions is perhaps the
primary activity of the computer system designer
Reduce complexity by adding or removing abstraction
Designing new process that is easy to sell to the Team!
use boring/familiar technology. easy to pick up. improves overall
dev experience, should improve the overall developer experience rather
than damaging developer experience.
To significantly improve/speed up the entire system, one must
improve/speed up a large fraction of the overall system. (Amdahls’ Law,
CS:APP P58)
Design Step by step:
write design documentation
functional/business requirements
non-functional/technical requirements
reliable
maintainable and operable (sustainable delivery of valuable, working
software)
scalable, performance
core entities (DATA) and API Interfaces, services, functions etc..
design both mutation and resolver i.e. can FE reproduces Input from
query?