#begin
Next is chapter 7 called ‘Empiricism’. Dave says that in the philosophy of science it is defined as “emphasizing evidence, especially as discovered in experiments” and it is a fundamental aspect of engineering. We as engineers often experiment with all kinds of ideas and solutions. With the recent advent of AI, especially agents, experimentation has never been easier.
David says that making decisions based on evidence and observations of reality is vital to making sensible progress. I really like that… especially the nuanced adjective saying ‘sensible’. You can make decisions based on false assumptions and progress very far in the wrong directions. That is in fact not sensible. If you continue to proceed on the basis of guesswork you will most likely find that your organization spends a lot of money and time on something not worth the effort.
Then David tells a story about a situation called ‘I know that bug’! I think we’ve all been in that situation before. You read a description of a bug in a certain context and immediately jump to conclusions and say; “I know exactly where that bug is”. So, you sign up to fix the bug and before you know you are knee deep in, working on the issue for 2 weeks, full-time. The moral of the story here is that David wants to teach you that, even when you think you know where the bug is, you must use a scientific approach in trying to solve it. TRUST THE SCIENCE! Haha. Science works and you should make an hypothesis and then try to disprove it by carrying out experiments and observing the results. This requires discipline and can sometimes be harder than you think, especially when you know where the bug is.
Empiricism is rooted in few principles. The fist one is to avoid self-deception. You should not fool yourself and as Richard Feynman once said: you, yourself are the easiest person to fool.
David then discusses the concept of ‘mechanical sympathy’. I think this is the principle what David has been best known for. He explains the story of writing very high performant Java code for an exchange. Through a lot of experimentation and observations he and his team found that the biggest performance bottleneck came essentially down to cache misses on the CPU. The performance critical part of the code was fully optimized to avoid cache misses with very good results. He has coined this term called mechanical sympathy to mean aligning the software implementation with the hardware.
I like David is a champion of this because I think that many engineers haven’t thought about that in a very long time or even ever. Modern software is build on so many layers of abstraction that even the pseudo-archaeology community couldn’t dig themselves out of that bullshit narrative. Spending only a tiny fragment of brain capacity on writing efficient code instead of bolting everything on to existing code without thinking could drastically improve performance.
Thus we have to experiment and continue to make observations. Even with roots in science, engineering is a practical discipline.
#end
01010010 01110101 01100010 01100101 01101110
Recent Comments