January 4, 2014

...Learn TDD with Codemanship

What is Nonovation?

One of the more pernicious problems that dogs the software community is that of continual - and accelerating - technology churn.

Examine closely many of the "new" ideas that appear on a daily basis, and you'll notice that most of them - almost all, in fact - are not new ideas at all. As I get older, I recognise it more and more. I've seen several major trends in the way we develop software over my 21-year career, but also hundreds of minor fashions and fads come and go.

Most "innovations" we see emerging in software are little more than cosmetic tweakings of existing ideas. No real value is added, no new problems are solved. It's the technology equivalent of painting a chair a different colour and claiming you've invented the "seatier". (Cue hordes of trendy young tech hipsters rolling their eyes and exclaiming "God, are you still using chairs? That's just so last year!"

I call this process of appropriating old ideas and dressing them up as new ideas nonovation. It's innovation that isn't.

It's a concept that's possibly best summarised by the late great (and genuinely innovative) Douglas Adams in The Hitchhiker's Guide To The Galaxy. To set the scene, Arthur Dent and Ford Prefect have hitched a ride aboard a giant space "ark" carrying the useless third of the population of the planet Golgafrinchan - all the marketing executives and middle managers and telephone sanetisers - which is programmed to crash into it's destination.

After the crash, Arthur and Ford explore the planet they've arrived on and eventually return to the main camp of the surviving crew of the B-Ark, who have been busy "inventing things".

Yes, and, and, and the wheel. What about this wheel thingy? Sounds a terribly interesting project to me.

Er, yeah, well we’re having a little, er, difficulty here…

Difficulty?! It’s the single simplest machine in the entire universe!

Well alright mister wise guy, if you’re so clever you tell us what colour it should be!

This is nonovation in a nutshell. By focusing on the purely cosmetic (e.g., "It's, like, MVC, but for Ruby, so it's, like, completely new...") we can create the illusion of meaningful invention and innovation.

My own theory is that, as the long tail of history grows ever shorter, and our collective memory becomes fixated on stuff that happened today and whatever's trending on Twitter, we easily forget what's gone before, and fail to recognise old ideas when we see them.

I also believe we're growing increasingly shallow in our attempts to understand things, and rarely bother to scratch beneath the surface to examine ideas below their cosmetic outer appearance.

This is evidenced by a recent clear-out I had of my office. I've been a prodigious book-buyer over the years, amassing hundreds of books on all aspects of software development. After rifling through my collection, throwing out the books that had become obsolete - I'm pretty sure I won't be doing any Delphi 2.0 development any time soon - I found myself with one bookshelf of titles that are still relevant. 90% of my books were about fashions and fads, little more than documentation for 20+ years of technology churn. The books that remain are largely computer science (data structure and algorithms, discrete maths, languages and compilers etc), and what I consider to be "classic" works on software development, like Extreme Programming Explained and the Catalysis book.

I haven't bought a book about a specific programming language, framework or tool in years. I find that stuff online when I need it, and it changes so often that I've probably subconsciously decided it's not worth investing in a hard copy.

I'm well aware that there is rarely anything genuinely new in any "new" programming language, framework or tool. I'm just relearning how to sit in a chair that's now called a "seatier".

(And, yes, I have just made up a new word for "technology churn"...)

Posted 1 week, 5 days ago on January 4, 2014