Okay, firstly, there are effectively two ways that I tend to program, which can loosely be categorised into:
The first one is probably harder, because you need a broader knowledge of how to do what you want to do. The second is easier, because you can fiddle with parameters without necessarily understanding what they do - although you can get in a tangle this way if you haven't got a clue what you are doing!
You can start from scratch, with an initialised sound, or edit existing voices - both have their advantages. Editing existing voices will probably result in better sounds initially because they sounded good in the beginning! It is also a good way to find out how certain things are done, and if the sound is close to one you are trying to get, it can be quicker to achieve the desired results. Starting from scratch is probably harder to get good sounds, but is more liberating and rewarding, as the resulting noise is purely your own!