Wednesday, September 7, 2011

The awesome power of networks

Many of us have had an Internet 'eureka moment'. Mine was in 1995 when I was working as a software engineer on a fairly large development project for Lotus Development Corp. in Cambridge Massachusetts USA. It was one of my first software design roles and I’d been given the task of coming up with some C++ code needed to define and implement a 'factory' class.

Now then, if you're thinking that sounds a bit technical please don't worry, this isn't a post about how to write C++ code. The point is the task was relatively challenging and high profile within the project team. There was plenty of potential for reputational damage if I didn't manage to produce the goods. However, if you're thinking "what a loser, I'd be able to cut that code whilst watching the latest episode of South Park using iPlayer on my iPod Touch whilst also updating my Facebook status and chatting on Fring with my friends", then just hang on a moment while I give you some more context.

This was all happening back in the day when the options for producing new code were severely limited – the World Wide Web didn't really exist, Google was 3 years away from being founded, the offshore industry didn't exist, 'shareware' (the freely available output of collaborative development initiatives) was only really accessible via academic networks, there were no commercially available books covering software design patterns, and the sophisticated software component libraries that existent today simply hadn’t been written.

No, back then if you wanted some new code cutting you either took a chance by giving the task to the enthusiastic graduate in the corner cube, or you took a chance by employing an expensive contractor with a grey beard and a penchant for wearing socks with open-toe sandals during his daily commute from New Hampshire in a Ford Bronco registered to '1 PC GURU'. (You know who you are!). 

There was no budget for the contractor, and I was sitting in the corner cube.

I was already familiar with C++ but I hadn't done much design work, and there were few established design patterns for C++ classes. I was stuck for direction and in big need of a spark of inspiration. I surveyed the office looking for an opportunity to start a conversation with colleagues. All I needed was someone with enough time to allow me to share the problem, and enough experience to be able to empathise about the problem. That's all I would need to get the creative juices flowing and trigger my development effort. Half an idea, that's all I needed. But it was a new design pattern, and none of the experienced code warriors had done anything similar before. Nothing was forthcoming, and after several unfulfilled hours behaving like a prairie dog I eventually mooched back to my cube and slumped back in the chair with a copy of Bjarne Stroustrup. It must be in here somewhere I thought to myself, I've just got to read harder and for longer. I began to wonder where the beardy contractors were when you needed them most.

Later that afternoon the IT system administrator stopped by my cube. Turns out he'd been planning the roll-out of something called Email, and my project team had been selected as the pilot user group. We were also going to get access to something called Usenet Newsgroups. (If you’re reading this Nick Caramello – thanks!).

I quickly discovered Usenet was a kind of online community for information sharing, which was organised around folders called Newsgroups where users could post messages with information and opinions about topics that were of interest to the community. Newsgroup posts were moderated collectively by the community, and most users were well-behaved and respected an acceptable usage policy. Usenet was heavily used until the turn of the millennium, mainly by the worldwide technology and development community, but it was also a hot-bed for exchanging all manner of opinions and information about non-technical topics, which seemed to range from the mundane to the radical and highly controversial.

Importantly Usenet Newsgroups were easy to use. Within a few minutes I was up and running and able to quickly find a relevant Newsgroup where I could post a question about my coding problem. Having created my post I headed off to grab a coffee and a large blueberry muffin. On my return from the restaurant I was astonished to find that my post had already attracted replies from two other users; one reply from a guy in Seattle with good suggestions about how to approach the design work, and the other from someone in Denver with some example code.

It was an astonishing revelation. No more than an hour had passed since I'd been a half blind code-monkey stumbling in the dark through a C++ syntax jungle searching for an obscure design pattern that I didn't know hadn't yet been invented. From that moment onwards those kinds of problems would become a thing of that past. Problems that would previously have stalled me for days could now be tackled in minutes via the Internet, and not only that, the solutions would be better because they would draw upon a broader range of expertise.

The point of this post is not to make a case for bringing back Usenet Newsgroups (though some might argue there isn't much in it between Usenet Newsgroups and Facebook), the point is about the incredible power of networks. Networks have the power to improve our access to information, accelerate collaboration, and enable us to share new ideas and original thinking. Networks drive our creativity and innovation.

The Internet is probably the largest of all man-made networks. It enables us to interact and share ideas with increasing convenience. Mobile telephony and pre-pay services mean that wherever we are in the world, and irrespective of our economic situation, the chances are high that some form of Internet access will be within our reach.

The explosion of the Internet and mobile communications has transformed almost everything about our lives in less than two decades – in my opinion for the better.

The Internet is now a universal platform for sustainable growth and it underpins our ability to devise solutions to the big problems of our time.

The Internet is truly an awesome network!
 

Tuesday, September 6, 2011

The problem with linear systems

It seems linear systems have a big problem – they're unsustainable!  They promote conformity (usually at the expense of diversity), they encourage built-in obsolescence (typically at the expense of re-use), and they generate a tremendous amount of waste.

The 'Story of Stuff' video explains why our 20th century model of consumerism is fundamentally flawed. It's a linear system, and it's clear we need to look for alternative, more sustainable models of production. 


It's an incredible coincidence, and somewhat ironic, that the creative horsepower needed to innovative and devise new solutions to these problems is being continually undermined by a another linear system – our global education system. 

In his classic TED talk from 2006 'Do Schools Kill Creativity?', Sir Ken Robinson makes the point that "if you're not prepared to be wrong you'll never come up with anything original".  He also makes the observation that we've designed our schools and colleges to process our children on an industrial scale, so that they can take their places in the world as educated adults, and that tragically this process is systematically 'educating the creativity out of our children' by teaching them that mistakes are bad and must be avoided at all cost. 


It strikes me that our education system is fundamentally flawed – wasteful and unsustainable. In our race to produce more educated adults, we are ruthlessly squandering the creative raw material that we will need if we are to find solutions to the big problems of our time.

We need to start educating our kids in a way that encourages sharing of ideas and risk-taking and most importantly in my opinion, we need to create future learning environments where our children are encouraged to be imaginative, and share their ideas without fear of being stigmatised when they don't conform.