Print to USB and UART at the same time

you have to write everything twice...

Yes, but you could put the actual output code in a function and call it with the text or data to be printed as a parameter. One function call, two outputs.