Archive
The Ultimate External Controller
Control theory postulates that in order to make effective goal-seeking decisions, one of the requirements imposed on an external controller, human or otherwise, is that it contain an accurate model of the “real” process to be controlled.
When an external controller’s process model matches the “real” process taking place, effective control may be, but isn’t guaranteed to be, achieved. When there’s a mismatch, all hope is lost.
The ultimate external controller is no external controller. It’s intimately integrated within, and distributed across, the process itself.
House Of Cards
Invisible, Thus Irrelevant
A system that has a sound architecture is one that has conceptual integrity, and as (Fred) Brooks firmly states, “conceptual integrity is the most important consideration in system design”. In some ways, the architecture of a system is largely irrelevant to its end users. However, having a clean internal structure is essential to constructing a system that is understandable, can be extended and reorganized, and is maintainable and testable.
The above paragraph was taken from Booch et al’s delightful “Object-Oriented Analysis And Design With Applications“. BD00’s version of the bolded sentence is:
In some ways, the architecture of a system is largely irrelevant to its end users, its developers, and all levels of management in the development organization.
If the architecture is invisible because of the lack of a lightweight, widely circulated, communicated, and understood, set of living artifacts, then it can’t be relevant to any type of stakeholder – even a developer. As the saying goes: “out of site, out of mind“.
Despite the long term business importance of understandability, extendability, reorganizability, maintainability, and testability, many revenue generating product architectures are indeed invisible – unlike short term schedulability and budgetability; which are always highly visible.
Borgbot
I’m not sure you should worry much about the effect your behavior has on the organization overall, because there’s lots of data that suggests the organization doesn’t care much about you. – Jeffrey Pfeffer
That quote by Stanford University’s Jeffrey Pfeffer can be found in The Purpose of Power. From one systems point of view, a corpricracy as a whole is an inflexible and conscienceless borgbot with a single purpose – to make as much money it can, in any way it can. If the borgbot needs to chop off its nose or sell its mother into slavery or bankrupt millions of people outside its walls to fulfill its mission, it will.
The fascinating thing about borgbot behavior is that it ingeniously guilts its members into compliance (“aren’t you a team player?“, “if you don’t do it, you’re selfish and you’ll hurt the company“, “how dare you question management decisions“, “you’re a disloyal ingrate for speaking out“, yada-yada-yada) and rationalizes any unethical behavior away without blinking an eye.
Like most of us, Pfeffer wishes large-scale organizations were paragons of meritocracy where competence and influence are always perfectly correlated, but he knows that’s not the case – Gary Hamel
Notice the usage of the term “large-scale organizations” in Mr. Hamel’s quote. It implies that there’s hope – in small scale organizations. It makes self-righteous BD00 wonder why borgbots are obsessed with growth. Oh, I almost forgot; to make as much money as they can in any way they can.
Unjustifiable Precision
In “Object-Oriented Analysis and Design with Applications“, Grady Booch bluntly states:
Unjustifiable precision—in requirements or plans—has proven to be a substantial yet subtle recurring obstacle to success. Most of the time, early precision is just plain dishonest and serves to provide a façade for more progress of more quality than actually exists. – Grady Booch
Pretty harsh, but wise, words, no? So, why do managers, directors, and executives repeatedly demand micro-granularized schedules and commitments from knowledge workers from day one throughout the life of a project?
- Because “that’s the way it has always been done“
- To maintain the illusion of control
- To flex their muscles and “hold people accountable” each time a micro-commitment is broken
Codan The Barbarian
In the Indigo release of Eclipse‘s C++ Development Tools (CDT) plugin, the Codan static code analyzer runs in real time as you type in your code. As shown below, you can customize the rule set that Codan enforces via the “Preferences/C++/Code Analysis” dialog window. (My fave is the “ambiguous problem” entry.)
The figure below shows a few examples of Codan in action. While typing in code, a gold (warning) or red (error) bug icon appears adjacent to the line number of the crappy code you write.
Some of Codan’s warnings and errors are also detected by good compilers, but it’s kind of neat that you can discover and correct your defects before running the compiler/linker. This feature is a boon for large programs that take a while to compile and link.
As a long time developer, I’m thrilled to death to have open source tools like Eclipse available to dolts like BD00. I remember the old days when there were not many commercial tools available, yet alone high caliber, open source tool suites like Eclipse.
Hindsight Bias
In Nancy Leveson‘s forthcoming book, “Engineering A Safer World“, she provides the following attributes of Hindsight Bias (a.k.a “hindsight is always 20-20“):
So THAT’s why Bulldozer00 is always 100% right!
I find that the text in the blue ellipse is very insightful. If one switches his/her analysis slant from “what they did wrong” to “why it made sense at the time“, one’s emotional reaction will soften toward “those who are responsible for the mess“.
BD00’s attitude toward FUBAR situations, which used to be anger and frustration, has changed to wonder and curiosity. At some serendipitous point along the line, BD00 finally came to the realization that since borgs exhibit emergent behavior that can’t be traced back to a single source, tis better to laugh than cry.
Organizations often behave worse than any member would – Fred Brooks
The Null Set
Few would argue that Martin Luther King and Albert Einstein didn’t change the world for the betterment of the human race. These two stunningly similar quotes unveil one of the keys to their hard won success:
Many people fear nothing more terribly than to take a position which stands out sharply and clearly from prevailing opinion. – Martin Luther King
Few people are capable of expressing with equanimity opinions which differ from the prejudices of their social environment. Most people are even incapable of forming such opinions. – Albert Einstein
Something tells me that this is an ironic twist on the cliche that “great minds think alike“. Great minds think alike, but so do mediocre minds. It’s just that on matters of importance, great minds don’t think like mediocre minds. D’oh!
Different Goals And Unfair Comparisons
At the behest of a work colleague, I revisited the Java programming language. I re-read James Gosling‘s 1995 white paper that introduced the language and I perused several Java-related wikipedia articles. Using those sources and Bjarne Stroustrup‘s “Evolving a language in and for the real world: C++ 1991-2006” paper, I developed the following side by side “design goals” lists:
In spite of these radically different design goals, people (including myself) continue to insist on comparing the languages in passionately irrational ways. If both language designs were driven by a common set of goals, then objectively valid comparisons could be made.
Java was intentionally designed from a blank sheet; unfettered from the ground up. Au contraire, C++ was intentionally designed by extending C and attempting to fix it’s short comings without breaking millions of lines of deployed code. It’s like comparing apples to oranges, dontcha think?
Executive Proposal
The lowly esteemed and dishonorable BD00 proposes to executives everywhere:
Whenever you change your org, supply the minions with TWO complementary org charts: the usual (yawn) who-reports-to-whom chart and a system operational structure chart.
Creating the first one is an easy task; the second one, not-so. That’s why you’ve never seen one.
The funny thing is, every borg has a “System Operational Structure” chart regardless of whether it’s known or (most likely) not. Reshuffling the “Who-Reports-To-Whom” chart without knowing and consulting with the “Systems Operational Structure” chart doesn’t improve operations (unless the reshuffler gets lucky), it justs changes who to blame when sub par performance persists after the latest and greatest reshuffle.












