Archive
Hierarchy and Holarchy
In a man-made hierarchy, each higher level transcends and excludes the lower levels. In a holarchy, each higher level transcends and includes the lower levels. In a holarchy, all entities are unique manifestations of the whole. Thus, full alignment occurs and high performance is achieved.
What type of organization do you work for? How would one know if he/she is working in a hierarchy or a holarchy?
Overturned Books
When walking through the cubicle farm, it’s interesting to notice that people who are trying to learn something new often have the technical book that they’re reading “turned over” on their desk. It’s almost as if they’re embarrassed to let others know that they’re reading it. Heaven forbid if it’s a “Head First” or “Dummies” book.
Does this just happen where I work, or does this happen elsewhere?
What About My Needs?
There are around 6+ billion people on earth and it seems like everybody and their brother has a blog. Well, now I have one too. Whoopditty doo.
It’ll be strange talking to myself .
Hellooooooo!!! Is there anybody out there?
How And What
“Never tell people how to do things. Tell them what to do and they will surprise you with their ingenuity.” – George S. Patton
One of my pet peeves is when a bozo manager dictates the how, but has no clue of the what – which he/she is supposed to define:
“Here’s how you’re gonna create the what (whatever the what ends up being): You will coordinate Fagan inspections of your code, write code using Test First Design, comply with the corpo coding standards, use the corpo UML tool, run the code through a static analyzer, write design and implementation documents using the corpo templates, yada-yada-yada. I don’t know or care what the software is supposed to do, what type of software it is, or how big it will end up being, but you shall do all these things by this XXX date because, uh, because uh, be-be-because that’s the way we always do it. We’re not burger king, so you can’t have it your way.”
Focusing on the means regardless of what the ends are envisioned to be is like setting a million monkeys up with typewriters and hoping they will produce a Shakespear-ian masterpiece. It’s a failure of leadership. On the other hand, allowing the ends to be pursued without some constraints on the means can lead to unethical behavior. In both cases, means-first or ends-first, a crappy outcome may result.
On the projects where I was lucky to be anointed the software lead in spite of not measuring up to the standard cookie cutter corpo leadership profile, I leaned heavily toward the ends-first strategy, but I tried to loosely constrain the means so as not to suffocate my team: “eliminate all compiler warnings, code against the IDD, be consistent with your coding style, do some kind of demonstrable unit and integration testing and take notes on how you did it.”
Final, Not Virtual
When writing C++ code, I used to have the habit of tagging every destructor in every class I wrote as “virtual“. I knew that doing so added memory overhead to each object of a class (for storing a pointer to the vtable), but I did it “just in case” I decided to use a class as a base in the future. I was afraid that If I didn’t designate a class dtor as “virtual” from the get go, I might forget to label it as such if I decided later on I needed to use the class as a base.
I have actually made the above mentioned “inheriting-from-a-class-that-doesn’t-have-a-virtual-dtor” mistake several times before – only to discover my faux pas at runtime during unit testing. However, since C++11 added the “final” keyword to the core language to explicitly prevent unintended class derivation (and/or function overriding), I’ve stopped tagging all my dtors as “virtual“. I now tag all of my newly written classes as “final” from the start. With this new habit, if I later decide to use a “final” class as a base class, my compiler pal will diligently scold me that I can’t inherit from a “final” class. Subsequently, when I remove the “final” tag, it always occurs to me to also change the dtor to “virtual“.
#include <iostream>
class ValueType final {
public:
~ValueType() = default;
};
class BaseType {
public:
virtual ~BaseType() = default;
};
int main() {
using namespace std;
cout << " sizeof ValueType = "
<< sizeof(ValueType) << " bytes" << endl
<< " sizeof BaseType = "
<< sizeof(BaseType) << " bytes" << endl;
}

