Best way to program 328 au sm

Hello
Ive got some blank of the above id like to burn bootloader and program these wonder what is the best way to do it is there a dedicated programmer out there
Thanks

328 or 328p?

Personally, I like to put the blank chip on my board with the supporting parts (e.g. bypass capacitors and stuff) and measure the input current before I program it (e.g. 4.6mA @3.3V but it varies some and depends on supporting stuff). Then if I set the fuse for 8MHz the input current increases some (e.g. 8.2mA @ 3.3V /w fuse for internal 8MHz). On another board, I set the fuse for an external 16MHz crystal and the input current increases even more (e.g. 11mA @ 5V /w fuse for ext 16MHz crystal). I like this sort of feedback. First I have some evidence the chip was blank, and not previously programmed and then put back on the shelf. It also tells me things are working. After setting the fuse I upload the bootloader.

I just use avrdude and an Arduino Uno loaded with the Arduino ISP sketch in examples. The sketch has documentation on how to wire it.

avrdude -v -p atmega328p -c stk500v1 -P /dev/ttyACM0 -b 19200 -e -U lock:w:0x3f:m -U lfuse:w:0xFF:m -U hfuse:w:0xDE:m -U efuse:w:0xFD:m
avrdude -v -p atmega328p -c stk500v1 -P /dev/ttyACM0 -b 19200 -e -U flash:w:optiboot_atmega328.hex -U lock:w:0x2f:m

For programming them (bootloading them the first time, or if you plan to not use the bootloader), you use an ISP programmer. I always include the 6-pin ISP header in my AVR projects/designs. You can use ArduinoAsISP sketch running on another Arduino (I have a nano clone dedicated to this task) - though I recommend picking up a USBAsp programmer for a few bucks on ebay. Among other things, that reduces the number of connections you have to make to just plugging in one connector.