Archive
Close Spatial Proximity
Even on software development projects with agreed-to coding rules, it’s hard to (and often painful to all parties) “enforce” the rules. This is especially true if the rules cover superficial items like indenting, brace alignment, comment frequency/formatting, variable/method name letter capitalization/underscoring. IMHO, programmers are smart enough to not get obstructed from doing their jobs when trivial, finely grained rules like those are violated. It (rightly) pisses them off if they are forced to waste time on minutiae dictated by software “leads” that don’t write any code and (especially) former programmers who’ve been promoted to bureaucratic stooges.
Take the example below. The segment on the right reflects (almost) correct conformance to the commenting rule “every line in a class declaration shall be prefaced with one or more comment lines”. A stricter version of the rule may be “every line in a class declaration shall be prefaced with one or more Doxygenated comment lines”.
Obviously, the code on the left violates the example commenting rule – but is it less understandable and maintainable than the code on the right? The result of diligently applying the “rule” can be interpreted as fragmenting/dispersing the code and rendering it less understandable than the sparser commented code on the left. Personally, I like to see necessarily cohesive code lines in close spatial proximity to each other. It’s simply easier for me to understand the local picture and the essence of what makes the code cohesive.
Even if you insert an automated tool into your process that explicitly nags about coding rule violations, forcing a programmer to conform to standards that he/she thinks are a waste of time can cause the counterproductive results of subversive, passive-aggressive behavior to appear in other, more important, areas of the project. So, if you’re a software lead crafting some coding rules to dump on your “team”, beware of the level of granularity that you specify your coding rules. Better yet, don’t call them rules. Call them guidelines to show that you respect and trust your team mates.
If you’re a software lead that doesn’t write code anymore because it’s “beneath” you or a bureaucrat who doesn’t write code but who does write corpo level coding rules, this post probably went right over your head.
Note: For an example of a minimal set of C++ coding guidelines (except in rare cases, I don’t like to use the word “rule”) that I personally try to stick to, check this post out: project-specific coding guidelines.
Positive Or Negative, Meaning Or No Meaning?
In Claude Shannon‘s book, “The Mathematical Theory Of Communication“, Mr. Shannon positively correlates information with entropy:
Information = f(Entropy)
When I read that several years ago, it was unsettling. Even though I’m a layman, it didn’t make sense. After all, doesn’t information represent order and entropy represent its opposite, chaos? Shouldn’t a minus sign connect the two? Norbert Wiener, whom Claude bounced ideas off of (and vice-versa) thought it did. His entropy-information connection included the minus sign.
In addition, Shannon’s theory stripped “meaning”, which is person-specific and unmodel-able in scrutable equations, from information. He treats information as a string of bland ‘0’ and ‘1’ bits that get transported from one location to another via a matched, but insentient, transmitter-receiver pair. Wiener kept the “meaning” in information and he kept his feedback loop-centric equations analog. This enabled his cybernetic theory to remain applicable to both man and the machine and make assertions like: “those who can control the means of communication in a system will rule the roost“.
Like most of my posts, this one points nowhere. I just thought I’d share it because I think others might find the Shannon-Wiener differences/likenesses as interesting and mysterious as I do.
The Commencement Of Husbandry
The figure below was copied over from yesterday’s post. Derived from Joseph Tainter’s “The Collapse of Complex Societies”, it simply illustrates that as the complexity of a social organizational structure necessarily grows to support the group’s own growth and survival needs, the adaptability of the structure decreases. The flat and loosely coupled institutional structures originally created by the group’s elites (with the willing consent of the commoners) start hierarchically rising and coalescing into a rigid, gridlocked monolith incapable of change. At the unknown future point in time where an external unwanted disturbance exceeds the group’s ability to handle it with its existing complex problem solving structures and intellectual wizardry, the whole tower of Babel comes tumbling down since the monolith is incapable of the alternative – adapting to the disturbance via change. Poof!
According to Tainter, once the process has started, it is irreversible. But is it? Check out the figure below. In this example, the group leadership not only awakens to the dooms day scenario, it commences the process of husbandry to reverse the process by:
- Re-structuring (not just tinkering and rearranging the chairs) for increased adaptability – by simplifying.
- Scouring the system for, and delicately removing useless, appendix-like substructures.
- Discovering the pockets of fat that keep the system immobile and trimming them away.
- Loosening dependencies between substructures and streamlining the interactions between those substructures by jettisoning bogus processes and procedures.
- Installing effective, low lag time, internal feedback loops and external sensors that allow the system to keep moving forward and probing for harmful external disturbances.
If the execution of husbandry is boldly done right (and it’s a big IF for humongous institutions with a voracious appetite for resources), an effectively self-controlled and adaptable production system will emerge. Over time, and with sustained periodic acts of husbandry to reduce complexity, the system can prosper for the long haul as shown in the figure below.
The Last Remaining Method Of Simplification
In this blog post, “The Collapse of Complex Business Models”, uber-thinker Clay Shirky predicts the impending instantaneous implosion of many (all?) unfathomably complex business models that are currently thought by many to be unassailable. The cruxt of Clay’s compelling argument is based on eerily similar collapses of past complex cultures as told by Joseph Tainter in his aptly named book, The Collapse of Complex Societies.
Tainter’s thesis is that when society’s elite members add one layer of bureaucracy or demand one tribute too many, they end up extracting all the value from their environment it is possible to extract and then some. – Clay Shirky
Adding layer upon layer of bureaucracy (to disconnect themselves from the commoners, of course) and demanding “tributes” in the form of exotic titles, awards, astronomical salaries, and perks (to satisfy their egomania and bolster the false image that they “know what’s best for all“) pushes their elite system over the precipice.
In such systems, there is no way to make things a little bit simpler – the whole edifice becomes a huge, interlocking system not readily amenable to change. When the value of complexity turns negative, a society plagued by an inability to react remains as complex as ever, right up to the moment where it becomes suddenly and dramatically simpler, which is to say right up to the moment of collapse. Collapse is simply the last remaining method of simplification. – Clay Shirky
In this 5 minute video talk, “the current economy“, my favorite spiritual guru, Eckhart Tolle, trumps Clay by rising up one level of abstraction. Eckhart predicts the impending collapse of many of the societal structures that are ego based. Ego loves complexity. And how many large, man-made, socio-technical structures (a.k.a institutions) do you think are not ego based?
The problem is not the content, it’s the conditioned structure of the human mind – Eckhart Tolle
Knowledge, Understanding, And Wisdom
Like growth and development, I’d say that most people tend to equate knowledge with understanding. Until relatively recently, I did too.
Via memorization, akin to “copying and pasting“, a person can be loaded with knowledge but devoid of understanding. Application of knowledge without understanding in an intellectually challenging endeavor like programming can, and does, lead to future messes for others to clean up.
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. – Damian Conway
Wisdom, a close cousin of understanding, can also be orthogonal to knowledge. However, the gap between wisdom and understanding can be much greater than the gap ‘tween understanding and knowledge. Wisdom can be acquired over time, but profound wisdom only arrives on the wings of grace, unscheduled. How do I know this? I don’t. I just like to make stuff up.
Knowledge is knowing a tomato is a fruit; Wisdom is not putting it in a fruit salad. – Peter Kay
The rocket science financial dudes who literally engineered the global financial disaster have lots of knowledge and understanding in their area of “expertise”, but zero wisdom. Ditto, the eminently credentialed economic Nobel Laureates who championed the downfall of the LTCM hedge fund twelve, yes twelve, freakin’ years ago. It seems that their elegant equation set was devoid of any simple control variables that accounted for the risk of the Russian financial crisis that caused the fund to implode.
As long as people continue to unquestioningly and passively accept the word of narrowly focused knowledge experts with zero wisdom, the saying “history tends to repeats itself” won’t fade away, ever.
All I can say is, beware of geeks … bearing formulas. – Warren Buffet
D4P Has Been Hatched
Friend and long time mentor Bill Livingston has finished his latest book, “Design For Prevention” (D4P). I mildly helped Bill in his endeavor by providing feedback over the last year or so in the form of idiotic commentary, and mostly, typo exposure.
Bill, being a staunch promoter of SCRBF feedback and its natural power of convergence to excellence, continuously asked for feedback and contributory ideas throughout the book writing process. Being a blabbermouth and having great respect for the man because of the profound influence he’s had on my worldview for 20+ years, I truly wanted to contribute some ideas of substance. However, I struggled mightily to try and conjure up some worthy input because even though I understood the essence of this original work and it resonated deeply with me, I couldn’t quite form (and still can’t) a decent and coherent picture of the whole work in my mind.
D4P is a socio-technical process for designing a solution to a big hairy problem (in the face of powerful institutional resistance) that dissolves the problem without causing massive downstream stakeholder damage. Paradoxically, the book is a loosely connected, but also dense, artistic tapestry of seemingly unrelated topics and concepts such as:
- Alan Turing’s thesis of infallibility vs. intelligence
- Leveraging nature’s physical laws, with a special emphasis on suspending the 2nd law of thermodynamics and entropy growth
- W. Ross Ashby‘s cybernetic law of requisite variety
- Thorstein Veblen’s theory of the leisure class
- Nash Equilibriums in game playing
- Rudolf Starkermann‘s mathematical analysis of social group system behavior
Bill does a masterful and unprecedented job at connecting the dots. The book will set you back, uh, $250 beaners on Amazon.com, but wait….. there’s a reason for that astronomical price. He doesn’t really care if he sells it. He wants to give it away to people who are seriously interested in “Designing For Prevention”. Posers need not apply. If you’re intrigued and interested in trying to coerce Bill into sending you a copy, you can introduce yourself and make your case at vitalith “at” att “dot” net.
Update 12/29/12:
The D4P book is available for free download at designforprevention.com. The second edition is on its way shortly.
Supported By, Not Partitioned Among
“A design flows from a chief designer, supported by a design team, not partitioned among one.” – Fred Brooks
partitioning == silos == fragmented scopes of responsibility == it’s someone else’s job == uncontrolled increase in entropy == a mess == pissed off customers == pissed off managers == disengaged workers
“Who advocates … for the product itself—its conceptual integrity, its efficiency, its economy, its robustness? Often, no one.” – Fred Brooks
Note for non-programmers: “==” is the C++ programming language’s logical equality operator. If the operator’s left operand equates to its right operand, then the expression is true. For example, the expression “1 == 1” (hopefully) evaluates to true.
Knowing this, do you think the compound expression sandwiched between the two Brooks’s quotes evaluates to true? If not, where does the chain break?
Morally Irresponsible Stooges
In the first place, it is clear that the degradation of the position of the scientist as an independent worker and thinker to that of a morally irresponsible stooge in a science factory has proceeded even more rapidly and devastatingly than I had expected. The subordination of those who ought to think to those who have the administrative power is ruinous to the morale of the scientist, and quite to the same extent, the objective scientific output of the nation. – Norbert Wiener.
By stealing Norby’s quote and replacing a few words, we can make up this nasty, vitriolic, equivalent passage (cuz I like to make stuff up):
In the first place, it is clear that the degradation of the position of the product creator/developer as an independent worker and thinker to that of a morally irresponsible stooge in a corpocracy has proceeded even more rapidly and devastatingly than I had expected. The subordination of those who ought to think to those who have the bureaucratic power is ruinous to the morale of the wealth creator, and quite to the same extent, the productive output of the CCF. – Bulldozer00.
These days, exploiters are more valued than explorers and makers. In the good ole days (boo hoo!) and in most present day startup companies, the exploiters were/are also the explorers and makers, but because of a lack of respect and support for the species, the multi-disciplined systems thinker and doer has gone the way of the dinosaur. It’s only getting worse because as complexity grows, the need for renaissance men and women to harness the increase in complexity’s dark twin, entropy, is accelerating.
A Newly Discovered Universal Constant
The next time you meet someone with a title of “manager of xxx” or “director of yyy”, ask the dude how many subordinates (a.k.a. DICs) directly report to him/her to be “managed” or “directed”. As you acquire data samples, keep a running tally over time of the ratio of the number of people who truthfully retort with an answer of Zero Direct Reports (ZDR) to the number of people who truthfully reply with an answer of Non-Zero Direct Reports (NZDR). My theory is that, as the number of collected “samples” grows, a truthful ZDR-to-NZDR ratio will increase and then level off to some yet undiscovered universal constant (like the speed of light in a vacuum, Avogadro’s number, or Boltzmann’s constant). Also, the ratio will settle out to a value much greater than one.
My bogus theory is based on the hypothesis that most people covet the esteemed title of “manager” and “director” because it’ll (at least temporarily) jack up their social standing compared to other “non-manager” low lifes and get them higher starting salaries and bonuses if they decide to jump ship. I also hypothesize that most self-proclaimed and artificially-anointed managers/directors who have zero direct reports will fib about it – especially if they’re highly confident that you won’t be able to verify their response as truthful. My advice is to flip the bozo bit from MBAB to IAB whenever you uncover a manager/director with zero direct reports who proclaims he/she has one or more direct reports under his/her control.
Since there seems to be a boatload of managers and directors aggregated there, LinkedIn.com is a fertile experimental lab for collecting data points. So, if you’re interested in exploring this cock-a-mamy, made up theory founded on no basis whatsoever, you can start there – especially if you’re a recruiter of managers and directors for your clients or your company.
So, why don’t I do my own data collecting and number crunching? Because: 1) I have no interest in doing it, 2) I project that I’d become depressed at my findings, and 3) I’m a lazy ass who likes to sit back and make stuff up that pisses some people off and ignites a chuckle in other downtrodden and incorrigible people like me. Of course, this assumes that there actually are others like me. D’oh!
A conscience is what feels bad when everything else feels so good. – Steven Wright
Dark Hero
In Dark Hero of the Information Age: In Search of Norbert Wiener The Father of Cybernetics, authors Flo Conway and Jim Siegelman trace the life of Mr. Wiener from child prodigy to his creation of the interdisciplinary science of cybernetics. As a student of the weak (very weak) connection between academic and spiritual intelligence, I found the following book excerpt fascinating:
Since his youth, Wiener was mindful that his best ideas originated in a place beneath his awareness, “at a level of consciousness so low that much of it happens in my sleep.” He described the process by which ideas would come to him in sudden flashes of insight and dreamlike, hypnoid states:
Very often these moments seem to arise on waking up; but probably this really means that sometime during the night I have undergone the process of deconfusion which is necessary to establish my ideas…. It is probably more usual for it to take place in the so-called hypnoidal state in which one is awaiting sleep, and it is closely associated with those hypnagogic images which have some of the sensory solidity of hallucinations. The subterranean process convinced him that “when I think, my ideas are my masters rather than my servants.”
Barbara corroborated her father’s observation. “He frequently did not know how he came by his answers. They would sneak up on him in the middle of the night or descend out of a cloud,” she said. Yet, because Wiener’s mental processes were elusive even to him, “he lived in fear that ideas would lose interest in him and wander off to present themselves to somebody else.”
This description of how and when ideas instantaneously appear out of the void of nothingness aligns closely with those people who say their best ideas strike them: in the shower, on vacation, out in nature, during meditation, while driving to work, exercising, or doing something they love. In situations like these, the mind is relaxed, humming along at a low rpm rate, and naturally prepared for fresh ideas. Every person is capable of receiving great ideas because it’s an innate ability – a gift from god, so to speak. Most people just don’t realize it.
I haven’t heard many stories of a great idea being birthed in a drab, corpo-supplied, cubicular environment under the watchful eyes of a manager. Have you?
Note: The picture above is wrong. Exept for “what’s your status?“, BMs don’t ask DICs for anything. Since they know everything, they just tell DICs what to do.











