A course started today at work on working with / programming PICs. PIC is a popular 8-bit MCU (microcontroller) that can be utilized in various applications and has many useful peripherals. A/Ds, UARTs, CAN, USB, comparators - all the interfaces you need are in.

It's a lot of fun playing with a development board. Bang some C code and see the LEDs on the board dance.

There's a certain feeling of satisfaction to make hardware respond to software in a simple way. Much of the joy programmers get from their work stems, IMHO, in their ability to control things and see them work. Working with microcontrollers emphasizes this, because the code you write directly commands physical components and you can really *see* the results.