CrysPhys said:
But software increasingly is integral to engineering. Bad software, and people die (Boeing 737 MAX, autos with various degrees of software control, ...).
Most of the problem in modern equipment are software problem. I designed plenty of computer control hardware, they are very straight forward. Nobody do logic design like in the older days. Everything contains in one or two big IC(be it MPU or FPGA) which have software programs to run the whole thing. You really cannot go too wrong. It's what's inside those big chip that is the problem...Software. Even FPGA is done by programming.
The new stuffs are getting so bad now a days, never mind the Boeing 737, just everyday electronics in cars, tv boxes, printers are just bad.
We bought a car in 2018 because we have two older ones of same brand and they are trouble free. That stupid car spent at least a month total in the first 1/2 year in the dealer. Everything was computer problem, radio kept changing, all of a sudden lost control on the center console. I had to pull the car over, pull it in PARK, then everything came back. Got better after they updated the software a few times. They never manage to get the garage remote working at all, they even send people over to work on it and still not managed to make it work.
I knew better to NOT buying the lane correction and auto breaking already. In fact it's so hard to find one without all the fancy stuffs that I had to order the car without those. Imagine if those acts up!
We have a rental business, you don't even know how many printers and scanners we went through, slow, inconsistent. Every time there's a software update, problem comes. Those are not cheap all-in-one, we got the small business type. Both Canon and HP are just as bad.
Then the Direct TV control, they are really a joke. It's so flaky.
The problem is what I described before. Program always call on other modules written by someone else to safe time, you use different modules from different people/company. Later on when you have to update the program, those people/company that wrote those might not be around, then you have to use stuffs from different people to patch the program. Unless you know all the in and out of the old stuff, you might run into problem.
Another thing that is very critical. Program is running line by line, but hardware is real time. You can accidentally create "raise" condition in hardware that the person doing the programming has no idea that can happen. This is PARTICULARLY bad in FPGA programming. Like resetting a D-flipflop.
eg.
Reset = A & B. So it only reset when both A and B are 1. You write the program thinking this is ok. BUT in real life, there can be raise condition. Say B occasionally goes high before A goes low. You create a short glitch that sometimes reset the FF. This is SUCH A HUGE PROBLEM. Those that program the FPGA have no idea because it is logical, they don't know this is real time and raise condition happens.
When I was the manager, we contracted out to program one FPGA, I ended up had to read the program line by line to debug it and this was one of those! After I retired, I knew a friend that is in high position in Lockheed Martin, we went to the same gym and saw each other all the time. One time he was complaining about those programmer and FPGA. I those him what happened about the D-FF, He offered me a job on the spot! Of cause I politely decline. But you can see these are HUGE problem.
Seems like software people are living in their own world. Also it doesn't help that marketing people want things to be too fancy instead of reliability. I have a 2014 SUV I love, but it's getting old, I want to buy a new one. BUT I truly don't know what to buy after the experience of the 2018 car. None of the problem is deadly, but still......
They really need to make it a requirement for CS major that goes into firmware to study digital logic design, understand timing diagram and MPU circuit design.