An In Circuit Programmer is a very valuable tool. Not only does it allow you to program you AVR's with ease, you can update your program without having to remove the AVR (very use full when working with surface mount devices). Also, an ICP allows you to use one tool to program possibly every AVR available today.
This circuit functions well even when a reset circuit consisting of a 10K resistor and a 100nF cap is present. The printer port is directly connected to the AVR, a buffer can be added if you want but we've used this circuit for years without any problems.