Archive
Messy Mess
Obscured By Me
A Bunch Of STIFs
Grady Booch states that good software architectures evolve incrementally via a progressive sequence of STable Intermediat Forms (STIFs). At each point of equilibrium, the “released” STIF is exercised by an independent group of external customers and/or internal testers. Defects, unneeded functionality, missing functionality, and unmet “ilities” are ferreted out and corrected early and often.
The alternative to a series of STIFs is the ubiquitous, one-shot, Unstable Fuming Fiasco (UFF):
Note: After I converted this draft post into a publishable one and queued it up, I experienced a sense of deja-vu. As a consequence, I searched back through my draft (91) and published (987) post lists. I found this one. D’oh! and LOL! I’m sure I’ve repeated myself many times during my blogging “career“, but hey, a steady drumbeat is more effective than a single cymbal crash. No?
ReOrg City
The structure of the “whole” and the behaviors at both the top and bottom remain the same. Only the width and/or height of the pyramid changes with each reorg. But alas, that’s just “the way it has to be“, no?
Yet Another Nit
Programming in C++, I “prefer” composition over inheritance. Thus, for that reason alone, I’d use “ComposedLookupTable” over “InheritedLookupTable” every time:
In addition, since (on purpose) no STL container has a virtual destructor, I’d never even consider inheriting from one – even though those who do would never try to write this monstrosity:
Of course, this can be seen as yet another childish BD00 nitpick. But hey, what else is BD00 gonna do with his time? Solve world poverty? Occupy the org?
Quality is in all the freakin’ details, and when you see stuff like this in product code, it makes you wonder how many other risky, idiom-busting, code frags are lurking within the beast. But alas, where does one draw the line and let things like this slide?
As a final note, beware of disclosing turds like this to their authors; especially in mercenary cultures where everyone is implicitly “expected to” project an image of infallibility in order to “advance” their kuh-rearends. If you can excise turds like this yourself without getting caught, then please do so.
Levels Of Testing
Using three equivalent UML class diagrams, the graphic below conveys how to represent a system design using the “C” terminology of the aerospace and defense industry. On the left, the system “contains” CSCIs and CSCIs contain CSCs, etc. In the middle, the system “has” CSCIs. On the right, CSCIs “reside within” the system.
Leaving aside the question of “what the hell’s a unit“, let’s explore four “levels of testing” with the aid of the multi-graphic below that uses the “reside within” model.
In order to test at any given level, some sort of test harness is required for that level. The test harness “system” is required to:
- generate inputs (for a CSU, CSC, CSCI, or the system),
- inject the inputs into the “Item Under Test” (CSU, CSC, or CSCI),
- collect the actual outputs from the IUT,
- compare the actual outputs with expected outputs.
- declare success or failure for each test
When planning a project up front, it’s easy to issue the mandate: “we’ll formally test and document at all four levels; progressing from the bottom CSU level up to the system level“. However, during project execution, it’s tough to follow “the plan” when the schedule starts to, uh, expand, and pressure mounts to “just shipt it, damn it!“.
Because:
- the number of IUTs in a level decreases as one moves up the ladder of abstraction (there’s only a single IUT at the top – the system),
- the (larger and fewer) IUTs at a given level are richer in complex behavior than the (smaller and more plentiful) IUTs at the next lowest level,
- it is expensive to develop high fidelity, manual and/or automated test harnesses for each and every level
- others?
there’s often a legitimate ROI-based reason to eschew all levels of formal testing except at the system level. That can be OK as long as it’s understood that defects found during final system level testing will be more difficult and time consuming ($$$) to localize and repair than if lower levels of isolated testing had been performed prior to system testing.
To mitigate the risk of increased time to localize/repair from skipping levels of testing, developers can build in test visibility points that can be turned on/off during operation.
The tradeoff here is that designing in an extensive set of runtime controllable test points adds complexity, code, and additional CPU/memory loading to both the system and test harness software. To top it off, test point activation is often needed most when the system is being stressed with capacity test scenarios where the nastiest of bugs tend surface – but the additional CPU and memory load imposed on the system/harness may itself cause tests to fail and mutate bugs into looking like they are located where they are not. D’oh! Ain’t life a be-otch?
Yet Another Occupation
Since, at least for the moment, “occupying” something/anything seems to be the kool, pop-culture thing to do, BD00 has decided to temporarily change his signature graphic – until the next big meme comes along.
Lo and behold, the FAI deviation….
Of course, autographed copies of collector item T-shirts bearing this world-renowned graphic are available for a hefty price that’s affordable only to the top 1%.
BD00 is trying to build a personal “brand” and trying to sloooowly create a “tribe” since those seem to be the other two kool things to do these days. Sheesh, it sure is exhausting trying to keep up with change.
Volunteer Experience
Checkout this tidbit that I e-received from LinkedIn.com:
There are two ways to interpret the “why” of the importance of volunteer work to hiring managers:
- 4 out of 10 managers value compassionate and caring employees
- 4 out of 10 managers value employees who will work lots of unpaid overtime
Maybe its a 50-50 split between the two “whys“?
Turning Inward
As usual, BD00 is delusional and frustratingly confused. Just about every spiritual book I’ve ever read says that one has to turn inward and leap into “the abyss” to experience lasting peace. The implication is that no matter how valiantly hard one tries, an individual can’t find peace, joy, and gratitude “out there“. Thus, frequent calls to “stop the search!” can be found in many spiritual teachings.
On the flip side, several “soft” business and psychology books that I’ve read proffer that turning inward too often may not be such a good idea. Here’s a confirming snippet from Theresa Amabile’s (wonderfully written and highly recommended) “The Progress Principle“:
A 1995 study out of the University of British Columbia showed how research participants who encountered problems in their quest to achieve goals that were personally important to them focused more attention on themselves and spent more time ruminating on those events. Since self-focused attention has often been linked to depression, such findings suggest that people’s emotional well-being can be damaged in the short run when they face discrepancies between goals that are important to their identity or sense of self-worth and what they actually achieved.
“A First-Rate Madness” author Nassir Ghaemi also touches on the downside of turning inward by describing the “depressive realism” hypothesis that can be attributed to tortured leaders like Churchill, Lincoln, and King:
This theory argues that depressed people aren’t depressed because they distort reality; they’re depressed because they see reality more clearly than other people do.
Zen Buddhism is loaded with paradoxical teachings and koans. Ironically, the “logic” is that when the mind can’t resolve two opposing concepts being held in the mind at the same time, at some point the mind eventually gives up on “logic” – providing an opening for peace, joy and gratitude to rush in and fill the void.
So, what do you think? Does turning inward facilitate depression, or peace/joy/gratitude? Is there a half-way point?
He’s In The MIX
Ricardo Semler, one of my innovation heroes, is now a MIXer: Ricardo Semler | Management Innovation eXchange. Until reading his first contribution to the MIX, I hadn’t seen hair nor hide of him for a couple of years. I had thought he’d retired or something like that.
As usual, in his “Retire-a-Little: Enabling More Fulfilled Working Lives“ management hack, Mr. Semler tells the story of yet another heretical and “outrageous” practice that he implemented at Semco Inc. Even if you don’t “buy into” his “retire a little” program, ya gotta love his 3 hour “Are You Nuts?” meetings, no? Try to picture the reception someone would get in your org for suggesting something like an “Are You Nuts?” initiative. Would anyone even attempt to suggest it?















