“I suppose it is tempting, if the only tool you have is a hammer, to treat everything as if it were a nail.” – Abraham Maslow
The above statement is an adage that goes a long way to explaining many engineering decisions. Often referred to as Maslow’s Hammer it is a concept that has been well understood in science and technology for a very long time. In engineering we tend to use the tools we know to solve every problem in front of us, even if the tools we have may not be the best solutions.
There are good reasons to sometimes use the same old tools. The time and effort it takes to learn new tools, particularly with very complex technologies, is considerable. A decision needs to be made… The old tools may not be the most efficient way to solve the problem, but the time and effort it takes to change outweigh any gains to be made. Thus many wise engineers put off updating until the gains to be made are worth the investment of time and resources.
Or the old tools are simply obsolete and you are forced to update.
I am as guilty as any engineer in this. The major example, at least in my case, are microcontrollers. For many decades I have used Microchip PIC16F controllers each time I encountered a problem that required some form of complex control. Specifically I have always loved the PIC16F73 and the later PIC16F873 parts. they had everything I usually needed… A serial port, plenty of I/O pins, a few channels of 10-bit analog to digital, a convenient 28 pin DIP package. If I needed more I/O or more memory just step up to one of the larger packages like the PIC16F876.
Then Microsoft Windows 7 happened. How is this even related? The old versions of MPLAB I used to write the software and program the parts does not run of 64-bit Windows 7. When I updated my machine, I was forced to update to MPLAB X, a totally different platform. A new hammer to learn.
At the same time I had in front of me a problem that required a microcontroller with two serial ports. The PIC16F series does not offer such a part, the more powerful PIC18F series does. Another new hammer to learn.
I really need to start writing my code as relocatable modules instead of the old absolute code I have developed over the decades. Moving to a new controller series means I have to re-write everything anyway, may as well do this to. Another new hammer.
New software, a new microcontroller series, relocatable code, three new major changes all at once. I can do this, it will just take some time to read manuals and get all the details right. These tools are just enough like the old ones to be familiar, with dozens of nagging little differences to catch me out and annoy me to no end. One little missed comma and flag and it does not work. Put a UDATA statement in and test, no that does not work… Back to the manual… Oh, it needs to be UDATA_ACS for the access bank! Another half hour gone on four characters in the code.
Slowly it is getting done. I have a circuit board in front of me, running new code with the new software, flashing some LED’s. Flashing is good. Flashing is progress. At least the code can be built, downloaded to the controller of the circuit and run. it also means my timers work, the interrupt routine is firing, and the whole project just might work.
This particular controller is destined to be installed in the Keck 2 dome. A serial router for the top and bottom shutter inclinometers that do not like to share the same communication chain. We can only get one to work at a time.
Now to get serial communications going.