Archive

Posts Tagged ‘evolution’

Components, Namespaces, Libraries

CNL Legend

Regardless of which methodology you use to develop software, the following technical allocation chain must occur to arrive at working source code from some form of requirements:

Alloc Chain

The figure below shows a 2/6/13 end result of the allocation chain for a hypothetical example project. How the 2/6/13 combo was arrived at is person and domain-specific. Given the same set of requirements to N different, domain-knowledgeable people, N different designs will no doubt be generated. Person A may create a 3/6/9 design and person B may conjure up 4/8/16 design.

CNL Example

Given a set of static or evolving requirements, how should one allocate components to namespaces and libraries? The figure below shows extreme 1/1/13 and 13/13/13 cases for our hypothetical 13 component example.

CNL Extremes

As the number of components, N, in the system design gets larger, the mindless N/N/N strategy becomes unscalable because of an increasing dependency management nightmare. In addition to deciding which K logical components to use in their application, library users must link all K physical libraries with their application code. In the mindless 1/1/N strategy, only one library must be linked with the application code, but because of the single namespace, the design may be harder to logically comprehend.

Expectedly, the solution to the allocation problem lies somewhere in between the two extremes. Arriving at an elegant architecture/design requires a proactive effort with some upfront design thinking. Domain knowledge and skillful application of the coupling-cohesion heuristic can do the trick. For large scale systems, letting a design emerge won’t.

Emergent design works in nature because evolution has had the luxury of millions of years to get it “right. Even so, according to angry atheist Richard Dawkins, approximately 99% of all “deployed” species have gone extinct – that’s a lot of failed projects. In software development efforts, we don’t have the luxury of million year schedules or the patience for endless, random tinkering.

The Evolution Of Thinking

Nassim Taleb nails it with this simple but profound sentence:

Our minds are not quite designed to understand how the world works, but, rather, to get out of trouble rapidly and have progeny. – Nassim Taleb (Fooled By Randomness)

Programmed

We human beings are so full of ourselves. With much hubris, we auto-assume that we are above all other life forms just because we can “think“. We concoct immortal and all-powerful gods in our minds who we “think” are watching over our well-being (but not the well being of those we don’t like). Then, when something terrible happens, we wonder “why” our gods could allow such a tragedy. Instead, maybe we should contemplate “why not?“.

The ability to “think” has unquestioningly made life more comfortable locally for the human race over time. However, it’s questionable whether “thinking” has made human life more comfortable globally. Unlike a “mindless” swarm of locusts that ravish the environment with a vengeance, we “mindful” humans seem to be ravishing our environment and other fellow humans at an increasingly alarming rate as our “thinking” supposedly evolves.

Thinking Evolution

Survival Machines

April 28, 2013 4 comments

In “The Selfish Gene“, proud atheist Richard Dawkins theorizes that we are just temporary “survival machines” doing the bidding of the selfish genes within us. These little buggers program us such that we live long enough to propagate “them” onward (via sexual reproduction, of course) from generation to generation – forever. Selfish genes don’t give a damn about the individual survival machines they temporarily use for transport. WTF!, and very depressing if you believe in his logically sound, equation-backed “derivation“, no?

Survival Machines

Science without religion is lame, religion without science is blind – Albert Einstein

 

The Only Process?

January 21, 2013 3 comments

While reading Richard Dawkins’s classic book, “The God Delusion“, I found myself pausing after reading this snippet:

“…natural selection: the process which, as far as we know, is the only process ultimately capable of generating complexity out of simplicity. The theory of natural selection is genuinely simple. So is the origin from which it starts. That which it explains, on the other hand, is complex almost beyond telling: more complex than anything we can imagine…” – Richard Dawkins

Of course, Mr. Dawkins is talking about the evolution of natural, biological systems over time. But isn’t this also true for man-made, socio-technical systems?

natural selection

Complexity, Evolution, Growth

March 28, 2012 Leave a comment

Is an increase in complexity required for evolution to occur?

Likewise, is an increase in complexity required for growth to occur?

%d bloggers like this: