“Stimulate, don’t simulate” from Frederick Hill
“MyCompany” makes processors, and one thing you have to do when you make processors is create a reference board that has your chip and some RAM and a serial port and other things, enough to “do something” with the processor. You also have to write all the software needed to use the board, an assembler, compiler, a Windows application to talk to the board, and so on. You give this board and the software to the customer, who might be making, say, a digital camera, and the customer’s engineers can play with the board and determine for themselves what the processor can do and if it would work well in their next camera.
I’ve worked on the development tools here at MyCompany. I wrote the assembler, for example, and some of the Windows software used to connect to our reference board. A field application engineer was trying to upload an executable to his reference board, and he couldn’t even get a connection, and he asked me for help. I watched him attempt the connection on his laptop, and then I went back to my machine to try and reproduce the problem (“Make it fail”). It worked with my board, so I brought the FAE’s board over, and it worked.
Now, before, I would have spent a lot of time trying to reproduce the failure on my system. But, I remembered all your advice about reproducing failures, particularly the advice about working with the failure on the system where the failure was occurring. I bit the bullet, brought the board back to the FAE, spent 20 minutes creating a development environment on the FAE’s laptop, and…
The problem was that the FAE had a previous version of the board support software installed. But I had asked the FAE about that, and he had just installed the current software. Or so he thought. His laptop used to belong to one of the guys in sales. A couple of months earlier, my boss had created a special version of the board support software for a sales trip, and had used the version number “1.5” for this ad hoc “release”. At that time, we were on version “1.4”.
But now, the current version of our software was “1.5”. So, when the FAE did the install, the installer looked at the version number of the software on the laptop, determined that version 1.5 was already there, and didn’t change anything.
I would not have found the problem if I didn’t work on the FAE’s laptop, and that is something that I just wouldn’t have done before I read your book.