Since I've started my electronics hobby, I've had a few coder friends ask what kind of things one would need to start themselves. It's always been a pickle whether I should recommend something like Arduino, or going straight for a programmer and some AVR chips (which I personally like better but some might find the initial learning curve intimidating).
I had read about Arduino ISP sketch that enables using Arduino to program AVR chips. However, some said that the newer Uno boards are not supported, and some said the reset circuitry would need to be held up with a cap etc. So I decided to see myself if it could be done.
Turns out that the ArduinoISP sketch works just fine on my Uno R3 without any tweaks at all on Arduino 0022 IDE, but the 1.0 needed just a small code tweak (changing 1 number). After that I could use avrdude to program fuses and flash firmware with no problem at all.
I documented the process with clear pictures, and have also attached a PDF version of it just in case. I still recommend the web version due to easier reading a links:
http://codeandlife.com/2012/03/21/using-arduino-uno-as-isp/
With this tutorial, I can now happily recommend Arduino Uno for a beginner, knowing that even if their budget is tight (esp. students), the board doubles as ISP in case they ever grow out of it. :)