It isn't just troubleshooting s/w that is a lost art, it is the entire concept of being
able to design and plan out a project is starting to become considered as unnecessary.
From what I can tell the trial and error methdology with no plans is the "Arduino Way"
and is actually encouraged.
The real tradegy in using this type of methodology is that there is so little
understanding behind the "creation" that it impossible to know if it really works
or just happens to appear to be working.
i.e. could it blow up or malfunction at any momment.
My answer to this is "Perspective". In other words, so what? If I take a $2 micro, and connect it to a $0.30 LED without a resistor, and I blow up the LED and
the micro's output pin, who cares? That didn't hurt anyone, and I just learned a valuable lesson.
It's not the traditional sense of engineering -- it's learning by doing, by creation, and getting an immediate fix for your curiosity. In honesty, I think society should encourage this form of learning more
. This is not to say I don't find academics worthwhile -- I wholeheartedly do. I spend hours and hours reading PDFs of how to best to minimize (insert counter-productive force here), and read descriptions from designers doing things well beyond my level of understanding until things start making sense. The practical applications I get as a beginner develop an insatiable curiosity for the "how" and "why" that have no meaning to me on day one.
Fundamental theory without application is dull and hard to integrate into understanding. Once you see
something, and then you are told why
that happened, there's an immediate connection there, and instead of being a chore, it leaves me wanting to understand even more.
It's easy to get confused, as someone with more advanced understanding, why these newbies can't be bothered to learn first... But remember, when you first start out, you have no idea what you don't know -- or what's even possible. A little time hands on starts developing a road to knowledge that some will take, and others will prefer to remain ignorant. Not everyone will have the tenacity to become a full engineer.
I agree though, there's a big difference between playing around with blinking LEDs and mini robots and tying into household AC and vehicle control. The latter usually get stern warnings from regulars about staying out of projects that are far beyond one's level of understanding when safety is a factor.
FWIW, I tend to write code as I go along. I start with an idea of what I want it to do, and start writing functions that accomplish those tasks. Along the way, I find where my interfaces don't line up correctly, and then I think about how to solve that in the best way. I don't really understand how someone can develop an API without building use-cases for it. I've discovered all kinds of gotchas I never would've thought up in advance. (E.g., this object won't know about this member variable until X
happens, so there needs to be a callback here, or the caller needs to retain an object reference... etc. etc.) I do end up re-writing code a lot, but is that time I would've saved if I had spent it diagramming instead? I don't know. Not always...