Archive
Slice By Slice Over Layer By Layer
Assume that your team was tasked with developing a large software system in any application domain of your choice. Also, assume that in order to manage the functional complexity of the system, your team iteratively applied the “separation of concerns” heuristic during the design process and settled on a cleanly layered system as such:
So, how are you gonna manifest your elegant paper design as a working system running on real, tangible hardware? Should you build it from the bottom up like you make a cake, one layer at a time?
Or, should you build it like you eat a cake, one slice at a time?
The problem with growing the system layer-by-layer is that you can end up developing functionality in a lower layer that may not ever be needed in the higher layers (an error of commission). You may also miss coding up some lower layer functionality that is indeed required by higher layers because you didn’t know it was needed during the upfront design phase (an error of omission). By employing the incremental slice-by-slice method, you’ll mitigate these commission/omission errors and you’ll have a partially working system at the end of each development step – instead of waiting until layers 1 and 2 are solid enough to start adding layer 3 domain functionality into the mix.
In the context of organizational growth, Russell Ackoff once stated something like: “it is better to grow horizontally than vertically“. Applying Russ’s wisdom to the growth of a large software system:
It’s better to grow a software system horizontally, one slice at a time, than vertically, one layer at a time.
The above quote is not some profound, original, BD00 quote. It’s been stated over and over again by multitudes of smart people over the years. BD00 just put his own spin on it.
Not So Nice And Tidy
Assume we have a valuable, revenue-critical software system in operation. The figure below shows one nice and tidy, powerpoint-worthy way to model the system; as a static, enumerated set of executables and libraries.
Given the model above, we can express the size of the system as:
Now, say we run a tool on the code base and it spits out a system size of 200K “somethings” (lines of code, function points, loops, branches, etc).
What does this 200K number of “somethings” absolutely tell us about the non-functional qualities of the system? It tells us absolutely nothing. All we know at the moment is that the system is operating and supporting the critical, revenue generating processes of our borg. Even relatively speaking, when we compare our 200K “somethings” system against a 100K “somethings” system, it still doesn’t tell us squat about the qualities of our system.
So, what’s missing here? One missing link is that our nice and tidy enumerations view and equation don’t tell us nuttin’ about what Russ Ackoff calls “the product of the interactions of the parts” (e.g Lib-to-Lib, Exe-Exe). To remedy the situation, let’s update our nice and tidy model with the part-to-part associations that enable our heap of individual parts to behave as a system:
Our updated model is still nice and tidy, but just not as nice and tidy as before. But wait! We are still missing something important. We’re missing a visual cue of our system’s interactions with “other” systems external to us; you know, “them”. The “them” we blame when something goes wrong during operation with the supra-system containing us and them.
Our updated model is once again still nice and tidy, but just not as nice and tidy as before. Next, let’s take a single snapshot of the flow of (red) “blood” in our system at a given point of time:
Finally, if we super-impose the astronomic number of all possible blood flow snapshots onto one diagram, we get:
D’oh! We’re not so nice and tidy anymore. Time for some heroic debugging on the bleeding mess. Is there a doctor in da house?
Who’s Left Standing?
First W. E. Deming, then Russell Ackoff, and now Chris Argyris. They’re all gone. Bummer.
When I first encountered the work of each of these three original thinkers, it blew me away. Their insights on organizational and management behaviors were like a breath of fresh air compared to the C-suite pandering, jargonized junk that business schools spew and pop business icons like Tom Peters promulgate (no offense Tom, I like some of your ideas).
Managers who are skilled communicators may also be good at covering up real problems – Chris Argyris
AFAIK, there’s nobody like this trio of intellectual giants left standing (maybe they’ve won?). There are, however, a handful of second string, accessible, truth-tellers out there. Henry Mintzberg, Sam Culbert, and Steve Denning come to mind. Who can you add to this list?
Leaders, Followers, Standers
Everybody knows what leaders and followers are, but what about “standers“? A stander is not a slacker. It’s a capable person who is content to stay within his/her comfort zone doing the same thing over and over again.
BD00 thinks that all people are capable and they innately want to “move” forward either as a leader or a follower. It’s a social system’s culture that molds “standers” out of capable people.
In cultures where mistakes of commission are penalized and mistakes of omission go undetected and unacknowledged, the optimum strategy, courtesy of Russell Ackoff, is simply to do as little as needed to elude ex-communication. It’s stagnation city with a burgeoning population of standers; sad for the people and sad for the org.
The Real Customer
In “12 ‘best practices’ IT should avoid at all costs”, InfoWorld‘s Bob Lewis asserts:
I enjoy Bob’s books and columns, but I have to side with the likes of Russell Ackoff and Vineet Nayar on this one. All of an org’s “enabling” functions: HR, QA, Finance, Purchasing, IT, etc; should indeed serve the direct revenue-generating business functions and treat them as paying customers. Otherwise, the natural tendency of these groups in hierarchical orgs is to turn into obstacle-inserting, unresponsive, monopolistic dictatorships. Of course, in the “real world” this rarely happens because rational adults are in charge – and Bob is right. What is your opinion?
Monopolistic Providers
In search of economies of scale, centrally planned and controlled economies in nations and corporations tend to create monopolistic providers of goods and services. For example, in corporations, accounting, personnel, and R&D departments are usually deliberately organized as subsidized monopolies. They are subsidized in the sense that the users of their products or services do not pay for them directly; the supplying units are supported financially by funds that are allocated to them from above. The pool from which these funds are drawn is filled by a “tax” allocated from above to the units served. Monopolistic units that are subsidized are generally insensitive and unresponsive to the users of their services, but they are sensitive and responsive to the desires of the higher-level units that subsidize them. These higher level units are even more removed from the units served than the serving units. As a result, they are often unaware of, or unresponsive to, the needs and desires of the internal users of monopolistically provided goods and services. – Russell Ackoff (Ackoff’s Best: His Classic Writings on Management)
OK, time to practice my “bent” UML modeling skills and test your understanding with the class and sequence diagram pair below. The class diagram provides a structural view of a fictional Ackoffian system. The sequence diagram steps through an amalgam of behaviors in a world where monopolies rule. Any questions, comments, critiques, accolades, WTFs?
Espoused Vs. In-Use
Although we say we value openness, honesty, integrity, respect, and caring, we act in ways that undercut these values. For example, rather than being open and honest, we say one thing in public and another in private—and pretend that this is the rational thing to do. We then deny we are doing this and cover up our denial. – Chris Argyris
Guys like Chris Argyris, Russell Ackoff, and W. E. Deming have been virtually ignored over the years by the guild of professional management because of their in your face style. The potentates in the head shed don’t want to hear that they and their hand picked superstars are the main forces holding their borgs in the dark ages while the 2nd law of thermodynamics relentlessly chips away at the cozy environment that envelopes their (not-so) firm.
Chris Argyris’s theory of behavior in an organizational setting is based on two conflicting mental models of action:
- Model I: The objectives of this theory of action are to: (1) be in unilateral control; (2) win and do not lose; (3) suppress negative feelings; and (4) behave rationally.
- Model II:Â The objectives of this theory of action are to: (1) seek valid (testable) information; (2) create informed choice; and (3) monitor vigilantly to detect and correct error.
The purpose of Model I is to protect and defend the fabricated “self” against fundamental, disruptive change. The patterns of behavior invoked by model I are used by people to protect themselves against threats to their self-esteem and confidence and to protect groups, intergroups, and organizations to which they belong against fundamental, disruptive change. D’oh!
From over 10,000 empirical cases collected over decades of study, Mr. Argyris has discovered that most people (at all levels in an org) espouse Model II guidance while their daily theory in-use is driven by Model I. The tool he uses to expose this espoused vs. in-use model discrepancy is the left-hand-column/right-hand-column method, which goes something like this:
- In a sentence or two identify a problem that you believe is crucial and that you would like to solve in more productive ways than you have hitherto been able to produce.
- Assume that you are free to interact with the individuals involved in the problem in ways that you believe are necessary if progress is to be made. What would you say or do with the individuals involved in ways that you believe would begin to lead to progress. In the right hand column write what you said (or would say if the session is in the future). Write the conversation in the form of a play.
- In the left-hand column write whatever feelings and thoughts you had while you were speaking that you did not express. You do not have to explain why you did not make the feelings and thoughts public.
What follows is an example case titled “Submerging The Primary Issue” from Chris’s book, “Organizational Traps:Leadership, Culture, Organizational Design“. A superior (S) wrote it in regard to his relationship with a subordinate (O) regarding O’s performance.
The primary issue in the superior’s mind, never directly spoken in the dialog, is his perception that the subordinate lacks a sense of responsibility. The issue that *did* end up being discussed was a technical one. (I’d love to see the same case as written by the subordinate. I’d also like to see the case re-written by the superior in a non-supervised environment.)
When Mr. Argyris pointed out the discrepancy between the left and right side themes to the case writer and 1000s of other study participants, they said they didn’t speak their true thoughts out of a concern for others. They did not want to embarrass or make others defensive. Their intention was to show respect and caring.
So, are the reasons given for speaking one way while thinking a different way legitimately altruistic, or are they simply camouflage for the desire to maintain unilateral control and “win“? The evidence Chris Argyris has amassed over the years indicates the latter. But hey, those are traits that lead to the upper echelons in corpoland, no?
Dispersion Of Ownership
Much as God was replaced by professional clergy who claim to “know” the will of God, the dispersion of ownership in a company (via the birth of the stock market) birthed the professional institution of management who claim to know the will of the owners.
If the will of absentee owners is solely to extract maximal profit from the org, then management indeed knows the will of the owners. And since the workery can no longer communicate directly with the diluted and fragmented owner heap, their concerns and ideas are conveniently out of sight and out of mind; reinforcing the “maximal profit extraction” mindset.
Relying on the fairness of managers to balance profit with worker well-being is not much different than relying on the same behavior from a heap of unconnected, faceless owners because neither group is the original creator of the org.
Note: This post is the result of contemplation and reflection on the Russell Ackoff paper titled: “A SYSTEMIC VIEW OF TRANSFORMATIONAL LEADERSHIP“. It’s yet another unoriginal BD00 meta-post. As usual, I sketched up a picture and pasted some bogus words around it. You can probably come up with a better supporting story yourself. Give it a try.
Idealized Design
Russell Ackoff describes the process of “Idealized Design” as follows:
In this process those who formulate the vision begin by assuming that the system being redesigned was completely destroyed last night, but its environment remains exactly as it was. Then they try to design that system with which they would replace the existing system right now if they were free to replace it with any system they wanted.
The basis for this process lies in the answer to two questions. First, if one does not know what one would do if one could do whatever one wanted without constraint, how can one possibly know what to do when there are constraints? Second, if one does not know what one wants right now how can one possibly know what they will want in the future?
An idealized redesign is subject to two constraints and one design principle: technological feasibility and operational viability, and it is required to be able to learn and adapt rapidly and effectively.
So, are you ready to blow up your system? Nah, tis better to keep the unfathomable, inefficient, ineffective beast (under continuous assault from the second law of thermo) alive and unwell. It’s easier and less risky and requires no work. And hey, we can still have fun complaining about it.
Roster Of System Thinkers
Someone on Twitter, I can’t remember who, tipped me off to a terrific “Complexity Thinking” Slideshare deck. I felt the need to snip out this slide of system thinkers and complexity researchers to share with you:
So far, I’ve read some of the work of Ackoff (my fave), Deming, Drucker, Meadows, Senge, Weinberg, and Jackson. In addition, I’ve studied the work of “fringe” system thinkers Rudy Starkermann, John Warfield, Bill Livingston, Ludwig von Bertalanffy, Thorstein Veblen, Ross Ashby, Stafford Beer, and Norby Wiener.
I look forward to discovering what the others on the roster have to say.