It is well known that Intridea has maintained a distributed development team since our inception in 2007. In the three years since our inception we have grown from 2 founders to nearly 30 “employees”:http://intridea.com/about and one thing has always remained the same: Intrideans are encouraged to live and work from the places we call “home.� This is a serendipitous opportunity, made possible by a combination of technology and gracious managers.
The Rails community saw a surge of companies that were either entirely virtual or at least offered their developers the opportunity to work from home. For some reason the landscape of the agile Rails shop has changed in the last couple of years. And in the wake of what appears to be a declining number of software companies with remote teams, I’d like to take some time to share our strategies for how we make it work so well.
There are three major components to having a successful team of distributed software engineers: talent, autonomy, and technology.
Talent: If you are going to have a team of engineers working from home you’ve got to know that they are incredibly good at what they do. Talented engineers write good code, which turns in to great products, which leads to happy clients, which results in success for the company. Finding the good talent starts with word of mouth and ends with a thorough interview process. You want to find driven and self-motivated people that will work well without a lot of management. When you do secure talented engineers, first give them the tools they need to succeed and then give them some space to rock out.
Autonomy: This is where autonomy comes in. Micromanaging can cripple even the best developers; so allow them enough room to be able to do what you hired them to do without a lot of interference. Talented engineers love what they do and they don’t need to be micromanaged in order to get their work done. Treat your team like adults, not like juveniles and they will reward you by exceeding your expectations. Giving them a reasonable amount of autonomy shows them that you have confidence in their abilities.
Technology: Remote development teams would not be possible without the help of technology. There are so many great applications that make remote communication and collaboration possible. At Intridea we make use of several applications that help us to work together:
* “Present.ly”:http://presently.com/ is our most critical day to day application for communication. It is where we exchange general ideas, information, ask questions, and even joke from time to time. It’s the cohesive medium that brings all of us together in the same space each day. Present.ly is our virtual office. When we start work for the day, we hop in and make our presence known. When we step away throughout the day to get lunch, grab coffee or make dinner then we usually update Present.ly to let our colleagues know where we are. When we return from being away, we give a quick “back� to let everyone know our status.
* “Campfire”:http://campfirenow.com/ is a well-known application that allows for quick and easy collaboration. It provides a virtual “room� for developers and clients to talk about the project they are working on. Potsiadlo describes Campfire as the application we use for “getting down to business.� It is an effective tool for direct collaboration on a project.
* Instant Messaging and Email is a basic, yet important tool that we use to ping each other directly for specific answers. Two developers can use IMs or email to hash out some details or go over a basic problem.
* Phone/”Skype”:http://www.skype.com/ /”GoToMeeting”:http://www.gotomeeting.com/fec/: Sometimes you just have to pick up the phone, whether it’s to speak with a client, talk through a problem with a fellow developer, or to get in some voice time with your co-workers. There are a lot of great applications for web-baed communication but sometimes you can’t beat the efficiency of voice.
* “Unfuddle”:http://unfuddle.com/: Our ticketing and project management system is what enables us to get actual work done in a seamless manner. Tickets are created by breaking up tasks into small chunks and are color-coded according to their priority level. Unfuddle allows us to run crazy custom reports and create custom fields that are searchable and sortable. One of the coolest features of Unfuddle is the powerful commit messages that “now parses incoming commit messages and appropriately resolves, closes, reassigns or comments upon tickets within your project.� A project management system is critical for any development team; but a great system like Unfuddle is an absolute must for a remote team of engineers.
At Intridea we utilize all of these tools (and many others) to maintain a rock solid team of distributed engineers that can produce high quality code at an incredible speed. Although most of our engineers work remotely we find that having a central office is a valuable asset to the entire team. Our office in DC serves as a space for local Intrideans to gather regularly and a place for out of town Intrideans to meet up when they visit. The office is also a good space to use for project kickoffs and to coordinate our local engineers when they go on site for clients.
Intridea works hard to find great talent and to provide them with the freedom, autonomy, technology, and respect they need to excel. We hire experts and treat them as such. As a result, every Intridean gets to wake up in whatever part of the world they call home. For many of us, “home� happens to be near our main office in DC. But many of us prefer waking up in Maine, California, Kansas, Georgia, and even China. Being able to work from one’s preferred location creates happy developers. And happy developers are more likely to be loyal and to write beautiful code that helps to ensure the longterm success of your company.