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.
A sine curve goes off to infinity, or at least the end of the blackboard. -- Prof. Steiner