I observed a lot of trade-offs.
I would call Trade Off some kind of Art.
Tradeoff collection therein.
Space | Time Tradeoff
A space–time Tradeoff or time–memory trade-off in computer science is a case where an algorithm or program trades increased space usage with decreased time.
Here, space refers to the data storage consumed in performing a given task (RAM, HDD, etc), and time refers to the time consumed in performing a given task (computation time or response time).
Code Changeability/Simplicity | Code Readability Tradeoff
hint from “99-bottles-of-oop”
- abstraction -> changeability(hard to understand)
- concrete -> easy to read(hard to change)
Security | Effiency Tradeoff
cryptography
- The more complex the encryption algorithm is, the more secure it will be, while it’ll take more time to encrypt/dencrypt
even good (or trendy) solutions add complexity
Use sidekiq or use sidekiq with rails activejob
- sidekiq: powerful/simple
- activejob: more rails-favored features
ease of use | feature rich
beginners want programs/interface to be easy to use
advanced users want programs/interface to be more powerful
top -> down design | bottom -> up design
“the art of unix programming” ch4.3.1
接口复杂度 | 实现复杂度
“the art of unix programming” ch13.1.2
features/performance | price
“Fast and resilient web apps: Tools and techniques - Google I/O 2016”
Event-carried state transfer
more decoupling
more availablity
less data consistency(eventual consistency)