Perhaps you could tell us what you are working on currently.
There are two areas that I'm giving my attention to. The overarching thing that brings them together is addressing what one can do to improve the efficiency of developing, delivering and evolving complex software systems.
There is a gap between vision and execution; we can dream up many things that have a software element to them, but to turn that into running systems is a challenge. Pure computer science can limit us, so can social, legal and moral things. But where most organisations stumble is at the cusp of design and organisation - those are the two places where I'm spending my attention.
In the area of design one of the greatest advances in the last ten years is the observation of design patterns, the ability to look at things at a higher level of abstraction that transcends the original programming language. Not that languages are unimportant, but to address complexity we have to move up levels of abstraction.
The Hillside group, of which I'm a founding member, has begun to catalogue several thousand design patterns, so that's a maturing discipline. We know to express patterns we needed to catalogue in the physical networking domain and the abstract logical domain. Where we lack is in our ability to describe significant or architectural patterns.
In civil engineering there is a history of architects learning by studying the works of their masters - Frank Lloyd-Wright, Christopher Wren, Frank Gehry. There are books that catalogue the different genres of buildings and observe the common kinds of architectures. No such reference exists for software engineering.
In software people tend to be brought up in one domain with almost no knowledge of others. Nor have they studied the masters. I've found that only one or two institutions in the computer science world have a reading course. This is much more common in other disciplines.
So my goal is threefold: first to build a handbook of software architectures with the idea of codifying the architecture of a number of interesting systems - historical, economic or technical interest. Then to extract the patterns we find, because every system has an architecture even if just accidentally, and the systems we have today have their architectures for historical and technical reasons.
The third goal is to provide a reference to move us up a level of abstraction so that people who wish to become architects can have a reference.
That's one area. A lot of what I do for IBM is to mentor to work with organisations to define and transform their architecture and thus their organisation along the way.
The other area is the problems of organisations. Most economically viable software is not written by an individual or even a small team but by many code warriors working with other stakeholders who are often geographically and temporally dispersed.
The geographical is obvious, but the temporal distribution is under-served and little understood. I may build something, and there are people that follow, maybe even a generation later, that may want to modify or adapt what I have built.
We know that code is the ultimate truth, but not all the truth. There is entropy, a loss of information, from vision to construction, so even though I may stare at some code I don't have access to the rationale or the patterns that sweep across the individual lines of code.
So we have information loss. So I have tried to define what we can do to improve the developer experience using a thing that Alan Brown and I have called collaborative developing environments.
It's not a killer app, but a weaving together of a hundred small things - the things we know from social networking sites like Facebook, Slashdot and Sourceforge. So we want to produce technology to help us deal with the geographical and temporal distribution.
What do you think we get wrong in software development at the moment?
It's the design and organisation struggles I've mentioned. If I have built something a hundred times it's relatively easy to build it the hundred and first time - but most organisations are building novel things and we don't have good models for how we should build them.
There have been few studies of what hyper-productive teams really look like. Most organisations tend to build systems that model their organisations and their organisations tend to model their systems over time. Therefore when someone wishes to innovate there is resistance to change because this has been ossified by the form of the organisation itself.
I wish I'd been trained as a sociologist or a psychologist because many of the problems I encounter are not technical problems; they are social ones with a deep technical element.
Usability is always an issue, will we get the raising of abstraction to a level where people can intuitively use software?
If I took somebody from the 1800s and put them in this room now they would have incredible cultural difficulties because they wouldn't understand the things around us - your iPod, the projector and the like. But we are now birthing a generation of people who never knew a time when the internet didn't exist.
So while someone in the 1800s may know about the care and feeding of horses, for example, so it is true with someone born in this generation grows up surrounded by computers. There is a raising of the tide so that for the next generation texting, browsing the web and booting a computer is like turning on a coffee machine - feeding a horse as it were.
So in every generation this culturisation happens. It's part of a given environment. Is it the right one? Are the interfaces we see on the web and the like the perfect ones? There is no such perfect thing in engineering discipline but what we have is a result of historical, hysterical and emotional confluence. What it is, is what we have.
Software becomes part of the atmosphere and the usability we struggle with today will just become second nature.
BCS is pursuing professionalism in IT - what are your thoughts on this?
My life was saved by software. When my nephew died at age 20 I had a CT scan, which revealed I had an aneurysm. If I had been born a generation before there would have been no such diagnostic tools. So I relied on the skill of the medical staff around me and the technology. The CT scan and the software inside it saved my life.
I probably wouldn't have felt comfortable if that had been developed by a hoard of people who are just script-kiddies for which there was no intentionality in building that system. I'd probably be dead.
I'm a frequent flyer too. Most of the planes in which I fly and the air traffic control systems I depend on would cease to exist without software. So on a daily basis I put my life in the hands of people who have written software.
We are in an age of increasing, if not total, dependency of software. As that increases it calls on us to show increasing professionalism in our space. It would be unthinkable here in London to have regular reports on buildings falling down - and yet that's what happens in the software world. There are economic pressures that push organisations towards building software that is better, faster and cheaper. But we can do better.
In a way it's like what we saw at the beginning of the railway industry and utilities, in which there are lots of people pursuing it because of its potential for making money but not a lot of professionalism in the process.
As an industry we've struggled to define what it means to be a software developer. There are a lot of amateur developers, and I don't mean that in a derogatory sense, but there is a lot of software produced by people that haven't been trained. We owe it to the community to capture best practice. This will increase the level of trust the world has in our products.
So professionalism is key.
It is a tremendous privilege and responsibility to be a software engineer. It's a privilege because the things we do change the world; it's a responsibility for the same reason. The world relies upon us.
What about certification?
I'm mixed on the area of certification because we don't have a good grasp on the body of knowledge we wish to certify. There was an attempt at this with the software engineering body of knowledge by the ACM and others, but I left it disappointed because we couldn't even agree on what simple terms meant.
The International Association of Software Architects, of which I'm a board member, is attempting to find this body of knowledge.
BCS is celebrating its 50th anniversary this year. What development in computing do you think was the most exciting or ground-breaking in the last 50 years?
I can't pick just one. The public may identify one thing, such as the web, but as an insider I think the progression of our field has been the progression of science. More evolutionary than revolutionary.
People may point to the development of the web, but that is not a point in time. I had my first email address in 1979 via the Arpanet and Arpa published a little book, perhaps 15 pages, which gave everyone's email address in the world. We couldn't quite do that these days.
The web has been evolutionary. Similarly, let's go back in time. I was at Bletchley - first can I say thank you to the UK for inventing the computer - and if you look at Colossus we can look at the things going on around it and it's still evolutionary, not revolutionary.
Design patterns are the most important for me in the last five to ten years. The development of software has parallels to the development and maturation on other sciences.
Which past discovery would you have liked to have made yourself?
We have a problem attracting students into computer science - I understand it's the same in the US - what can we do to try to reverse that trend?
Earlier this year I gave the keynote at the ACM Conference for Science Educators and that very question was asked. I have tracked what the ACM, IEEE and others have done it terms of recommended curriculums for universities and it's clear that the problem starts very young. We in some ways alienate kids from interesting stuff in software and warp their minds.
Software in schools usually means knowing how to surf the web, get a broken PC up and working or install the latest patched on Windows. This is not computing. We are missing teaching the notions of awe and beauty.
Especially with regards to women in computing. Let's teach them how to programme a single person shooter game - well that's not exactly thrilling to half of our species.
So we have to start early to teach, not just skills, but the joy, beauty and awe of software. I love what I do - I don't need to do it, but I love it because of the joy and awe and beauty.
Vint Cerf thinks we don't celebrate the role models in computing enough.
This goes back to the handbook of software architecture. Along the way I'm interviewing the architects, because there's a tremendous human story behind all of this. In my life I could count maybe a half dozen people that I consider world class architects - people at the Gehry, Lloyd-Wright, Wren level and yet most of the world, or at least most of the people in our space, don't even know them, let alone celebrate them.
Microsoft had a self-serving book a few years ago called Programmers at Work in which they interviewed a variety of programmers who were mostly building Microsoft products. It was fascinating. There's a similar book out now called Beautiful Code from O'Reilly which begins to celebrate the lives of individuals.
There's this horrible stereotype of these geeky, smelly, poorly dressed people that sit in dark rooms in front of sticky keyboards. Maybe we need a TV reality show about developers and how wonderful they can be. Pitch it to the BBC.
I interviewed Linus Torvalds recently and we got onto the subject of Ray Kurzweil's singularity idea. He though it was over-hyped. What do you think?
I agree with Linus. In a recent lecture I projected ahead to 2031, coincidentally the fiftieth anniversary of the founding of Rational. In it I said that we as an industry are the antithesis of high energy physicists.
Richard Feynman did incredible lectures about what they do in their community, which is to tease out and make visible the rules and laws at a tiny level. In software we have intense complexity and are trying to squeeze it into a space so that it is invisible. The opposite.
So as I look ahead there will be increasing dependency on software but we want to make it disappear. Development isn't getting any easier.
But looking at Ray's issue, I don't know if consciousness is an accident of biology, but can I achieve the illusion of intelligence? Probably. Less so in where Ray is headed but more so in Marvin Minsky and Rodney Brook's direction, that one can achieve amazingly complex behaviour from a few simple things.
Will that cross the threshold into that singularity? Maybe, but it will probably take longer than what Ray has in mind. It's going to be subtly different. I have more computing power around me now than existed in the world about two decades ago.
I have half a terabyte of storage either on my body or beside here on my laptop. It's not going to go away - that will increase over time. I expect there will be a point in time, evolutionary again, where they become more tied to me.
Perhaps I'll carry glasses around with me that will record what's going on, maybe with facial recognition so that when I see you again I'll know who you are. These things would become an extension of my consciousness. I just won't see the boundary between me and these devices anymore.
Will we have computers that by 2031 will pass the Turing test? My guess is probably not, but we'll be pretty close. We'll be able to build programmes that will be able to simulate stupid Presidents.
Brian Eno gave a speech on generative music a few years ago. He liked the complex things arising from simple rules too, interestingly. Do you think we use software well in the creative arts?
It's created opportunities for new mediums of expression. My wife is a fabric artist and she increasingly uses her Mac and Photoshop to create her designs. We are seeing a generation of folks who are discovering the computer as a creative medium. In Austin, Texas there is a museum of digital art.
The software inside synthesizers has created the ability for untalented performers such as Britney Spears to produce vapid music more rapidly. Good side, bad side. But it's also allowed us to produce music that's quite interesting and striking.
Creative types will navigate to whatever medium allows them to do creative things.
I contacted Frank Gehry's company, who do some incredible buildings, and asked if they copyright their designs. They said no. They trademark them, but don't copyright because they make their money because they can build these buildings when no-one else can. Gehry has a software company and they sell software to their competitors.
His buildings could not be built without the software. They have 3-D modelling programmes and programmes for doing wind, earthquake and water analysis.
Who in the IT industry, or outside it, inspired you or was a role model for you?
There are people in the industry who inspired me. When I was 10 or 11 there was an article in Life magazine about a robot called Shaky and in it they highlighted the work of Marvin Minsky. I thought this was so cool. I knew at that point in time that I wanted to go into computers.
So I scoured the literature, of which there was not much in 1966, and I read several books on digital electronics. There is a British computer scientist called George Walter who built these little robots, so I was influenced by his work.
Age 12 I built my first computer, scrounging parts here and there. And here's the postscript: I convinced the Computer Museum that they should include software to preserve source code for future generations. So I relayed this story to the board of the museum and the curator said, 'turn around and look in the box behind you.' It was the original Shaky that had inspired my work.
Dr Minsky, Dr Brookes, Dr Hoare, Edgar Dijkstra - these are my heroes.
What recent developments by others have impressed you most?
I am continuously delighted by Apple and their ability to build wonderful products. At home I have banned PCs because I prefer to use operating systems that work. I have only Linux or Macs in my home network. I have a 2 Tb file server, two T1s that come into the house, devices that allow me to look at my security cameras from a distance... so I'm very, very wired.
If not in IT, what would you be doing?
I would have been an itinerant musician or a priest. I play a variety of musical instruments. My first instrument was an accordion, which at 15 I learned are not babe magnets, so I switched to guitar. I built a synthesizer and got into that until the mid 90s when I realised I was tired of booting my instruments to make music.
So I abandoned all of those and went acoustic. I've gone to the Celtic harp, the hammer dulcimer, the flute, the harp and I sing.
What books have you read recently and, without wishing to encourage stereotypes, who are your favourite science fiction authors?
I'm a voracious reader. Recently I built a house with my wife because we rented a room for books. On my latest trip I've read Middlesex, the Girls of Riyadh, Unveiling Islam, Myths of the Ancient Greeks, the Gods Must be Crazy and I read a book on Colossus.
In terms of science fiction I love the classics; Asimov and the like and Terry Pratchett. I'm a Monty Python fan too. I also read physics books and maths books for fun.
In films I'm a James Bond fan, I also love a good chick flick and a good cry. I was delighted last time I was here because Drew Barrymore and I shared an elevator.
Just going off at a tangent briefly - Asimov posited the science of psychohistory, predicting the behaviour of mass populations statistically, any chance?
There was a play called a Search for Signs of Intelligent in the Universe with Lily Tomlin where she has this line 'reality is just a collective hunch.' So insofar as we can identify what that collective hunch is then we're well on our way.
Mac or PC?
Let me think... I was an Apple 2 user and I have never willingly bought a PC.
Are you a geek or a nerd?
I don't the know difference between the two. I'm a renaissance man because I have a lot of interests. I think I was born in the wrong century. I think I would have flourished in the time of the Renaissance - of course I'd be dead by now, but I would have had a smashing time.
Smartphone, PDA or iPhone?
I carry a Samsung phone because I travel so much internationally and I need a quad band phone. I would love an iPhone but it doesn't serve my needs for travel. I carry a Palm as well, and I used to carry a device that fused these together, but the technology changed at different rates so I decided to get a good separation between the two devices.
How would you like to be remembered?
Apart from for the invention of fire? As a kind and gentle man - that's enough.
One piece of careers advice?
I've mentored six people in IBM, so I do this a lot. What I say is follow your passion, because if don't you won't have any fun and if you're not having fun you should be doing something else.