I agree that ALSA sucks (for many reasons, the hideous API probably being the most important one).
But, as an application developer, you simply shouldn't use ALSA directly, it's not worth the hassle. If your app does any "serious" audio work, use JACK. Period.
If you're aiming at the average desktop user, use another high-level audio API. PulseAudio appears to be a good choice.
Build a system that even a fool can use and only a fool will want to use it.