How Code Enigma uses the Internet to manage a distributed team.
In our previous post in this distributed working series we introduced some of the commercial reasons why we have a distributed model here at Code Enigma. This is one of a series of follow-up posts, going into more practical detail about how we achieve effective communications and management of a distributed team. This particular post provides an overview of the technology we use to communicate. Google Google Apps is a fabulous service, as most of you probably know. We use Google Drive to create and share documents amongst our team and our clients. Drive shared directories offer huge flexibility, allowing us to have fine-grained control over who can access what. Obviously we have mail, managed by Google, and we also used the integrated Google Calendar features extensively for managing things like conference line bookings, holidays, scheduling maintenance, as well as people’s personal calendars. And then there are Hangouts. With Google+ being knitted into all Google Apps accounts, in comes Google Hangout, which is a revolutionary shift for us. While before we always had catch-up calls via our telephone system and I, personally, spent many hours on the phone, these days most of those phone calls have been replaced by Hangouts. Being able to have multiple people join a video call at once, have a chat as though you were in the same room, the fact the compression is so high it even works in full-on ‘high bandwidth’ mode on poor (1MB ADSL in the French countryside!) broadband connections (one wonders why they even bothered with a low-bandwidth option). We even open Hangouts just to work collaboratively together - we might just be getting on with our own work, but having a Hangout open so you can simply shout across to someone to ask a question is so handy. Well, it’s like having an office! (Worth noting, some developers use Apple Facetime instead of Google Hangout to keep an open channel while working as a pair on a project.) Telephones Sounds like a simple enough thing, everyone has a phone, right? But we want everyone to have a work phone. They won’t want to share their home phone number with all our clients or put it on their business cards. They also won’t be too popular if their partners, kids, parents can’t use the phone because they’re always on it for work. So we have a Voice Over IP (VOIP) telephone system, provided by Orbtalk via a managed Private Branch Exchange (PBX for short) which is responsible for routing the incoming calls to the right extension. An open standard called SIP is used for the phone networking (connecting each phone to the PBX) and digital audio delivery (the handling of the actual sound of the voices). This is pretty standard, we’ve never come across a VOIP provider that doesn’t use SIP, except for some closed systems like Skype (which we stopped using because of inconsistency of call quality). We purchase a block of London telephone numbers which Orbtalk then assign to our online PBX management portal. We can login to our PBX and set up extensions for people, meeting rooms, reception menus, queues and more besides. We can report on phone usage, everyone has personal voicemail, we can configure how the call recognition behaves, all manner of neat features (most of which we don’t actually need to use). We also purchased a whole bunch of Siemens VOIP handsets. They cost about £50 each, we configure them and post them out to staff, who simply plug them into their Internet routers and then they have a company phone with its own direct dial. (Actually, to be completely honest, sometimes we have to alter the configuration of the router to open the ports SIP needs in order to operate and that usually requires some screen-sharing and the eyes of an experienced IT technician - worth bearing in mind - Orbtalk will support you if you need though. They have a paid-for set-up service, though we don’t need it.) I admit, Orbtalk are not the cheapest provider - but we’ve tried a couple of the cheaper ones and, frankly, Orbtalk just works. We almost never have any outage, support requests are promptly dealt with, and our customer satisfaction level is high. We’ll pay a little more for that. WebEx Sometimes you need to share your screen with others when working remotely. You can do that with Skype, but we already said we don’t use Skype, and as soon as there are multiple locations it falls down. We experimented with VNC, an open source screen sharing tool, but we could never get it to function reliably without some technical intervention. So we finally turned to WebEx. It’s a product by Cisco for remote desktop sharing, meeting recording, VOIP services, etc. We don’t use the VOIP services, but we use the rest and it’s a good system. You basically schedule a session with the WebEx administration page and it emails the attendees with the meeting details. They can then ‘join’ the meeting via a link in the email. If they are attending for the first time then it will almost always need to install some software, but that always goes smoothly enough and we have no real problems. We have a single account that we share with everyone in the company, and we use a Google Calendar for booking the use of it. Why WebEx instead of some of the competitor products, such as GoToMeeting or BT MeetMe? Again, it comes down to quality of service. We found the other services do not work properly on all Linux distributions, in spite of their claims to support Linux. They might be fractionally cheaper, but in our experience WebEx just works while the others do not. We never need fear someone cannot access a WebEx meeting, we have confidence in the service. IRC Internet Relay Chat is almost as old as the Internet! It’s a very simple chat server, open source so you can install it yourself, it supports chat channels (or ‘rooms’, if you like) as well as private messaging. There are countless ‘bots’ available for all manner of software, for example, our server monitoring software reports directly into our main chat channel, as does our continuous integration software, informing us if software builds have failed or succeeded. When we are not in Hangouts, we are in IRC. Not only is it a useful forum for chatting about things, quickly asking questions, pinging people, reminding people, delivering important information in real time, it’s also like the company watercooler. We chat, we joke, we share funny things from the ‘net, all important stuff for building a sense of community and team relationships. Our company IRC server sits behind the company Virtual Private Network, so it is secure and encrypted, to ensure our conversations remain private. OpenVPN Which leads us nicely into the Virtual Private Network (VPN) itself. Obviously, data security is important. As an agency serving other businesses, even if we don’t really have any particularly sensitive data of our own, we have to respect the data given to us by third parties. We also have to make sure the servers we use to host websites for our clients are well protected. Our VPN helps us achieve this. Plus more. A VPN is like having an office network in your office building, but one that can spread out across the Internet and still be a trusted source. This is achieved by ensuring only people with valid credentials can access the VPN and also ensuring all traffic transferred over that VPN is encrypted. With the VPN we can control access to our services, such as the IRC server, our ticketing system, etc. We can also do things between our computers, such as share drives across networks or print to each other’s printers, securely and safely. When our staff fire up their computers, they are all configured to automatically connect to the VPN (most of our people use the proprietory VPN client, Viscosity, which we would recommend, because it is very cheap and so easy to use - but this is not obligatory, there are good free tools as well, though at a certain price point it is not worth percevering with inferior free tools and we feel Viscosity is priced at that point). Once connected, they can access all our systems and services. There are other tools in place for managing who can access which services, of course, but that is beyond the scope of this post. Redmine This is an open source ticketing system, but because you can create your own ticket types and fields and there is a whole host of pluggable ‘add-ons’ it is extremely versatile and powerful. We use Redmine for client communications, capturing feature information, support ticketing, project planning, bug fixing, all manner of different communications requirements. It allows us to have a single, simple user interface for all things, so our people and our clients can get familiar and feel comfortable with a single interface, not learn multiple tools. It also allows us to capture all our data in one place, so there is no hunting around. Sometimes more detailed explanations of tickets, technical documents, etc. may be linked to in Google Drive, but the ‘stub’ - the meta data - the conversation, this is all captured in Redmine. For everything! Gitorious Being a distributed team of developers, of course we need a central place to keep the code we are working on. We use the Git version control system (VCS) - more specifically, we use Gitorious, which is a management interface on top of Git, to create, group, manage, control access, merge code, etc. within the different code repositories. Gitorious is a bit like the hosted solution you may be familiar with, GitHub, however Gitorious is open source so we can run our own Git server with a Gitorious interface on top. Why not GitHub? Well, for one there is a hard limit on the hosted platform of 250 repositories. Since we do not want to ‘delete’ repositories ever if we can possibly help it, a busy web agency could use those 250 repositories in a few short years. Where then? GitHub for Enterprise, which costs approximately the firstborn child of every company director. While Steve might have agreed to those terms, my kids are young enough that I’m still quite fond of them, so that’s not an option. That leaves us with assorted options, Gitolite, Gitorious, GitLab. To be completely honest, with the benefit of hindsight we probably would’ve been better off with Gitolite, which provides for all of our access control requirements without the rest of the code management tools Gitorious entails. At the time we made the call, we thought we would use the code review tools of Gitorious, but it turns out the workflow doesn’t really work for larger teams so we stopped using it and reverted to a simple Google Spreadsheet with commit numbers and review notes. That means most of Gitorious we don’t actually use, but we’ve set it up now and it works, so we’re not inclined to change it any time soon. In short, review all the options carefully and consider whether you’ll really use the features on offer before selecting a VCS platform. They often come packed with neat options, but if they are surplus to requirements you could keep your life far simpler. Another service to consider is BitBucket, which is based on a similar business model to GitHub, but has a more competitive pricing policy and doesn’t have a silly 250-repository limit applied to any account. It’s priced by connecting user, not number of repositories, which would work far better for most agencies. - And that’s about it. We use a variety of other tools for various purposes, LDAP for user management, single sign-on and access to services, Jenkins for deploying code, Xplanner+ for project management metrics, etc. but in terms of the tools we use specifically to collaborate, that’s the lot. Hope you found it useful.