Pete, my 'other half', who is a hardware engineer, got home last night screaming: "I hate software". He is embarking onto a new project (automating and electronics disciplines) which requires a use of a PIC processor. The processor can be programmed using a version of PIC Basic, and you can download a full PC programming environment software for it.
Well, Pete was having problems with debugging a program, and he was getting really frustrated with it. His view is that when you get a hardware problem, you can methodically analyse it using a meter, scope or a logic analyser - and normally you can 'easily' find where and what went wrong. With software, if things go wrong, it's difficult to identify the source of the problem. Especially in his kind of programming, where you use a PC to write and compile a program, then you upload it into the kit, normally down the serial port. Problem is that it can take a long time to get to the bottom of it, as a successful execution of the program in the PC environment doesn't necessarily mean that it will behave in the target processor environment.
Why do I wish I could draw? Well, there is that joke amongst the software people that when a user calls with a problem, the problem is perceived to be between the seat and the keyboard. And so, as Pete was describing yesterday his frustration, I built up a picture in my head of a hardware engineer trying to debug the program by holding a meter in his hand, with the two probes touching the seat and the keyboard...