July 2012


I love my job of architecting, designing and implementing (programming) IT systems – metaphorically we build elaborate castles in the sky. There is a joy in solving difficult problems and then, after a long period of reflection, analysis and craft, we gratifyingly see the solutions appear before our eyes.

The development of IT systems remains a poorly understood business – it’s unlike other disciplines that seem comparable, such as building bridges or tower blocks. The IT system often takes much longer to develop than expected, and can even fail to deliver anything of use at all. There are many different approaches and there is still great debate as to which one is best. As an individual I feel I’ve learnt a lot about the field, but it’s a type of experience (I’m loath to call it wisdom) that I find hard to explain, regretfully, to new practictioners of the ‘art’. I have established one rule of thumb however, which is that keeping things simple is, truly, the hard part. Unfortunately for me I’ve had to maintain one too many bits of code where the author thought that being ‘clever’ and writing algorithms that were complex and hard to understand, was something to be proud of. On the contrary, it’s crafting simpler-to-understand algorithms which solve the same problem that is an achievement worthy of note.

So, I struggle to express the lessons I’ve learnt over the years. That’s why I’m so delighted having just watched Rich Hickeys lecture “Simple Made Easy”. He articulates many of the important lessons that I’ve learnt over the years, and a lot more. Usually I don’t watch videos as the information content per hour is so low that it just can’t compete with reading a book. However, Rich has managed to beat the information density of most books in his great one hour talk (link below). He elaborates on the contradistinction between simple/complex vs easy/hard. He moves on from a really entertaining philosophical talk in the first 20 minutes into a brilliant analysis of the pros and cons of different approaches in programming languages. Rich, by the way, fairly recently invented one of the best new languages on the block, Clojure.

If you’re a hardened disciple of XP/Agile (i’m just a humble practitioner myself) then fasten your seatbelt. I think this lecture actually kicks off the next debate that IT professionals should be having. Rich formulates a number of philosophical principles and then gives a detailed view on how they apply to the job of programming. You may not agree with everything he says, but you’ll be entertained and ready to discuss the issues in the upcoming round of serious IT debate.

Anyway, on to that lecture:
Simple Made Easy – Rich Hickey

I myself didn’t understand why he thinks switch statements are so bad – if you thing you got it then please explain in the comments!

Advertisements

An interesting essay on how too much focus on a particular `aqeeda can be a negative thing.

I am honored to share the following insightful reflections and observations, on a topic that is usually approached in a divisive manner, from my esteemed teacher Dr Mohammad Akram Nadwi. Although this blog normally serves to share my personal writings and work, I feel that in this case,  Dr Akram took the ideas straight out of my heart and expressed them in words I could never have come up with. So I share them here for my esteemed readers, reproduced from the Nadwi Foundation.

Some Reflections on ‘Aqidah

All Rights Reserved.

© Mohammad Akram Nadwi, Oxford

A creed is a special kind of formal statement of religious belief or collection of such statements. A very good and justly famous creed among the Sunnis is the document known as al-‘Aqidah al-Tahawiyyah. I will be discussing it at some length. First I wish to clarify the framework in which I will present…

View original post 2,479 more words