understand holistically → components, data flow, communication
identify bottlenecks → serial vs parallel, tight coupling, unnecessary indirection
challenge assumptions → latency, throughput, reliability often misunderstood
redesign interfaces → batch, reduce round-trips, parallelize independent work
Patterns
serial → batched → processes one at a time; batch for latency/throughput
tight coupling → loosening → extract independent components to run parallel
sync → async → offload blocking to background workers
monolithic → modular → split for independent optimization + scaling
Example
client/server API serial (one request at a time) because latency/throughput not understood. fix: batch requests → amortize latency, increase throughput.
Pitfalls
over-architecting → don't redesign whole system for small gain