As software engineers or architects, we work hard to build products and solutions that meet or even anticipate the needs of our target markets. As software engineers or architects, most of us also have, for better or worse, minds of the somewhat logical kind, of the kind that can scan through pages of cryptic C++ code and identify flaws in algorithms, hunt down optimistic but groundless assumptions, and extirpate performance bottlenecks and security risks. When we reach the limits of what those minds can handle directly, we don’t hesitate for a second; we know just what to do: we pull out the profiling and debugging tools it will take to track down and eliminate the more elusive issues.
But then, here’s a question for those minds, logical or not: why can’t we seem to make use of those same deductive skills when it comes to grasping a shared, solid, and essential understanding of those market needs, and of the technological challenges in meeting them? When it’s time to devise the all-important, the critical strategies we build our products and bet our careers on, why do we tolerate so much hand waiving, so many approximations, and put up with so blatantly missing logical steps?
Of course, complexity is an obvious suspect. The tasks of exhaustively analyzing customer demographics and problems, of tying these to market sizes and growth rates, and then of figuring out the best ways to address the most valuable needs using technologies available to us appears simply daunting.
Surprisingly enough though, complexity doesn’t seem to be discouraging us, or even slowing us down: thousands of product managers, marketing gurus and strategists (not to mention the ever-fascinating evangelists) are busy slicing and dicing and making sense of all this. Of those, the mediocre are ineffectual, the worst so myopic they will drive any project into the ground, and we view the best as mythical, visionary heroes, whose prophecies we accept to follow somewhat blindly, because even they cannot quite break their views down into a complete, logical, contained analysis.
Now, don’t get me wrong: I love good story telling. In fact, I firmly believe that eloquence and oratory skills are a key to success in our business world. However, do they have to substitute for sound thinking? If the complexities we face are such that our brains cannot process them entirely, isn’t it time we give ourselves the tools we really need?
As the saying goes, a picture is worth a thousand words. Yet every meeting you sit in (and the more strategic the crowd, the more acute the phenomenon is) quickly turns into an exercise in rhetoric with little attention to the white board or even to the seemingly boring notion of defining the terms we use as unequivocally as possible.
Similarly, while we are all aware of the power of diagrams to convey meaning efficiently, we spend a large proportion of our time writing and storing email messages away in fast-aging mailboxes. These messages (often in the form of streams of consciousness that fit so well the monologue model of weblogs) lack the structure and the concept definitions that would allow us to turn them into actual exchanges building shared knowledge.
I see a number of possible improvements we can make, leveraging several technologies still under-utilized today: of course, the wiki concepts (if not their typically raw look-and-feel) constitute one of the founding blocks of such a potential tool.
In addition, an advanced notification mechanism, traversing links or better yet reverse-links, is required to let a group know about changes in a particular area of the knowledge base and their possible effects on neighboring notions.
We need this reverse-link traversal paradigm in order to capture causality in the system and give it a way to evaluate the implications of change. This is where we can really start tapping into our CPUs to supplement our brains in order to keep track of logical connections.
In addition, as we start characterizing links (in order to designate various causal relationships between concepts), we need to be more systematic about these concepts themselves. Consequently, the semantic web technologies (in particular the taxonomy aspects) are a third critical element of such a knowledge building tool, as they let us capture meaning in a structured fashion intelligible not only to the human reader but to software.
Finally, adequate representation is essential, as it is the key to efficiently communicating concepts.
None of these technologies has been widely adopted yet, but I think spending energy building the tool that lets us bridge them and systematically communicate using this combination will be a better investment of our effort and time, and will tremendously speed our work when it comes to establishing and maintaining strategies.