I've just been playing with one of the TinyAVR series 1 chips, the ATTiny1614 actually to do some extreme low power experiments with the inbuilt RTC together with an NRF24L01 radio module for battery applications.
Anyway, and this is the main point, for the development, I'm using the MegaTiny core (2.3.2) by @DrAzzy . One of the great feaures (OK. maybe not exclusively with this core) is that the UPDI programming can be done with simply an FTDI like device (USBTTL adapter) and simply a diode and resistor. A python script within the core toolbox handles it all. Even better, the same USBTTL adapter can be used also for the serial monitor (by swapping a couple of jumber wires). That means that, without even a boot loader on the device, it can be programmed, then the serial console output viewed in a way very similar to developing a program on a development board such as the Nano or Uno. But it gets even better. With a simple CMOS analog switch (example CD4052), it is not even necessary to fiddle around with jumper wires to get a *clean workflow through from loading the program onto the device to testing the program together with the serial console. *Clean here means 99% clean because, at the moment, a switch has to be flicked to put the rig in programming mode and back out. That would be the next refinement to automate this stage and then maybe create a full development board. I'm not sure though about a reliable detection method for the start/end of the programming phase.
This is what I've put together so far. There may also be better ways of achieving the same thing. Hopefully someone finds it useful.
Dr Azzy's UPDI programmer description can be found here: AVR-Guidance/jtag2updi.md at master · SpenceKonde/AVR-Guidance · GitHub