Being Original

 

A few years ago I decided to take some time off after completing another long contract and having reached 10 years of commuting into London. At that point I had only been a member of ACCU for a couple of years and I was becoming friends with a few of the more prominent members. Although said partly in jest there were some niggling suggestions that I should consider writing about something. Naturally I downplayed the situation by suggesting that I had nothing worth saying. After all the stuff I read about in C Vu and Overload was far cooler than anything I did.

 

However during my break the ACCU conference occurred and I reluctantly agreed to write up a review. This felt like a safe option, as being a review it was entirely subjective and so I couldn’t really say anything that might be considered “wrong” per-se. Up to that point the only thing I’d ever written were some lengthy diatribes to my team mates about the technical debt in the codebase and how we should probably go about tackling it. Each email had taken ages to pen and involved constant refactoring to try and get the tone right. The thought of writing anything longer wasn’t exactly appealing.

 

I subsequently decided that the safest route was to self-publish via a blog. This way nothing could be rejected by an editor and so anything I wrote was definitely going to see the light of day. Being my own publisher also meant that I had no deadlines. And so after cranking out a few really safe posts about what I intended to get out of writing, who the ACCU was, etc. I started to consider tackling something meatier…

 

It was then that I realised I really didn’t have anything original to say. As I looked back at my career as an Enterprise programmer it occurred to me that I spent my entire career standing on the shoulder of giants. Enterprise development is all about playing it safe. My job involves using mature technologies to solve the same problems as other enterprises using patterns and techniques that have already been discovered and documented by others years, if not decades, ago. If none of what I do is novel is it a surprise that I’d have nothing truly interesting to write about? After all, if everyone reads the same books and blogs, follows the same people on Twitter, etc. then they’ll already know everything I do; probably more. Who exactly would be listening?

 

Seven months later after playing it safe I finally started to consider sticking my neck on the line. By then I had thought about a technique I had used a few years back which I pondered might have some merit in it. I put together a draft, sent it off to a fellow ACCU member who had recently asked me to look over a couple of their articles and waited for the feedback. The feedback was really useful but it seemed I still had quite a bit of work to do to knock the article into shape.

 

That article sat unfinished in my “pending” folder for over three years! In the meantime I continued to bash out more safe reviews of the conference, London branch meetings and a few book reviews for some of the less technical tomes. I was also cajoled into writing a piece for Desert Island Books and Inspirational Particles, both still firmly in the more subjective writing camp. I know others find the Code Critique is a good way to get started, but there always seemed to be so many comprehensive answers that once again I didn’t believe I could add anything extra.

 

So, if you haven’t got anything original to say, what’s the answer – plagiarise? That’s not really a viable solution. And then it slowly dawned on me as I started to read more and more of the old classic books and papers that much of what is said is not necessarily that new anyway, but what is new is the way it’s presented. As is hopefully apparent from my article in the previous C Vu about getting to grips with list comprehensions [1] it took a number of different books, articles, talks and thinking to eventually understand the concept.

 

My first non-review style article finally appeared almost 4 years after I initially plucked up the courage to even begin writing. It was about accessing more than 4 GB from a 32-bit Windows process and was pretty niche given that 64-bit was becoming prevalent even in the slow moving enterprise world by the time it got published. But I had finally bitten the bullet and stuck my neck out.

 

I’m a very defensive writer and speaker. I do not have the courage to suggest what you should or should not do, instead I prefer to present what I have done, backed up where possible by what my influences are with the only expectation being that it may be of some value to someone else. But my fear is that someone will point out what is obvious to everyone else and negate my entire article or talk by describing how I should be dong it. It’s not that I’m afraid to be wrong, on the contrary I want to learn, but I’d feel upset about wasting not only my time, but the time of the reviewers and readers.

 

At the conference this year I spoke to a few people who appear to be under a similar illusion that they have nothing original to say. For a start they may work in a different industry to me and have different constraints and cultures which is already interesting. However they find that despite the plethora of content out on the internet their colleagues are still unaware of many of the concepts and techniques that those more experienced take for granted.

 

Maybe the reason many programmers have not grasped something is not because they are stupid or haven’t bothered reading about it, but is because nobody has spoken to them in a way that they understand. I’ve tried to digest the Wikipedia page on monads a number of times but have found myself lost in a sea of Computer Science babble. There is much said about Monads which makes me think I probably need to understand them, but to date no one has spoken to me in a language that I can comprehend.

 

So if you labour under the belief that everything has already been said and that no regurgitation of existing ideas is useful then ask yourself this – why did Kevlin Henney begin his talk on Immutability at this years’ ACCU conference with a modern take on a 20 year old article written way back in issue 8 of Overload [3]?

 

They say “those who cannot remember the past are condemned to repeat it” [4]. Perhaps you can help out those of us unaware of some aspects of the past by ensuring we don’t waste time rediscovering it and allowing us to stand on your shoulders as well in the future.

 

References

[1] C Vu 26-2 (May 2014)

[2] http://en.wikipedia.org/wiki/Monad_(functional_programming)

[3] Circle & Ellipse – Vicious Circles, Kevlin Henney, Overload 8, 1995

[4] http://en.wikipedia.org/wiki/George_Santayana

 

Chris Oldwood

12 June 2014

 

Bio

Chris is a freelance developer who started out as a bedroom coder in the 80’s writing assembler on 8-bit micros; these days it’s C++ and C#. He also commentates on the Godmanchester duck race and can be contacted via gort@cix.co.uk or @chrisoldwood.