Easy coding doesn’t cut it if you’ve got “business autism”!

One thing remained invariant about programming: it’s not easy to design good software.

Over the last two decades barriers to entry have come down dramatically. Good tools are now available very cheaply, sometimes free as in free beer. Beginners’ can find loads and loads of easy guides to learn from and sample codes to copy/paste. Web site development has known a similar rapid evolution, culminating in toolkits like Ruby On Rails, Django, Symfony to name a few. There’s a lot of good news for those who want a piece of the action, build their own web site cheaply and quickly. That’s the extent of the good news.

The not so good news is that easy tools don’t make up for unimaginative design. I’m stretching the definition of design here, I know it’s a wide topic. You have to have a good grasp of the problem at hand, you have to have a good approach to solving it, then you’d need to make the right choices while executing your action plan. This is absolutely not a given, the abundance of tutorials and guidebooks is not enough to help one resolve specific issues. In a sense every problem is unique in its context, there’s a tendency to draw parallels between completely unrelated environments or problem domains. The one sure recipe you could apply to a wide variety of problems is know-how and experience. These are mostly available in human beings, not in codes or books.

What often happens is that reality is given distorted views by men in a rush to get quick results. With all the O’Reilly books around people think it’s easy to run development projects, estimations come easily: once you’ve seen a “hello world” example you’re ready to take on anything. Given the right amount of pressure even very knowledgeable people would yield to such simplistic views sometimes. Once you’ve got a bad solution out you are starting with a wobbly legacy, you and your organisation could be in for a roller-coaster ride. That’s when you realise that Ruby On Rails, Twisted Matrix or Django are not the answer you were looking for. By that time lots of money has been spent, damage is done, trust and confidence are in tatters. You’d think people learn from such mistakes, you’d be wrong. What happens next is that someone new comes along and start recommending yet another silver bullet, this time DSL or Ontologies is the answer to all ills. Organisations take the plunge again, not wanting to be left behind.

In IT a good solution starts with a good problem statement within a given context. To give an example i was once out window shopping, checking out the latest digital televisions in a shop. The shop assistant offered to help, I told him that I was comparing the price/value ratio across the various brands and pondering if it was worth shooting for the highest specs. Assuming that I was a total newbie, he suggested to me: this model over there is my preferred one, I’d recommend it to you because it’s got this easy on-screen setup menu. This remark made me smile because the shop assistant didn’t realise i wasn’t worried about the setup at all. I actually had spent hours reading up (boring) technical documentation about HD-TVs offering in the market, I knew what I was looking at. Once the device is setup you often keep it that way and enjoy the rest of the experience. Spending big bucks for an easy setup was not a good answer. This man was not likely to solve my problem, he simply didn’t understand what I needed yet he was offering a “good solution”. I call this business autism, each party is in his own bubble unable to communicate properly to the other. This kind of situation is probably very common in IT projects, I’ve experienced it many times and often look for signs that it is occurring before talking solutions.

Surely the frameworks mentioned are good at solving certain categories of issues. No doubt that in .NET and Java world you will also find good frameworks such as Spring, Struts, JBoss Seam or Atlas. What is wrong is rushing out and implementing these frameworks without carefully considering the problem domain and even the solution domain. If people would spend a little more time listening very carefully to their users or clients, they’d save a lot of frustration and waste during projects and beyond. Not having the right listening skills or solution solving skills is hugely detrimental to a successful IT endeavour.

A lot of shortcomings can be addressed once identified. Business autism is very difficult to diagnose, the inmates are running the prison. Help can only come from outside, if it comes at all.

Parallel programming awaiting its John Von Neumann

Multi-core architecture is awaiting a decent computing model. This normally takes a generation to come to fruition. So far we’ve followed the John Von Neumann model, that’s how we naturally think: in blocks of sequences. This model suited us very well for a long time. No longer.

The big iron companies have been supplying multi-processor systems for ages. These systems were mainly designed for sharing expensive resources, time-sharing and similar models. We’re comfortable with that, design and develop programs to be run as smaller sequences of blocks, all well orchestrated and sharing memory units. The bulk of the algorithms available was conceived to exploit the Von Neumann model. Donald Knuth classics provided the bedrock for generations to program against.

Recently processing costs have come down significantly and chips manufacturers have been pushing out multi-core systems. We’re now stuttering to make a good use of these systems. What we’ve found so far is really a smaller and cheaper replica of the big irons’ model: it’s called virtualisation. Data Centre’s and CIO conferences buzz about this, it’s possibly over-hyped. It’s not surprising that we’re struggling to leverage multi-core architectures: the body of knowledge we live by is not really suitable for parallelism. Everything I’ve seen so far boil down (sooner or later) to arrays, loops and control blocks, some data access synchronisation, but that’s it. All of this is old news, Von Neumann-esque and is not truly parallelism.

