I was thinking about this back in May as my daily work requires frequent base operations (digital engineer/programmer). Decided to go for both a DM42 (been watching it since 2017 after having enough disposable income as a graduate engineer), and a DM16. Went for the credit card sized as I already have a full-sized voyager.
After 6 months I tell you, both are a joy to use
I printed manuals for both to use for study and as occasional reference. I love having a dedicated processor with basic machine code level instructions (that's what I think of the DM16).
The DM42 I use for fractional numbers (so I don't have to switch modes on DM16). It's also surprisingly nice to use while only displaying X and Y registers, as it keeps the display clean (AVIEW doesn't obscure registers).
The DM42's keyboard is very good (not as good as HP15C, but miles ahead of any school calc like a Casio/TI

). The DM16's keyboard is not as good, but I like the push buttons (and I bought it for the smaller size anyway).
I haven't quite got the hang of RPN programming as being a C/Python programmer it's a pain only having GOTO equivalent statements for structuring code. Although now after some assembly practice it might be worth trying again.
As someone who debugs masking, shifting, base conversions etc. i think the DM16 is one of the best (though DM16L is probably better feel wise).
Battery wise I didn't seem to be too lucky as the DM16 is on 2.3V, though still running. DM42 on the other hand started glitching as the battery wont from 3.0V to 2.7V during screen refresh. This is after 6 months of light use (DM16 used more). DM16 is on version V29, DM42 was on DMCP 3.18 and PGM 3.15, recently upgraded to 3.20 and 3.16 repectively.