Frustrating Paradox: Simple and Difficult
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 simple to describe, it is
difficult to create.
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
.
Faire de la bonne cuisine demande un
certain temps.
Si on vous fait attendre, c'est pour mieux vous servir, et vous
plaire.