I have programmed my own MX-3000, but I did go through a URC programming class (and I was also briefly training other installers how to program this remote). It's not impossible to get this remote up and running to run basic macros and control a system. The complexity comes in when you start to introduce variables and other advanced techniques to get the most out of the remote. If you're going to spend the money for an MX-3000, then you should get the most out of it. Otherwise, you can stick with a Pronto (of which I have owned two in the past).
My MX-3000 is the best remote I have ever owned. However, I spent many, many hours perfecting my program so that it would give me a near-Crestron level of performance. I have 16 lighting scenes programmed in, the ability to control three different DVD players (including selecting DVDs by pressing the correct cover art for my 400-disc changer), 2 different DVRs, a receiver, projector, motorized curtains, an LD player (yes, I still have one), an HDMI switcher, etc.
To give you an idea of the complexity that the MX-3000 is capable of, to watch a DVD from my changer, I press the "Watch a DVD" button on my home screen. This button turns on the correct equipment, selects the correct inputs, sets the lighting to a "screen highlight" scene, and turns on my star ceiling panels. The next step is to pick the correct movie by selecting its cover art. Once I do that, a second DVD player begins to play a pre-movie custom trailer, the curtains in front of my screen open, and my lights do a slow dim that takes a full minute to complete during the custom intro. When the intro is over, my projector and receiver immediately switch inputs over to my DVD changer, and can then begin controlling my DVD player. This is all accomplished by precisely programmed delays and foolproof macros that ensure every step in the process is bulletproof. Somewhere around 70 choreographed commands/steps are executed by hitting only 2 buttons on the remote.
I could never do what I'm doing with a pronto or Harmony. If you're willing to put in the time (or pay someone to put in the time), then it's the way to go. Otherwise, you can settle for a less complex program that will still get the job done (but won't help you get the most out of the remote you have invested in).