To someone interested in learning programming, or anything in general, I would offer the following advice:
- Figure out how you learn best. There are video lectures, books, classroom courses. I learn best when shown an example and given the opportunity to change it or use it somehow.
- Find something of interest to you, and then find a way to use what you want to learn to do it. Most of my electronics experience comes from making a model train move. Our most successful students at work have projects requiring some programming that they can apply the lessons to.
- Don't buy a book or pay for a course unless you know you need it and it is not available elsewhere. There is too much good stuff on the internet and every time I purchase a book, my interest quickly moves in some other direction.
With that in mind, here are some of the resources I've found valuable for learning programming and electronics:
Udacity provides more of a college course experience with weekly assignments and video lecture snippets. It includes the ability to interactively write and test code. They use Python to teach everything from Intro To Computer Science to Applied Cryptography.
The Python Challenge is unique in that it teaches by presenting you with a series of challenging puzzles which can only be solved by learning techniques that are only hinted at in subtle clues. Once you solve a level, you can see all the various methods other people have used to accomplish the same task.
https://www.sparkfun.com/tutorials) and Adafruit (http://learn.adafruit.com/), have educational portions of their website that give tutorials on how to use the various components they sell. Additionally, Adafruit is developing the WebIDE for the Raspberry Pi which I feel is a valuable tool for both developing code on the system and teaching fundamental Python. I like to demonstrate the WebIDE every chance I get, which included Pycon2013, the Corvallis Maker Festival, and more to come!
Of course, I am just scratching the surface, but as with anything, you have to start somewhere . . .