I have just started using one and have only tried it with a PIC16F18446. In the past I have used a pickit2 and pickit3 (After first using parallel port programmers.) I liked the easy to use programming software as I used text editor (Programmers file editor.) and MPASM to assemble the code. so the main learning curve was with MPLABX. I find it very very slow compared with just using the text editor and MPASM. The debugging feature of MPLABX is useful. Other than problems I had understanding the way MPLABX works the PICkit4 has worked without a problem.
Les.
That was how I started back in 2010 with a 16F628A, but with a kit programmer that used a parallel port on the PC and the ICSP interface on the target. I would have to remove the PIC from the target board and place it in the programmer for each code change. I typically used Vim text editor, then MPASM assembler to build. I had tried to wrap my brain around MPLAB IDE, but at the time I was very new to embedded electronics so it was a bit advanced for me at the time.
Once I transitioned to the 16F88x family, I bought a PICkit 2. I got back into playing with MPLAB IDE and got quite good with it. Once I had the PICkit 2, the convenience of editing code, then clicking the "Build & Load" button sped up my debug time immensely. I especially loved the in circuit debugger functions. Needless to say, I ditched the old kit programmer.
Then the MPLAB X beta was released. It was way cool at first and I loved the user interface, but very buggy. Once I realized the ICD didn't work very well, I went right back to MPLAB 8.92.
A couple of years later, after X had been out for some time, I decided to give it another go. It had improved immensely, and ICD was now fully functional. From this point on, I used X exclusively and never looked back.
When I transitioned to the 18F family, I bought the PICkit 3. I messed with the 18F4620, 18F4550, and the 18F4555 before I found the 18Fx6K22 family, which I have been using pretty much exclusively. I recently learned of some new 18F devices that I plan to try out.
Microchip Assembly was my first programming language, followed by Intel Assembly with the MCS-51 family. Eventually I started playing around with C here and there, then went into C full time. I was using the Hitech C Compiler until XC8 was released, which I really liked as it featured support for both Hitech PICC and C18 syntax.
In 2015, I got into AVR devices using Atmel Studio and the AVR Dragon programmer. Once I learned that X and PK4 now support AVR devices, I wanted to give those a go. So I got the PK4.
I would love to see AT89S device support with the PK4. Maybe they'll add that in a future firmware release.
I have to say I really love the direction Microchip has gone over the years, especially since they acquired Atmel. I wasn't sure how that was going to turn out but in the end, they've come a long way since I started with PIC in 2010.