Arduino IDE is designed to program Arduino boards featuring an AVR microcontroller with an Arduino bootloader. But Do you know that the same Arduino IDE can be used to program other Atmega microcontrollers, even without a bootloader?.
One of the most important things you must have to get into microcontroller programming is a good programmer. AVR microcontrollers are programmed using its SPI port. So the simplest AVR programmers are the direct parallel port or serial port programmers, in which SPI protocol is bitbanged using the serial port or parallel port. But modern PCs and laptops does not have parallel ports and serial ports. They only have USB ports. So here comes the role of USB based programmers. One of the simplest USB based programmer is USBASP. It uses an Atmega 8 and a few passive components, and is well supported in Linux, Windows ans Mac. More details of the USBASP can be found here.