programming ATMEGA328

Just keep in mind that if you get an ISP programmer you will probably
still want (need) a serial interface as that is the only way to really communicate from
the host (the system running the IDE) back to the AVR.
i.e. if you want to output data to the IDE serial monitor you will need a serial
interface to talk to the AVR.

I have one of the FTDI cables. It is nice and works fine and uses RTS instead of DTR
for auto reset which I really like, but overall I really don't like it.
Not because of anything it does, but because of the cable itself.
It is BIG. The cable itself is 5mm in diameter and fairly stiff.
When plugged into a small pcb, it wants to flip it over until you work
the cable or put a book on top of it.
I'd save the money and get something other than the FTDI cable.

IMO, the FTDI cables are way overpriced.
FTDI used to sell them directly for $3.50 now they are going for around $20.
For about $20 you can get a serial interface AND and ISP programmer.

There are cheaper serial interfaces,
but here is a really nice serial interface: FTDI Friend + extras [v1.0] : ID 284 : $14.75 : Adafruit Industries, Unique & fun DIY electronics and kits
The nice thing about this one is that there are some configuration blobs on the bottom
to modify it for future needs. Like say you want to use some 3v stuff in the future...
It also is configurable to use RTS (default) or DTR for auto-reset.
Sparkfun has some that are smaller adapters but they don't have the reconfigurability.

You can find cheap AVR ISP progammers on ebay.
Just make sure to get one with a 6 pin cable or get a 10 to 6pin adapter.
On ebay you can search for "AVR ISP", "USBASP", or "USBtiny".

Another more advanced alternative is a board like this:

It is an ISP programmer with a built in serial port.
To use the serial port you have to do some wiring but it offers both capabilities.

--- bill