 In-system programming, aka in-circuit serial programming, allows modern microcontrollers to receive their initial firmware and future updates without leaving the comfort of their PCB. For example, this Arduino uses a 6-pin AVR-ISP interface, but you'll also find a 10-pin version used on older boards. And pickchips will use a 5-pin programming header. Beyond ISP, you'll also run into JTAG connectors. These can be used to test onboard hardware and ensure the PCB's internal connections are sound. The actual connectors used for JTAG vary, but the most popular version used with ARM chips is called SWD, which uses a .05-inch pitch 10-pin shrouded header. To use it, we recommend a J-Link Mini, which supports just about every ARM chip made, so you don't need a new programmer or chip.