That chip is self-programmable.
Two ways to approach it:
- you can use a bootloader - they are many of them floating around;
- you can code it yourself - either by manipulating the registers or pick a compiler that has a canned solution for that.
Neither is complicated.