Hmmm. As a CS who often works with engineers (and scientists) from various disciplines (or managers who come from those backgrounds), I can say that many of them have a blind spot regarding software. Some see the surface and not the ocean. Their questions amount to "how long will it take to implement a user interface that is like this, using software", and that reflects their lack of grasp of the depth of issues that may be dealt with in software specification, design, and construction.
Symptoms of this are:
- "Let's build this critical system (which should be network-centric and reliable-server-based) using a Windows PC glommed onto my techie hardware (because windows PCs, that's what computers are, aren't they?)"
- "The demo/prototype worked, what more work could there be to do? Aren't we done?"
- "Let's use circa 1970/80s serial communications protocols for this distributed monitoring and control system, because they're fast!" (What do you mean that security, and future-proof, scalable, standard TCPIP-based architecture is more important than latency and bandwidth in this supervisory control application?)
- "What's an interface and design by contract? Here's the signal list. There couldn't possibly be any disagreement about it."
- "You asked for an interface with 3 monitored value communications one on/off control, and one setpoint setting method. We gave you this 100 signal signal list. Why would you be complaining when we gave you so much more features and flexibility. You can toggle them in any sequence. Of course turning it on is a 20-step flow chart of signals list monitoring and toggling. See how flexible that is?"
- "I haven't seen a software problem for which visual basic, matlab, Fortran, or C was not the answer."