Here's a patch designer's take on the topic, and is the most practical advice I've found on the web:
http://www.tweakheadz.com/programmer.html
IMO, though, anything more complicated than a 303 sound calls for use of a sampler. Synthesizer GUIs are simply overloaded with controls, so I'm of the opinion that if you make friends with your sampler you can quite happily use synths as sample fodder and ignore their interfaces.

To explain my thinking, the 303 and it's clones are a special case because it's quite possibly the only synth that sees so much realtime automation. If you're not automating your synth, it can be sampled after you've made the patch. If you're automating something more complex, hats off to you - I find automating a fully featured ADSR synth intimidating. :paranoid: