(720) 254-1546
vintagedigital [at] dogstar [dot] org
follow us on twitter @vintagedigital

Drupal Development With A Distributed Team

Most Drupal shops are highly distributed or scattered. This fragmentation poses interesting challenges. In my most recent job I was lucky to work in an environment that was almost entirely not distributed. This made collaborations with developers, themers, and project managers much simpler.

My life recently transitioned as I moved from being an employee to being a freelancer. In addition, I helped found a company called Vintage Digital (I'll write more about that in the future.) We're engaged in custom software development largely focused on Web applications. Mostly we're working with open source systems like Drupal. We'll be launching a little interim Website in the next few days, nothing special - just a place for us to blog until we have built a proper presence.

We've been taking small jobs to work through our process working as a distributed team. We're all in Metro Denver, but without an office we've been working in each of our home offices. There are a few lessons we've learned so far.

  • If possible, bring your team together at the beginning of the project. We're able to do that because we're all in the same general area. Having a face to face at the beginning to map out a strategy for the project will make for a smoother project.
  • Make sure that you have some kind of Intranet that you can communicate with your client and engage in internal communication. I've found that Open Atrium is a strong contender. Being a bit of a Drupal junkie, it was a bit of a no brainer. I wrote about OA a few months ago.
  • You'll need some kind of system to track time and tickets. Open Atrium isn't well suited for tracking time. I've become a fan of dotProject because it is feature rich and open sourced. I wrote three posts on dotProject recently.
  • You'll need some way to easily invoice clients. I've been playing with many different options ranging from Blinksale to GNUcash to Bamboo Invoice. I've used Blinksale personally since 1997 and have liked it quite a lot. The low cost options aren't quite robust enough for our little company but our needs aren't great enough for a full blown accounting system. BambooInvoicing is open sourced and has the features we needed.
  • You'll need some kind of synchronous communication too. IRC and Skype are good options. I like Skype because it is secure, allows you to transfer documents, supports group chats, and has voice.
  • Versioning Control - we use Subversion and take advantage of the fact that even the free version of Unfuddle allows you to have an unlimited number of repositories.
  • Database Sharing - what a pain. Setting up a development database that everybody can work against with his or her own code set is incredibly slow. When you have a group of developers in the same space sharing a database it isn't a problem. So, the trick seems to be to configure as much as you possibly can up front in a shared database. That DB can then be checked out by team members for the purpose of development. Any changes will need to be applied to the central DB for folks to check out themselves. In Drupal development some of the configurations can be wrapped up in Features.

Regular communication with your client is essential. Make use of phone, email, and your intranet. Document all conversations and track your hours obsessively.

dotProject can be used to plan your projects out - it will create gantt charts that you can use to visualize the project. More recently, I've been using OmniPlan to chart out projects. It is more of a drag and drop product that gives you, I think, faster control over sketching out your plan and making changes to it.

I think that the biggest lesson I've learned in this journey is that you have to work harder to communicate with your team when you are not in the same office.

Photo Credit: FelicityW on Flickr.
Crossposted from Dogstar.org