Archive
Shhhh! Be Quiet
If you’re having fun on a project, don’t let anyone outside of your team know that’s the case. You see, others will become jealous and they’ll start reacting like you’re a lazy ass slacker. The unconscious thinking behind the reaction is that if they’re not having fun, you shouldn’t be having fun either – verboten!
In true FOSTMA fashion, you’re required to be stressed out with your nose to the grindstone at all times. This is especially true for those who don’t understand the work but can never admit to it because they might be perceived as being “fallible” by other more important “infallibles“. D’oh!
Cakeless
Assume that you have two product development teams toiling away. One finishes early and the other blows right past its schedule – finally finishing the work waaay downstream.
I love deadlines. I like the whooshing sound they make as they fly by – Douglas Adams
Do you think that managers at DYSCOs ignore the early finishers and reward the laggards with a cake party for the team’s “heroic effort down the stretch“? Either that happens, or all projects finish behind schedule and over budget….. and nobody gets any cake. Bummer.
No Man’s Land
Having recently just read my umpteenth Watts Humphrey book on his PSP/TSP (Personal Software Process/Team Software Process) methodology, I find myself struggling, yet again, to reconcile his right wing thinking with the left wing “Agile” software methodologies that have sprouted up over the last 10 years as a backlash against waterfall-like methodologies. This diagram models the situational tension in my hollow head:
It’s not hard to deduce that prescriptive, plan-centric processes are favored by managers (at least those who understand the business of software) and demonstrative, code-centric processes are favored by developers. Duh!
Advocates of both the right and the left have documented ample evidence that their approach is successful, but neither side (unsurprisingly) willingly publicizes their failures much. When the subject of failure is surfaced, both sides always attribute messes to bad “implementations” – which of course is true. IMHO, given a crack team of developers, project managers, testers, and financial sponsors, ANY disciplined methodology can be successful – those on the left, those on the right, or those toiling in NO MAN’s LAND.
l’ve been the anointed software “lead” on two, < 10 person, software teams in the past. Both as a lead and an induhvidual contributor, the approach I’ve always intuitively taken toward software development can be classified as falling into “no man’s land“. It’s basically an informal, but well-known, Brooksian, architecture-centric, strategy that I’d characterize as slightly right-leaning:
As far as I know, there’s no funky, consensus-backed, label like “semi-agile” or “lean planning” to capture the essence of architecture-centric development. There certainly aren’t any “certification” training courses or famous promoters of the approach. This book, which I discovered and read after I’d been designing/developing in this mundane way for years, sort of covers the process that I repeatedly use.
In my tortured mind (and you definitely don’t want to go there!), architecture-centricity simply means “centered on high level blueprints“. Early on, before the horses are let out of the barn and massive, fragmented, project effort starts churning under continuous pressure from management for “status“, a frantic iterative/sketching/bounding/synthesis activity takes place. With a visible “rev X” architecture in hand (one that enumerates the structural elements, their connectivity, and the macro behavior that the system must manifest) for guidance, people can then be assigned to the sparsely defined, but bounded, system elements so that they can create reasonable “Rev 0” estimates and plans. The keys are that only one or two or three people record the lay of the land. Subsequently, the element assignees produce their own “Rev 0” estimates – prior to igniting the frenetic project activity that is sure to follow.
In a nutshell, what I just described is the front-end of the architecture-centric approach as I practice it; either overtly or covertly. The subsequent construction activities that take place after a reasonably solid, lightweight, “rev X”, architecture (or equivalent design artifact for smaller scale projects) has been recorded and disseminated are just details. Of course, I’m just joking in that last sentence, but unless the macro front end is secured and repeatedly used as the “go to bible” shortly after T==start, all is lost – regardless of the micro-detailed practices (TDD, automated unit tests, continuous integration, continuous delivery, yada yada yada) that will follow. But hey, the content of this post is just Bulldozer00’s uncredentialed and non-expert opinion, so don’t believe a word of it.
Mangled Mess
“Too much documentation can be just as bad as no documentation” – Unknown
Assume that a big software project has chosen to use the three types of databases below to store and maintain technical information about a product under development: planning artifacts, trade studies, requirements artifacts, design artifacts, test cases & results, source code, installation instructions, developer guidance, user guidance.
Unless one is careful in defining and disseminating to the team the “what goes where” criteria, a fragmented and ambiguously duplicitous mass of confusion can emerge quicker than you can say “WTF?“.
Insecurity And Anxiety
How’s this for a book title?
LOL! Seriously though, Alan Watts was a prolific Zen Buddhist teacher, speaker, and writer. Many moons ago I read Alan’s book: “The Book: On The Taboo Against Knowing Who You Are“. From what I remember, it was before “I got” what spiritual advancement was all about, so I didn’t get much out of it. It didn’t help that hard-core Zen Buddhism is full of terse, paradoxical, and mind twisting sayings.
Although Mr. Watts is not on the top of my “spiritual guru” list, I just may snatch up this book. Hell, an Amazon.com bot recommended it to me so that must mean something. Plus, it seems to be prophetical in that it was written in 1968 when the world was simpler and much less hectic. However, since the book is not available on the kindle (which is puzzling to me), I just may pass it up.
Of course, like you, I’m not insecure or anxious. I just love the book’s title. 🙂
Spamspeak
I don’t get many comments on this blog, but I sure do get a lot of spam (my favorite college food!). WordPress.com has an effective spam-detecting plugin from Askimet that magically tags suspicious comments and allows me to be the final arbiter. Here are the latest cumulative spam stats from my blog dashboard:
“Ham” comments (451) are deemed legit by the plugin, missed spam (6) is commentary that made it through the filter which I tagged as spam, and false positives (8) are comments tagged as spam that I changed to “ham“. I usually automatically approve of Askimet’s decisions, but I do get a kick out of occasionally browsing the spammentary:
“Thats really very nice blog, I am impressed.i like it this blog keep it up thanks for post.”
“I actually loved this publish. You create about this subject particularly effectively. I in fact like your blog site and I will definetly bookmark it! Maintain up the super posts!”
“Wow! This can be 1 of the top blogs I’ve actually arrive throughout on this subject. Merely Magnificent”
“You got numerous positive points there. I made a search on the issue and found nearly all peoples will agree with your blog.”
“I?d choose to use some with the content material on my blog whether or not you don?t mind. Natually I?ll offer you a link on your net blog. Thanks for sharing.”
“You made some decent factors there. I appeared on the web for the problem and located most people will go along with along with your website.”
Related Articles
- Why do Spammers do this? (social-media-university-global.org)
- Top 5 WordPress Anti Spam Plugins (npxp.com)
- Easy Ways To Reduce WordPress Spam | That Tech Chick (thattechchick.com)
Undetected Course Change
Every organized system of interdependent parts has a primary purpose – otherwise the conglomeration wouldn’t be a “system“. Assume that at T=0, a hypothetical system whose parts are an assemblage of people and machines is placed into operation. As the figure below shows, the system will start moving toward the achievement of its purpose.
Over time, assume that our fictitious system “loses its way” because of ineffective control actions. In hierarchically structured systems, the likelihood that the internal system controllers will detect the derailment and steer the system back on course is pitifully small. That’s because hierachical forms of human organization tend to instill a false sense of infallibility and hubris in those who control the system’s trajectory. Thus, via the phenomenon of cognitive dissonance and the inability to admit mistakes, the controllers will continue to shepherd the system away from its primary purpose toward a different, and most likely less noble purpose – all the while espousing that “we are on course to achieve our objectives“.
Which One, And When?
Option A and Option B in the UML figure below show two different ways of presenting the same 3-function interface to “other” code users. Under which conditions would you choose one design over the other?
Because I prefer simplicity over complexity and local dependency over distant dependency, I’d prefer option B over option A if I was reasonably sure that classes A and B wouldn’t be useful in another inheritance tree or useful as leaf classes. Even if I chose wrongly, because all the functionality is encapsulated within one class in option B, it wouldn’t be a huge risk for a user to extract out B or C class sub-functionality from D and customize it for his/her use by placing it in his/her own separate E class. In this case, no other existing clients of class D would be affected, but the trade off is the introduction of duplicate code into the code base. If I chose the option A inheritance tree, this wouldn’t be the case. In option A, if a user was allowed to directly change A and/or B in-situ, then the duplicate code “wart” wouldn’t manifest, but the risk of breaking the existing code of other users of the A, B, and/or C classes would be high compared to the alternative. Do you see any holes in this decision logic?
No Going Back
So, what does Steve Taylor mean by “pathological over development of the ego“? I think he means the obsessive desire for power, status, and material wealth regardless of its cost to other people and nature. What do you think he means? Do you even agree with his assessment that the world’s collective psyche needs to transition to a new, enlightened state?
Steve recommends practicing meditation and it’s sibling, mindfulness, as the best means of quieting the mind and loosening the iron grip of the ego. Too bad I suck at both of them and, for some strange reason, I choose not to make the time to practice them. I’m too occupied with searching for, and hoarding, intellectual knowledge to complete myself – even though I know that the effort won’t pay off.
Quietly From Behind?
An anointed (not elected) leader once told me: “sometimes it’s best to lead quietly from behind“. Of course, leadership has many facets, and “leading quietly from behind” can be one of them. But is it?
The concern I have is with the word “quietly“. Unless one knows what’s going on and communicates clearly what needs to be done, which implies being “unquiet“, how can one lead from behind without telepathic powers? It reminds me of the general who stays in the warm tent 100 miles behind the front lines where the grunts are busting their asses for god and country. But, since I’m not a leader (boo hoo! and waaaah!), don’t listen to me. Plus, I certainly ain’t the quiet type – except when I’m in situations in which I’m engulfed by fear. D’oh!
How about you? What kind of leader are you? If you are a lowly in-duh-vidual contributor, what kind of leader would you be?