Human beings provide a good approximation for illustrating true parallelism. When I take a step there’s a huge amount of activity (potentially a lot of coordination and collaboration) going on inside my body. I can’t begin to imagine how all that works. I’m sure some scientists could step forward and tell me a thing or two about it, but that’s going to be approximation too (current science as we know it). It’s tempting to think that a large amount of tiny steps are triggered and coordinated centrally within my brain. That’s the most logical explanation given what we think we know about human body and the role we think the brain plays in that. But it remains a guess, a very good one, the best we have. But who is to say that many parts of my body are not activated simultaneously? It it were we couldn’t possibly fathom the outcome, it’s therefore simpler to say that it doesn’t work that way. This is how I see the challenge with parallelism: an unknown unknown (not comfortable).

One reason parallelism eludes us is that we can’t figure out how to design and build systems unless we could predict the outcome and future behaviour of such systems. We might be reaching the limits of our current design ability. Where do you begin conceiving of systems that you cannot imagine how they will really operate? Is robotics a suitable field for this? Probably not quite, but certainly a good model to try and understand the challenges.

We can’t do parallelism very well because we’re missing Parallelism’s John Von Neumann, its Donald Knuth, its Grady Booch and so on and so forth. You can’t simply invent all of that so quickly, these great folks will slowly emerge, over time. Somebody will wake up one day and have an epiphany, many will flock in to hear more about the good news, marketers will learn new buzzwords, the whole cycle will repeat. That’s the way it is.

PS: I’m not a scientist, I conducted no surveys or lab analysis to come these conclusions. I’m just conjecturing, just some thoughts.

Make poverty history by hiring “perfect crooks”

There’s somehow a mis-conception that corruption could and should be eliminated in order to reduce poverty and improve people’s lives. That may well be true on paper, it somehow makes (cheap) mathematical sense: 1 – 1 < 3 – Eureka! The problem seems so simple and glaringly obvious that you wonder why it’s there in the first place. Corruption is closely linked to greed and selfishness, fueled by unfetered and abusive power (sometimes dire conditions). If you’d like a cheap way out you’d blame it on many things, preferably all the things that the claimant would not identify himself/herself with. Of course. Ouch, that blinding light of the obvious again!

However, just like certain age old habits will never die, we know very well that greed and power-mongering are very human. It’s in all of us, whether we like it or not, whether we admit it or not. Since we couldn’t hate ourselves we find complicated methods to justify what we do and how we think. The whole issue boils down to definitions sometimes.

For as long as people live in organised societies there will be power-mongering and corruption. Sometimes you find openly fierce advocates of good governance that are themselves corrupt, they just claim that they’re different and their actions and causes are somehow more noble. Hmm, suddenly you start doubting your own intelligence, if not your language skills.

Now then, what I’m suggesting is that if you’d find very good crooks, tightly link their interest and status to the activities that promote and help the poor, there’s a much higher chance that poverty “as we know it today” will eventually be eradicated. No doubt a new kind of poverty will settle in, but the kind we know today would be defeated.

So if you’re in the business of eradicating poverty, I’d say hire the right crooks and things will look up. But that might actually not be in your interest, isn’t it? Would you kill your own job?

Whatever you call it, knowingly doing harm to people is bad. If nothing else, selfishness tells us so because we don’t like to hurt.

Mozart in Mali

The artist Rokia Traore would be difficult to put in any specific box as she’s always been trying to blend western and african music, sounds and styles. I’ve got all her albums, some of the songs are delightful indeed. An article from The Guardian reviews her latest work, she’s now involved in classical music: none other than Mozart. Now then, Mr. Musicologist what are going to call this, eh?

It takes a lot of guts from an artist of african origins to get involved in western classical music, she dared cross the line. Will the pundits be open-minded about this, just like Peter Sellars was when he involved her in this project? Time will tell.

Read the article here: Mozart and the magic iron bar

Monkey journey to the west

Damon and Jamie strike again, this time it’s er… an opera! Now obviously I’m a fan of Damon’s work, I must have said at least once that he was a genius. The other night I saw a programme on the beeb documenting the making ofMonkey journey to the west”, though i was tired and it was late I stayed glued to my sofa watching it till the end. Stunning! This is a perfect example of co-creation, two very good artists on a journey to the unknown risking it all. The title is actually a mirror image of what could be described as Gorrillaz’s journey to the east. How fitting, was this intentional?

Everytime Damon produces I can’t help going back to the non-sense that was the media pitching Blur against Oasis. Surely few would argue today: Damon’s always been in a league of his own, Blur certainly played a huge part in shaping this man’s artistic development.

The show apparently opened Manchester international festival and is going to Paris later on. I don’t know if it’ll be a success, but I frankly don’t care about that so long as I can catch it at some stage. But something tells me it will be a success anyway, the sheer creativity and strive to perfection is palpable and that’s what people will go looking for.