I write this post because I am often amazed at the naiveness of some engineers who believe that the impact of finances on technical decisions stifles innovation. No! money is what pays for the whole party and must be the most relevant factor. In my opinion, using the dollar metric adds a very important dimension to engineering, making it more interesting and productive.
While technical metrics like performance, power, and programmer effort make up for nice fuzzy debates, it is pivotal for every computer guy to understand that “Dollar” is the one metric that rules them all. The other metrics are just sub-metrics derived from the dollar: Performance matters because that’s what customers pay for; power matters because it allows OEMs to put cheaper, smaller batteries and reduce people’s electricity bills; and programmer effort matters because it reduces the cost of making software. The best analogy that comes to my mind is that “make money” is our constitution and the other metrics/rules are mere laws that evolve over time.
I present a few examples of chip design patterns that may look like technical innovation but really exist because they are dollar-motivated:
1. Moore’s law. The motivation to shrink the transistor is to reduce die size which increases silicon yield, to improve speed (and reduce power) that increases value to customers, and to get an edge over competition. The reason Moore’s law has continued because it brings in a lot of dollars for big companies. It forces frequent upgrade cycles which in turn increases revenues which in turn pays for the research that goes into keeping Moore’s law alive. A big chunk of why Intel leads this curve is their high profit margins, which allows them to pay higher salaries, which attracts the best of the best engineers, who keep Moore’s law alive. If the profit margins were to reduce, the back pressure will automatically throttle Moore’s law. In summary, Moore’s law is indeed a law of economics.
2. Out of order execution: Believed to be a performance enhancing technique, is actually there because it is a big money saver. Out of order execution improves performance of mediocre code which allows programmers to focus more on functionality and less on performance. It allows for a faster turn around time of software. Note that other techniques that improve performance at the expense of programmer effort are often not embraced. In fact, writing highly efficient assembly code could replace the need for out-of-order but it was replaced by out-of-order because it made sense economically.
3. Good maintainable code: Yes, it looks elegant and clean but maintainable code is solely motivated by dollars as well. Software engineers have learned that it saves more time overall if code is written well.
… and the list goes on …
My main point is that engineers should not loose sight of the right metric when chasing smaller metrics. It is often difficult to understand this concept because it’s not taught in school. I am not saying that it is unreasonable to teach students untainted technical concepts in a puristic premise; I am only advocating that they should be given the broader picture at some point.
Any ideas for college professors?
I will start. The senior design projects can explicitly be evaluated for economic feasibility. We can ask students to either stay within a certain time/money budget or figure out how to monetize their project to generate the extra amount spent. Thoughts?