One of the things you need to build is an EEPROM programmer which is a fun project:
<snip video>
I worked on this for a while until I got bored with prototype boards. I did build a PCB for the programmer and it worked out well. There's a LOT to learn in a project like this.
While learning to use shift registers as I/O expanders is extremely valuable, if you just want bash bytes into 5V programmable NV memory chips without a dedicated programmer so you can get on with whatever project needs the programmed chips, you are better off starting with an Arduino with enough I/O pins to do the job unassisted. It also helps efficiency if you can avoid the horrors of digitalWrite() so enough contiguous 8 bit ports are desirable. The Arduino Mega 2560 fills the bill, with more I/O than you can shake a stick at, including five complete eight bit ports that can be used without loosing UART connectivity to the host PC. Its also got enough program and data memory to make it viable to write a full featured programmer sketch, that supports a variety of different memory sizes, 'speaks' IntelHEX, and supports a file transfer protocol so you can use an off-the-shelf terminal program on the PC to drive it without needing to copy/paste data files to/from the terminal window.
The only further hardware refinements that are worth doing if you need to program several memory chips are to provide a software switched current limited 5V supply to the target memory chip - possibilities include a LDO regulator with an enable pin if you are using external power >5V, or a beefy P-MOSFET and a polyfuse if you are running off USB power, with monitoring of target Vcc via an analog input so you can detect most shorts due to mis-inserted memory chips, a ZIF socket with a switch next to it under its operating lever to signal to the sketch when the socket is locked, and a status LED next to the socket.
However, *If* you want to program old-skool HV programmable EPROMs, (or support low voltage FLASH memory) the small Arduino + shift register as I/O expander approach may well be preferable as it allows you to vary the supply voltage to both the EPROM and the shift registers (over lets say a 3V to 6V range) and only have to level shift four SPI signals between the MCU and the shift registers + whatever control lines you have decided to directly drive. If you do go down the shift register road, a universal shift register with parallel I/O, e.g 74HC299 is useful for handling the memory data bus.