Architecture vs. Optimization
Cliff Brake November 27, 2024 #architecture #optimizationIn 1968, "The Art of Computer Programming" by Donald Knuth was published with the following quote:
"We should forget about small efficiencies, say about 97% of the time: premature optimization is the root of all evil."
This was in the age when computer resources were scarce.
We now live in the age of abundant computing resources, so it seems this statement would be many times truer now.
Performance is important when we select technologies. For instance, Go or Rust is significantly faster than Python and it is important to think about issues like this up front. This is an architectural issue.
Deciding if we will use a message bus or not is an architectural issue.
However, if we receive data over a network, especially in distributed IoT systems, the network is relatively slow. So it rarely pays to optimize how we process data from remote systems until we reach a pretty large scale. This is an optimization issue.
Creating an abstraction to reduce some duplicated code is an optimization.
With architecture, we need to think about it up front.
It rarely pays to optimize up front -- that is best done later after some learning.
And if we spend too much time optimizing, we never get to the learning. And if we don't learn from testing a working system, we're likely optimizing the wrong things.
Architecture vs Optimization -- there is a difference.