Sunday 9 October 2011

Cargo Cult Over Engineering - Pointless Generic Design

Try to open your mind...

Look back to a time long ago...

A time where there are no computers, no phones, no modern technologies....
Now look back ever further, beyond ice ages, beyond the Earth itself....
Back to a time even before our Sun existed, keep going all the way back, further and further to a point before even time itself existed, a point where our Universe was NULL.
There is nothing not even darkness.

All is still...

The omni gods are tasked to come up with a design to recreate our entire universe. However they don't stop there, they work away and come up with a brilliant generic design so they can create any type of universe.

After a little while one omni god asks the question "Do we really need to allow for all these other universes? Surely we just want to recreate the one we had?"

The other omni gods bare down upon him. "How dare you question the order of generic design!" they say, he is ridiculed, excluded from further discussions, labelled as a fool and banished.
A murmur begins to ring around the room.
The murmur slowly turns into mantra.

"Universe<T>..."
"Universe<T>..."
"Universe<T>..."


The omni gods think long and hard about all the things all possible universes have in common.
The ultimate glorious generic solution awaits...They can almost touch it... excitement is building.

Universe<OursWithUsAndTheEarthInIt>

Universe<AllGreenSunsPlusInfiniteMuggleWumps>
Universe<SlightlyToTheLeftWithHammers>
Universe<BendingLightSometimes>
Universe<BlackHoleHideout>
Universe<NULL>
Universe<FireIsBlackAndNoMarshmellows>
...

The list goes on and on and the High Priests have to bend the system to handle more and more possibilities.The mantra continues:

"Universe<T>..."
"Universe<T>..."
"Universe<T>..."


Universe<RockPillowsAndSundials>
Universe<NoGravityOrJugglers>
Universe<PlanetsAreSquareSometimes>



"Universe<T>..."
"Universe<T>..."
"Universe<T>..."


Universe<AntiUniverse>
Universe<DarkMatterAndPigsOnlyOnTuesdays>
Universe<AnyoneCanCode>



Time passes as the omni gods try to create a generic solution to handle all the Universes they can imagine. There is a lot to think about and they have barely started their brillant solution when...



KAPOW!

From nowhere our Universe explodes into existence!
Once again our universe lives and breathes just as we remember it.

The omni gods are in shock. What is this blasphemy? Our perfect solution is not ready.

To their horror the banished god has gone off and made exactly what was required.
He simply recreated our universe.

The omni gods shout scorn at him "What about our brilliant generic solution?"
This banished voice doesn't answer, he has finished his work for the day and has gone to the pub.

He will never be a member of the cargo cult that is "Pointless Generic Design".


GCS Wiz




Tuesday 9 August 2011

Cargo Cult Epic Fail - WPF

WPF,
some say it was the chosen one, the answer to the prays of all who dreamt of a new world. A world where designers and coders are living in harmony, both reading from the same magical text, a text called XAML.

Quickly a silent mantra began to consume us all "XAML...XAML...XAML..". As one we began a holy pilgrimage to the promised land. In this land magical dreamscape applications beckoned, it all seemed so simple, all we needed to do was climb to the WPF summit for enlightenment and we would be free.

The mantra continued:
"All praise the XAML, all praise the the WPF"
"All praise the XAML, all praise the the WPF"


The high priests prayed that C++ Applications would finally be banished, Winforms retired and Java destroyed.

Years passed in the blink of an eye, new XAML tomes came and went, new features, new versions.
The high priests noticed the mantra was fading,  a new mantra was needed or all is lost.

"MVVM...MVVM...MVVM" began to ring out over the confused masses.
"MVVM will solve your frustrations, your confusions, your pain. WPF will live forever through its son MVVM"

Once again we climbed to the summit for enlightenment, surely this time we would be free. Surely?

Alas as much as we tried we could never make those magical dreamscape applications. They always lacked something, they seemed second rate. They never 'felt' as good as they should, but we persevered.

"KAPOW!!!"

From nowhere a crack in the sky suddenly appeared. The blinding light made us turn our heads away, but as we looked back we stared in astonishment.

"IOS apps, what are these? They are like dreamscapes, they are fluid and fast. They are fun and simple"

We asked our priests "How can this be? How can these beautiful IOS things be created without using XAML, without using MVVM, without using WPF??. This is surely a trick!"

The priests have no answers. They have fled, and left us to fend for ourselves.
This is no less than we deserve because we have become card carrying members of  the cargo cult that is WPF.


GCS Wiz




Thursday 20 January 2011

Cargo Cult Complexity -> Magical Framework Madness

An observation I have made from my long and ultimately successful journey through the development industry is that very few people make quality software. In fact hardly anyone does.

The main reason is the Complexity of the task at hand. Complexity is the double edged sword that makes the development industry what it is, and if you can tame this wild beast great rewards may come your way. If a developer can reorder seemingly infinite chaos into straight forward patterns you can reach the upper echelons of this mystical and misunderstood art. However if you are not a master of this art then it seems you must scour google to find a high preist who has created a miracle framework to solve your problems before all hope is lost.

Unfortunately even if a developers pattern matching skills are high there is no guarantee that these skills will translate into business value. Many developers just look for a magical pattern they have read about, add a couple frameworks and a tool or two from 'Top of the pops' and start churning code, the actual requirements are secondary.

This is not to say the majority of developers are not clever well educated people, in fact most of them are.
The problem is many of these same developers live in a parallel world of frameworks, acronyms and methodologies. They have lost touch of the real requirements of business and spend most of their time trying to shoehorn fancy generic frameworks, tools and methodologies into their ideal solution. They care little for what is really needed, instead they concentrate on building something that will allow them to stand up amongst their peers and say we used X,Y, and Z. Aren't we clever.

This is cargo cult software development in full flight.

The amount of applications that are simply not fit for purpose because  "God has deemed we must use this  framework otherwise we will be shunned from society" is astounding. Developers naively believe the framework will solve any issue no matter how complex or bizarre. They also cast non believers into the cold, labelling them as 'out of touch' thus banishing them from all discussions.

When the juggernaut of "Slow performance and high resource use" arrives the stunned masses once again search the framework tomes to find hidden answers. They must not think for themselves; the framework knows all.

As you read these words, you are probably thinking to yourself:

"I know what he's talking about ... but I'm not one of these developers".

Its interesting how developers never think that they themselves are the culprits. I put it to you reader that you are guilty as charged.

However this is your chance to break away from the crowd and think for yourself.
A real opportunity to overcome the flawed belief that the framework somehow has a magical unlimited power. Freedom is at hand, a new horizon awaits.

You don't need to jump straight into a crazy 'not invented here' policy, but you need to know why you are actually using a particular tool or framework. Is it to help you succeed? Or is it simply because you are a card carrying member of the "cargo cult that is software development".

Think about it...


GCS Wiz