In The Toolbox – Social Networking


Right back at the very beginning of this series of articles [1] I talked about how I had found great utility in chat-style software as an alternative for email to exchange brief messages with my team-mates about day-to-day events. Those messages are generally asynchronous in nature and related to the events going on around me, such as broken builds, production issues, the forthcoming need for coffee, etc. But when it comes to aspects of software design the need to converse with a human on a less constricted form usually takes over. Depending on who’s around at the time it might mean leaning across a desk, walking down the isle or putting a metaphorical pen-to-paper and banging out a thought-inducing email (largely to self, but with the ability for others to provide feedback).


In the “good old days” they were pretty much your only choices, but the modern era of smart-phones and ubiquitous internet access means I’m always within “close” reach of a whole bunch of clever people; some that I already work with but far more that I don’t. This means I can tap-in to the “wisdom of crowds” to some degree and perhaps get feedback in the intervening time before my colleagues are once again around me and able to provide that high-bandwidth communication channel I need to drill down to the finer details.


Of course dial-up forums like CompuServe and Cix were around long before the likes of Twitter and Facebook, as were the Internet-based online forums such as the Usenet. However, although the readership was large, it varied widely and although I made some metaphorical friends the transport mechanism was not really up for the social banter that adds a little more character and background to its users. In fact culturally it was a faux pas to add mindless chatter because it consumed bandwidth and back then bandwidth cost serious money when all you had was a modem measured in kilo-bits per second. In stark contrast, services like Twitter with its so-called “micro-blogging” format means that the content length is purposefully constrained and probably means that the transport overhead now dominates the message size!


It’s seems ironic after the years of worrying about keeping “on topic” to purposefully choose to use a service that restricts your freedom. But what I’ve found with the likes of Twitter is that I can gauge opinion about even very small matters so long I can squeeze it into 140 characters or less. I can on occasion stretch to 280 if I want to try the patience of my audience, but hopefully they’ll forgive me if it’s interesting.


Distilling a problem down to its essence is a tricky problem, but also a worthy pursuit in its own right as you may even answer your own question just by going through the motions. The fear of public ridicule can be a sobering thought too. Occasionally I’ve attempted to frame a question as a rant to see if I get a “me too” style response or just a “look” of derision. When you work in a very small or very inexperienced team you sometimes need to look outside for validation, or a friendly ear. It probably sounds a little dysfunctional as I should be able to address concerns about my colleagues and their work directly to them, but in the early stages I like to keep “the air clear” between us and get a reality check from a third party first about whether it’s a mountain or a molehill.


Social Networking tools have embraced the whole push model so that you get a stream of collective consciousness delivered directly to your device. Assuming that you’re one of those people who doesn’t just follow everyone in the world and are interested in keeping the data stream down to a manageable level, there is a continual diet of knowledge and sage advice to be had. That insight may come in the form of a quote from such a luminary as Alan Kay or Sir Tony Hoare. Or it may come in the thinly veiled guise of “geek humour” such as an XKCD [2] cartoon. Or it might be an off the cuff remark from one of your fellow ACCU colleagues.


My own social networking persona is very much for the purposes of my professional programming career. Although I clearly make out-of-band comments, the group of people I follow and the content I generally consume is of a programming related nature. Personally I’m not interested in trying to maintain a separate “private” persona, but I know of people that do – so that they can keep their work and personal lives separate as a way of managing the onslaught of data. Despite probably overdoing it myself on occasion I do try and stick with those people that provide the highest signal-to-noise ratio. Tooling has made a big difference here by filtering messages in an intelligent way so you don’t get cross-talk.


The links to blog posts and articles I receive are often very useful, but I have to squirrel them away with a bookmark and save them for later consumption. No, what I really enjoy most are the little pearls of wisdom that act as continual reminders to think about what we’re doing. Even with the best intentions I lose focus and find myself slipping back into dubious habits or not bothering to think hard enough about what the best name might be for a class or method.


One time I remember lazily naming a class “EngineManager”. Before I had committed it though a tweet (from Allan Kelly, I think) appeared commenting on the non-descript nature of the term “manager” and so I renamed it “EnginePool” as that felt a better description because it followed the Pool pattern from the POSA 3 book [3]. As if by coincidence another tweet from Nat Pryce arrived bemoaning the use of pattern names in classes. Oops.


The practice Nat Pryce appeared to be commenting on is a long-standing joke in Java where there has been a habit of seeing how many Gang of Four pattern names you can squeeze into one class. In my case I felt I was quite justified in naming my class with the “Pool” suffix as it documented the expected behaviour nicely. The point though is that it made me stop and think.


And that’s what I enjoy most about having a stream of one-liners flowing though my consciousness every day, they keep me honest and remind me of the many forces that I need to keep in balance with every line of code I write.



[1] In the Toolbox – Team Chat, C Vu, May 2013


[3] Pattern-Oriented Software Architecture. Volume 3: Patterns for Resource Management


Chris Oldwood

05 December 2013



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 or @chrisoldwood.