Sunday, 31 January 2010

Company-Wide IRC Style Chat & Messaging

The big thing that I’ve missed at my current client is the lack of a company-wide IRC style chat or messaging system. I work in a team of 6 and we are all relatively new to the company. Even though we nearly all sit together, we still use IRC as a collaboration tool to simplify broadcasting those temporal messages like “I’m going to restore the database in 5 minutes” or “bouncing the XYZ service because its gone AWOL”. It also has that Channel 9 feel that helps promote transparency to our managers. But it’s only our team using it. Maybe other teams within the organisation have similar setups, but I have no way (that I know of) of finding out. Ideally we should all be tapping into the same IRC server and creating global technology and project level channels – exactly what was done at my previous client…

Mind you this system wasn’t in place when I joined it. The company was using email based “forums” (aka distribution lists) which are horrible to use - you post a question and get 2 answers and 500 Out-of-Office replies! The turning point was when the company dropped the email forums and pushed the IRC style client out to everyone (I believe it was optional before) making sure it ran on start up so everyone would notice. It quickly grew in popularity and even though I was unconvinced at first, I soon became a huge supporter when I discovered the global channels for everything from C++ to XML to Agile to D. Oh, and there was even an ACCU channel :-) In fact it was through the C++ channel that I found out all about the ACCU and ended up joining.

The main problem I’ve found with many Internet based forums is that the turnaround time on getting an answer was too long, and even then you probably ended up getting a n00b answer that missed the point. StackOverflow, which is a superb online resource that trumps nearly all others, is still not immune to this syndrome. The beauty of the company-wide chat was that you nearly always got an immediate response and you could explore the entire problem incredibly quickly because the time spent by all channel members was in the interest of the company. You also had the luxury of switching to the more old fashioned methods like the telephone or meeting face-to-face.

Even as a passive observer you got a real feel for what other teams in the company were doing, such as what tools they were using or what methodologies they were applying. In one particular case I was trying to get a more modern approach to unit testing the database code off the ground and I quickly found some allies trying similar ideas in other teams. We also used the chat tool to get a company-wide shared code repository off the ground to promote more reuse (or at least higher visibility) of in-house developed components.

Naturally there was one channel that was used for less business-like reasons, although it was carefully named so as to not appear to be for idle chit-chat, and by-and-large it wasn’t. The topics certainly weren’t about the business itself, but it was still mostly IT related and added value of a different sort – a much needed social element. We all knew that the channel content was persisted and that “The Powers That Be” could mine that information if needed, but that was probably all that was required to ensure conversations didn’t spiral out of control. That latter feature of persistence and the subsequent ability to find previous conversations through a web style service proved to be incredibly useful. Quite often you’d get similar questions and it was trivial to redirect that person to the search facility with a clue as to when and by whom it might have been discussed. Of course you’d have hoped they had done that first…

The main reason that I’ve sorely missed the company-wide chat at my current client is not to find out what the quality of the canteen is like but exactly because I’m working on a greenfield project and we have the ability to choose our technologies and practices. The “Email Fair Use Policy” is probably quite easy to find on the Intranet – assuming it hasn’t already been shoved in your face – but the details of what tools are proscribed for use in-house is often much harder to source. For example what SCM can we use? What version of Visual Studio? CruiseControl or Hudson? We wanted to find out what tool-chains other teams were using to ensure that there was a critical mass within the company of developers with those skills in case we got stuck. It’s also an excellent way to discover those people who seem to have their finger on the pulse and knowledge of what technical directions the company are pursuing.

I’m sure this isn’t an easy sell to the CIO/CTO as IRC doesn’t exactly have a good reputation – being lumped in with the other social networking pariahs like Facebook and Twitter - but I felt as though it made a significant difference to my work as I didn’t just have my own team collaborating with me but the whole company.