Tuesday, June 25, 2013

Flexibility. It's a matter of perspective.

In my many years of collecting requirements for content management systems, I can't think of a single project where the word "flexibility" wasn't on the initial list of requirements. This "requirement" seems harmless enough. What could be wrong with the system being flexible? Flexibility seems like the perfect thing to ask for when you don't really know what you want. But it's a trap. Here is why.

Everyone who hears the word "flexibility" takes it to mean "being able to do whatever I want with the platform." But what that means depends on who you are and what you are personally capable of. For example:


  • If you are a content creator, "flexibility" may conjure up an image of MS PowerPoint where you can make text boxes and pictures wherever you want on the page.
  • If you are a web designer, you might imagine being able to edit pages as if they were static HTML where you could write whatever markup, CSS, or Javascript that you wanted. And every page could be a unique creation.
  • If you are a print designer, you might picture editing one big image in Photoshop where you have precise control over every pixel and don't have to worry about annoyances like browser support or different displays.
  • If you are developer might think about structured data that is re-usable and can be controlled by display template logic.

The interesting thing is that these expectations are usually mutually exclusive. The content producer's unstructured PowerPoint document is garbage to a template developer who whats to make global changes or adapt the display of the content for different contexts and audiences. The structured content model and display templates are inflexible to the content producer who doesn't know HTML and doesn't have access to develop and test code. An image produced by a graphic designer is a black box to anyone who doesn't have the source file and the right software to edit it.

And this is why everyone consider's their current CMS inflexible and tries to prioritize flexibility the next time around. But the process just repeats itself again and again.

The first step to breaking out of this cycle is to strike the term "flexibility" from the conversation entirely. Every time someone says the word, he needs to put a dollar in a jar. You can't move forward together if your interpretations of a word are diverging. After that, start talking about "balance of control" as in who controls what on the page. Stake out your territories. This doesn't have to be a land grab. Have mature discussions about control vs. responsibility and the ongoing maintenance implications of these decisions. Educate each other about your different perspectives. Talk through scenarios of what might need to change and who should need to participate in that change.

Most importantly, you should avoid thinking in absolutes like "flexible" or "inflexible." When you talk about balance of control, you are more likely to have productive discussions about moving boundaries rather scraping the whole system because it is "inflexible."