Once you start building something with microcontrollers, one thing you need to take in to account is programming adapter. This is a device which allows to upload compiled code in to chip. I don’t know if this is still a fun to build your own DIY programming adapter which is not guaranteed to support all chips nor it will be safe and reliable. AVR microcontroller niche is one of most interesting when talking about programmers. If you take a look at AVRDUDE configuration file you will find that there is about 50 of them. Many of them are DIY while other are official.
When I started with microcontrollers I also was looking for cheap and easy to build programming adapter. So I have built several if few years.
First of them was RS232 based programmer that worked with then popular PonyProg software. Later followed LPT port programmer:
They both worked well either with PonyProg or AVRDude. But then COM and LPT ports became obsolete, so next logical move was USB interface. Probably most popular USB based DIY programmer was USBASP – originally developed by Thomas Fischl. Again it works with AVRDude software. But problem was with clumsy updates and driver stability. For some people it works, for some they claim it won’t. I have built mine and it worked pretty well.
for more detail: Choosing right programmer for AVR microcontrollers