5 ms·
For the last 5~7 years, thousands of software-only programmers have been discovering Arduino and Raspberry Pi, and have been learning about the real-world conse
by SoSoRoCoCo 6y ago
For the last 5~7 years, thousands of software-only programmers have been discovering Arduino and Raspberry Pi, and have been learning about the real-world consequences of interfacing to hardware. I help out at a local hackerspace and the excitement of someone discovering a software/hardware interface bug is contagious.
Here's an example: someone was trying to make a plant watering machine and was using a FET to control the DC motor. The wire to the FET was about 15 feet long so the slope from the poor GPIO was horrendous, and the motor would basically brownout because it couldn't overcome the initial stall di/dt. The idea that not all edges are perfect 90 degrees was eye opening to him.
- myself248 6y agoOh, dang, yeah. Hackerspace here too, and software people colliding face-first with electrical reality is an endless source of learning, amusement, and project delays. Some quality time with an oscilloscope goes a long way, but still cannot overcome all stubbornness.
- robocat 6y agoIs that because many software programmers use “genetic coding” techniques where bugs are randomly fixed until the software works? Or were you mostly dealing with newbie programmers? It’s not like software doesn’t have similar failure modes to hardware, right?
- SoSoRoCoCo 6y agoI don't think it was... maybe? I've seen people hack circuits they way they hack code: keep trying small tweaks until it works. Then when they connect two circuits and it doesn't work, they go back to the fundamental RTFM. It could also be the skillset: circuits are more a creative art form, logic is more... logic. (But that doesn't always hold because I've encountered cache/CAM RTL designs that were beautiful.) Failure modes are different. A transistor can go bad if you accidentally drove it too hard, so now you might need to replace every part until the circuit works. And maybe one of the xtors in your box is bad. Or maybe a wire isn't making a good contact. Just the physical aspects alone without bringing an oscilloscope into the mix ("Why is my signal so noisy? Oh, it's the fluorescent lights, or the cheap USB hub noise in 400MHz spectrum, or the wall-wart...") can be maddening. Mostly I think the people I helped out seemed to forget that "digital" only exists inside the O/S, whereas the real world is analog, and real-world debuggers are more abstract than using, say, gdb or journalctl. But then I work with MY mentors, and they have an even larger set of debug skills based on extensive component knowledge that reminds me of chess grandmasters who know all the openings. E.g, being told I'm using the wrong OpAmp because that particular device's temperature sensitivity isn't suitable for frequency-range I'm designing.
- temac 6y agoThere are some reasons Electrical Engineering is a thing. When you open the datasheet for a chip, all the cool numbers in nice tables are not just there to be pretty, but because they are useful to design a circuit to put the chip in... And then you have your classic engineering subjects applied to electrical circuit constructs, like filtering, stability of feedback loops, etc. In the end you can design simple/medium-complexity digital electronics PCB with some common knowledge on PSUs, digital interfaces (including layout/return-current/impedance control) with the right tools, but non-trivial analog I would not even bother, I leave it to people with a real training in this field.