What I'm looking for is a step-by-step field guide for "interacting with real world" for programmers with zero experience in electrical engineering.
Electrical engineering encompasses everything from very low level digital and signal processing electronics to designing power plants.
There were some promising videos on youtube but it all boiled down to: "Here's this simple circuit. <no explanation about the circuit> Now to the hard part: FOR loops. <30 minutes about for loops and basics of C syntax>".
I guess this would be a great topic for the pragprog-guys. If they'd commission such a book I'd buy a dozen copies ;)
Interesting you mention this, I've been getting into microcontroller programming for the past year or so and I've also found this to be the case.
I'm thinking of putting together some tutorials that focus more on the electronics side of things. Additionally the programming would be a bit less offensive to us (i.e. where possible tidied up into libraries instead of splat out into one big sketch file). Do you think there might be a lot of interest in something like this?
For arduino, getting set up in vim and working with ino (instead of the arduino IDE, which is extremely useful but fugly as hell) was the first big hurdle.
i think it's like OOP programmers trying to learn functional programming, you need to bridge with similar concepts so it's easier to grasp.
I can only tell from what I know from my peers (mostly CS educated guys). Many of them are interested into hooking up stuff to their computers but can't get their head around the most simple electronic circuits. (Pull up/down resistors are pretty much irritating for example).
So yeah, there's definitely some interest. I guess hardware hacking is something many programmers are interested in (Software only gets boring after 2 decades of programming) but can't find some easy intro.
It includes all the hardware to build a simple microcontroller kit, along with step by step assembly instructions. The best part is that the instructions also explain why you are doing what you are doing.
EDIT: bonus point if the book/tutorial can relate with concepts in software development, e.g. "this is equal to a compiler, and this is how you put breakpoints and run debugger"
The books are old, and so there have been a number of advances, but that's okay because people like you need a solid grounding in the basics (the simple circuit you mention) and the rest will be easy enough for you to work out.
But it'd be great to see a modern electronics course for programmers.
Make: Electronics http://www.amazon.com/Make-Electronics-Discovery-Charles-Pla...
Part of the book is breaking things to see how they work which is much cooler than thinking of things as a black box.
1. With programming you can download open source code that does whatever it is you want near enough instantaneously. Electronics projects come to a halt if you don't have the right parts on hand (which btw makes electronics a good hobby for just dipping in whatever free time you can steal).
2. There's a great deal more learning material available for free online for learning programming than there is for electronics.
3. With enough reading you can put together a web application or software 'in production'. Designing + printing PCBs and soldering on surface mount components with a reflow oven is obviously not a requirement for hobby electronics, but something I'd like to be able to do eventually. Getting the knowledge/skill/equipment together to do this will probably take at least a year (whereas you can go to any web host you like and have a website up and running in about 30 minutes).
4. If you mess something up while programming, you just kill the process and try again. If you make an error when putting together electronic components, you run the risk of letting the blowing them up and letting the magic smoke out. Aside from the safety issue, this is a real PITA if you're short on parts!
5. Debugging is relatively hard. While with programming you can output parts of the state of your program, analysing the state of a circuit requires working a multimetre and possibly an oscilloscope. This difficulty could be more due to my inexperience with electronics though.
EDIT: added...
6. Getting together the right equipment (soldering iron, breadboards, safety glasses, pliers etc) takes time if you're not sure what you're going to need up front. Sames goes for building up a stock of often used parts.