I built a circuit on a breadboard using a 328p.
I tested it out and used a USBtinyISP to burn the bootloader and program it.
Everything worked great.
I was using a 16Mhz crystal and (2) 22pF ceramic caps for that prototype.
Upon success I drafted a PCB design for this same circuit.
I had been reading around on the web and most people were saying 20pF was the right value for the crystal oscillator on the 328p.
I chose a crystal oscillator that was the same values and ratings as the one I had used for testing, but a SMD version for my PCB.
The crystal cap values were the only change I made between breadboard and PCB.
I have burned the bootloader and uploaded a sketch to my PCB with the same circuit and it works exactly as intended while the USBtinyISP is connected to the circuit.
When I remove the USBtiny, it goes all wonky.
For example: I tested blink sketch.
When I remove the programmer, the LED flashes rapidly and irregularly.
I believe it may be an issue with the crystal and capacitor setup.
My hypothesis is that the timer of the 328p is being controlled by the programmer while connected and that is why is works only then.
Parts on breadboard:
Parts on PCB: