I use it constantly. My company's products are flashed using an sd card and to create it I dd into and from the sd card several times a week
dd conv=sparseWhy does it matter? Use `bs=$((4 * 1024 * 1024))`. It'll work perfectly for any imaginable block size.
My issue with dd is that it's possible to write corrupted data with some weird flags which I did once. Something with conv=sync I believe which does unexpected things. But if you're not trying to be too smart, dd works fine.