I think this is one of those fundamental concepts that, once it is pointed out to me, become self-evident and obvious (ie. why didn’t I think of that). I’m curious if other people agree …
When something is difficult to describe, it is simple to create.
I’ve seen these principles illustrated in different areas of business and technology; understanding this relationship can relieve frustration and provide hints on where to focus your efforts when working on a project.
Simple is Difficult
Simple Idea: My favorite example is the phenomenon of “smart part numbers“, where organizations find it convenient to encode attributes about a product in the item / SKU number. This makes it easy for people to read labels and reports, find parts in the warehouse, and work with line items on an order. Unfortunately, implementing systems & processes that rely on “smart part numbers” can be problematic; reports and queries rely on multiple pieces of information embedded in a single field / column; SQL queries are tough to write, and reports & other programs become notoriously difficult to maintain.
“Lean” Process: Somewhat related is the phenomenon where business processes are rarely documented. Everyone in the group knows how to start with the Order, through Make-to-Ship, and back to the Cash. The problem usually hits when we experience turnover or some other staff change; our well-oiled machine starts to slip up, and performance gaps appear as the new team member doesn’t fully understand know or understand everything that is required / assumed of them.
User Friendly: I’ve written before about documentation that insists on screen prints for every step of a process. I can empathize with the end-user on this; this level of hand-holding is extremely helpful, because it makes it easier to learn a new system or technique. Unfortunately, documentation at this depth is expensive and time-consuming to create & maintain – and is typically done best by folks whose primary job is documentation / communication (ie. not the folks who are asked to create this stuff).
Simple to Use; “Elegant”: There is a related demand for software and websites that are easy to use, truly user-friendly and possessing intuitively obvious interfaces that everyone can just run with. These don’t require complicated manuals, but they do require an awful lot of skillful programming to deliver such use and simplicity. I am working on a simple, small Web application (more on that later …), where I’m trying to develop something that will elegantly solve a specific problem, yet be truly intuitive and obvious (dare I say fun?) to use. The challenge, however, is cross-browser compatibility; in the past few evenings, I’ve discovered some amazingly intricate problems with how CSS and PNG works with the Microsoft browsers – and have had to go to extraordinary lengths to make the website look the same on Firefox, Safari and Internet Explorer.
Difficult is Simple
The reverse argument can be behavioral and cynical; “time is money” drives some to oversimplify. However, “agile” design and development can be a practical tool when trying to maximize sustainable output.
Difficult Idea: I think the time-and attention-starved workday contributes to an unfortunate amount of oversimplification. If there is a complex project or difficult issue to deal with, get ready for the unending stream of peers, partners, subordinates, and “higher-ups” asking about status and root cause. Unfortunately, these people have limited time available to waste on active listening and understanding; typically, they will demand a short summary. They just want to know that the problem is in hand and getting handled.
Rapid Development: McConnell notwithstanding, some teams use “rapid development” as a convenient shorthand for “quick-and-dirty programming that relies on hard coding, flimsy structure, and a lack of testing”.
- With some extra work, reusable logic can be modularized, interfaces can be abstracted, and simplistic, utility programs can be replaced with flexible, fault tolerant modules that can be reused and extended. This particular brand of good cooking takes time, and a bit of design foresight.
Hard to Use; Hard to Understand: Of course, if you focus on Time to Completion, driving to get stuff done, focusing on deadlines over quality, it’s not surprising that systems and processes are hard to use, and communication pieces are difficult to understand. As an old Army officer once told me, “if you want it bad, you get it bad”.
IT’s Challenge – Fighting the Good Fight
Of course, the “good cooking takes time” argument typically doesn’t go over well with most businesses. The pressure on IT, really any business area, is to learn the local tools and techniques, and leverage work that has been already done. In addition, there has to be some points awarded for systems that don’t require help desk support, processes that don’t require handholding, and follow-up training in the weeks after go live.
Communication with management and the business is just as critical, just as difficult and just as rewarding when you get it right. Your counterparts in the business aren’t dense – they just need things explained glibly yet completely. Master this, and Le monde est votre huître.
Si on vous fait attendre, c’est pour mieux vous servir, et vous plaire.