Working in technology can be a boggling mixture of infinite creative power and utterly random limitations that there is no sane way to avoid. Ask me my opinion halfway through attempting to create the perfect responsive email campaign for Outlook, and I will have a very loud, very explicit opinion on the matter. On the whole, though, I like this state of affairs. It introduces and enforces different kinds of problem solving and solutions that keep me on my toes.
To Support is Proprietary
The catalyst for this, is, actually, said Outlook template creation. It's one of those industry standards that results in baldness due to hair tearing, and then an ongoing belief that, surely, it couldn't have been as bad as you remember it. We're all prone to a bit of exaggeration on occasion. Then you have to do it again, and you realize it's still that bad.
Case in point: Outlook 2007, 2010, and 2013 all support a whopping quarter of the CSS that their web counter-part Outlook.com do. Unsupported tags include the exotic:
Max / Min Width
We largely have the fact that Outlook's engine is actually Microsoft Word, rather than anything remotely web-friendly, for this war-crime on development. While my slogan is "Perfection Through Simplicity", this kind of forced simplification can rapidly result in horrible coding practices and spaghetti code. Often, a designer is expected to create a fully functional modern UI, regardless of the fact that their toolbox now consists of only tables from the mid-90's.
What often pops out of the oven at the end is a migraine for the designer, and an email that looks moderately close to the business-driven requirements. Beneath the hood, however, is a veritable nightmare of hacks, shoestrings, and chewing gum. I am torn between awe and terror at the succinct solution of using VML (a MS proprietary language, obsolete 2 years ago) to make background images remotely 'a thing' in modern Outlook mail: Backgrounds.cm
Outside the Cardboard Software Box
So what good can possibly come from ridiculous exercises like this? Flexibility. Creative imagination. Also, a sprinkling of communication practice as you explain, in your kindest voice, why the requirements of the project might have to change, over your dead body. If you are able to adapt and create a satisfying solution with arbitrary limitations placed on you, then genuine simplicity in a fully capable solution will be a dream come true!
When you're forced to remove yourself from your comfortable bubble, you quickly learn a lot of new things. Perspective can be a wonderful teacher. You'll often learn:
A far better and less complex method of doing something fairly common in your workflow.
Why using some tools or code is preferable to others.
Elementary skills of design, UX, and UI, focused on working with a limited palette.
What elements of your design and development repertoire can be shifted to progressive enhancement.
What a day trip to proprietary software hell looks like.
Have you encountered any particularly stand-out limitations due to software or development environment? They become increasingly regular as you move up the scale towards enterprise-size solutions, but can be found nearly anywhere in the wild.