Programming bare AVR microcontrollers can be a hassle. Setting up the required circuitry and making sure you have the pins correct takes time and mistakes can cause errors that need to be debugged. The problem gets worse when you work with multiple chips which have different footprints / pinouts.
AVRs were always at the heart of my embedded electronic projects and going through the hassle of programming them got old quickly, so I designed an Arduino shield to make all the connections I needed. I was already using an Arduino as my AVR programmer so this just made the process easier, allowing me to just upload a sketch, pop the shield on, and be ready to go.
Although there were other programming shields, very few supported multiple chip footprints / pinouts and of those that did none used a single socket to support them. Using some clever signal routing (all done by hand) the power and programming signals on my shield were routed to different pins on the socket depending on a jumper selection (or DIP switch configuration in earlier versions). The result was an easy-to-use programming shield that worked for a large number of popular hobbyist AVR microcontrollers.