Saturday, June 11, 2011

About online collaboration

A long hiatus again, almost forgot I even had this blog. The more experienced I become in the world of IT, the less interested I seem to be of the latest and greatest stuff. Of course I keep my eye on the new tools and technologies, but increasingly I find myself looking in the past of IT, to the age when thinking wasn't still polluted with all the things we take as given now.

I've watched Doug Engelbart's Mother Of All Demos recently and if you disregard the bad picture quality, it's simply mind-blowing what he and his team were able to come up with in 1968! That's 43 years ago and we're still not quite there yet.

In my understanding one of the main ideas of his research back then was to augment human thinking with the help of computers. The route to this, in his view, was mainly achieved by good real-time collaboration tools like audio/video-conferencing and real time collaborative document editing among other things.

We've had wikis for some years now, but let's be honest: most of them aren't that great at real time collaboration. Then we have a plethora of different kinds of messengers and Skype of course. And then different sketching tools for managing complex abstractions (like software design). But none of these provide a unified experience.

The closest we've gotten so far was with the failed Google Wave. We still weren't ready for it I guess, but I'm willing to do a small bet that the idea will resurface somewhere in some form. Back when I first saw Wave, my first thought was "wouldn't it be awesome to have a programming environment based on that idea". Maybe something like the apparently dead Code Bubbles project combined with Wave's real time collaboration.

Sadly we're not only restricted by missing technology. A big obstacle in the ways of efficient computer-aided collaboration is company policies and general reluctance to collaborate online. There are exceptions, like the previous company I worked for, Ambientia. While working for them I had possibly the most advanced online collaboration experience so far.

First a bit about their company culture. They're a mid-sized IT-shop, but scattered into multiple small offices. Also their headquarters are "off-site" to most customers which seems to promote more liberal thinking regarding physical presence in the lines of: "Oh, our customers are 100km away anyway so how can we demand that all employers sit in the same office all day". Instead they've become completely transparent to physical location. Every employee is in Skype and roughly 90% of their internal communication happens in project- or topic-specific persistent chats or ad-hoc audio meetings in Skype. The amount of email was minimal.

Anyway, I had the task of designing a UI for a small software with the help of a user interface specialist. Here's how it happened: We went to the project's Skype chat and agreed that we'll need to do something and we can do it now. That turned into a Skype audio chat (video is totally unnecessary for most things) and after a brief discussion we decided to do the design in real time collaboration. We had Confluence wiki with Balsamiq-plugin installed and we agreed that he would be the one doing the drawing. He shared his screen in Skype so I could see in real time what he was drawing and when we had an intermediate version, I could go check it in Confluence right away and add my modifications.

The point to take from this story is that in my experience our one hour online collaboration session was more productive than if we had been sitting face to face. Why? No need to reserve meeting rooms or time, because of location transparency all of it can be done ad-hoc. Another reason is that this toolset made us focus more on the actual task. And most importantly, all this was much less intrusive then a full blown meeting. He could attend another meeting in another city that day and I could stay home with my kid who was sick.

As much good as agile movement has done for the software development world, in this regard its taken steps back. Nowadays it seems to be the norm that we set up a scrum team and force them to sit in the same room 8 hours a day and forget all about any kind of online collaboration.

Here's an idea for the employers out there: use agile, but sacrifice a bit of the efficiency and give your employees freedom regarding location. This way some very talented people, who otherwise might not be interested in working for your company, might take the offer. And you get to extend your hiring anywhere in the world, time zones considered.