We're all remote

7 min read

Deviation Actions

dt's avatar
Many companies allow you to work from home, either full-time or a few days a week. Sometimes it's a privilege, granted to the top performers. Unfortunately this often leads to a situation where the "core team" is in a central office, and the remote developers are marginalized because they're not visible. In that case choosing to use your remote working benefits can be very bad for your career.

For us remote is just the way we work. The deviantART hq is in Los Angeles, and no developers live close enough to visit casually. I think the closest developer is in San Francisco. The nearest developer to me is about 250 miles away. Excepting the search team (who are based in Vancouver), to the best of my knowledge no two developers even live in the same city.

Now, this does come at some cost to us! We have to make an effort to keep our intra-team communication working, whereas a company with all their employees sitting next to each other gets a certain baseline for free.

How do we work?

We use Skype. A lot. The entire company communicates through a number of Skype chat rooms. Each team gets a chat, some topics get a chat, and all projects wind up with one. There's a trac install in use for issue tracking and wiki. Some teams prefer using Basecamp or other tools instead of trac, and they're free to do so.

As an earlier article mentioned all our scattered developers get a virtual machine running a functioning copy of deviantART to develop on, so they're not tied to development servers in a central office.

Agile development

We have a modified agile system in use, which has evolved over time to meet our needs, and works reasonably well for us. We tried standard agile methodologies, and found they were a bit awkward with a remote team. Pair programming or a scrum, for instance, just aren't the same without colocation.

Our system revolves around weekly iterations, of which we are on our 174th since starting this system.

Each week on Monday our teams demo their progress to each other and to their internal customers on one big demo call that everyone attends. The demos are short-and-sweet; 3-6 minutes is standard. The general format is "our expectations for this week were to do X; we did that / didn't do that; here's supporting information".

After the big demo we break off into team-specific calls where the lead developers and their customers work out the next iteration's expectations. Some teams will decide to iterate at a different rate for one reason or another; it's not uncommon to discover that you need to make a quick prototype or view the analytics on a quick change to decide what to do next.

Throughout the iteration it's up to the developers on a given project to decide how they communicate. Some projects wind up doing daily check-in Skype calls, others work entirely in text chats. Since we have developers in widely disparate time zones it's again up to the developers on a project to work out amongst themselves times when they're all available to exchange information; there's no standard "office hours" required by the company. (Though people do gravitate towards Pacific time, it seems...)

Project teams

A normal project consists of a customer, a lead developer, and 0-2 other developers. If it involves changing the site's UI then a member of the UI team is assigned to work with the project, because UI is hard. Similarly if it involves changes to our infrastructure then a member of the Tech Ops team may be attached.

"Lead developer" is a term which can mean almost anything in this industry. To us it means the developer whose job is to coordinate the work of other developers on the team, and to work out with the customer what the project's expectations are. The lead is still an active coder on the project; we've yet to have a project with enough overhead that a pure manager is required.

The "customer" can be almost anyone. We pick someone in the company who we think can represent the needs of the project. So on a purely technical project it might be someone in dt, for a new feature it might be the product lead who championed the feature, for changes to our print store it'd be someone in retail, etc.

Team size is flexible, and depends on the project. Some teams do wind up with just a lead developer, if the expected workload is low. However, we prefer to put more than that on a team to make sure that several people will go over the code produced.


We do have one long-running project team called Reactor. Its role is to fix bugs that aren't related to other active projects, and to implement features that aren't large enough to warrant spinning up a separate project. It's also where we assign all new hires initially, so its lead developer gets to mentor them and introduce them to our codebase. Reactor makes a good training ground since it's guaranteed to drag developers through disparate areas of deviantART.

Face time

Working remotely works well for us, but we like to supplement it with occasional face-to-face meetings to help make sure that everyone knows everyone else. When collaborating over Skype it's easy to just never interact with someone whose work isn't related to your area, after all.

Thus every year for the holidays deviantART flies everyone in to hq for our holiday party. We spend a week working a little and socializing a lot, to cement our sense of "team".

Particularly complicated projects may also involve getting everyone involved together in one place while the general shape of the project-to-come is hammered out. For instance, before the groups project launched in late 2008, the whole team spent a week in Canada debating what groups should be, and wrote the first prototype of the new profile page widget system while they were up there.

Better ways

A pseudo-regular activity in our off-topic developer chat is trying to find a better alternative to Skype for the text-chat portions of our communications. (Skype chat is great if you like the Skype client; if you don't then you're stuck with it anyway.) We've run through a number of options, but it's tough finding one which is:

  • non-technical enough for our non-developers
  • enough better than Skype to make it worth the hassle of switching everyone over

IRC is a common contender, but tends to fail on the latter point.

How have similar systems worked for you? Do you have a better pure-remote development methodology that we've not heard of?

© 2011 - 2021 dt
Join the community to add your comment. Already a deviant? Log In
3wayHimself's avatar
I'd suggest Discord (discordapp.com) for communications.

It's got all the features of Skype & then some as well as added user friendliness.
You guys should try Slack for team communication
I'm using it in my current job and it's really cool an clean.
:D (Big Grin) 
Perhaps check out Trello?
distrahera's avatar
I can recommend an XMPP client, works on any platform and lets you have control over the data being sent between one another. I personally like Pidgin and Jabber and Adium, the latter being my favorite.
DjennyFloro's avatar
Just looked at this today.
Well, have you ever considered TeamSpeak ?
It support all that you want, and if you make the server's log available, then everyone is provided with the whole information of what went on.

There's also another one which is even more efficient for teamwork, but I don't remember the name, I'll try to find it later on and add a sub-post to this one if I can get my hand on it. Actually, it's the one we used at our work when the team had to scatter, it did an excellent job and we're planning to use it when we will put in place the remote team for one of our project.
Kikio7th's avatar
What about webex?
Eddz's avatar
How many people work at the company? And what proportion is made up of developers? Thanks.
phpfour's avatar
I've had good experience with hipchat ([link]) for group chat with remote teams...best part it has good mobile versions (iphone/android). And a pretty decent UI.
nuckchorris0's avatar
I personally like to use deviantART Chat, since it's got a good user interface, it's rather natural, and it's also rather inobtrusive.

Plus maybe if you started using it more internally, we might see some bugs getting fixed ;)
Might I recommend Sococo Team Space? I use it where I work and it's actually a really awesome tool for helping our distributed team stay organized and communicate. Like you mentioned with every team gets their own chat- we do that too, but it all happens in a room. Easy to keep track of. It's got voice chat and screen sharing, so when we do our daily standups (we're Agile too) we can all look at the screen showing Unfuddle while still talking, and stay on the same page during the meeting about who owns which tasks. It's a pretty comprehensive communications tool- our team is happy with it. www.sococo.com
We have also a similar system in place here. We're all remote, customized Agile process, using Skype for voice communication, good old mailing list for text chatting and Acunote (acunote.com) for project management. We also took a daily meeting idea from Scrum but instead of stand-up, doing it sitting and talking by skype. Still works perfectly.
yoavf's avatar
You should check out [link] - this is what we use at Automattic for every project and team. It's a group style twitter/forum hybrid that allows (among other things):
- Threaded async discussions
- Archives and search enabled
- Tags
- Mentions (@username)

If you run the theme on WordPress.com you also get the added benefit of :
- email subscriptions
- Jabber notifications

And since it runs on WordPress, it's infinitely extendable and completely open source.
(We use p2 in addition to IRC/skype).
Our team di.fm is entirely remote as well, we experimented with chat apps like campfire and hipchat, but in the end we opted to setup our own Jabber/XMPP server (we chose OpenFire). So far everyone is very happy, virtually all clients support Jabber, it supports standard user to user chat as well as chatrooms (multi-user chat), and has the added bonus of placing all of our communication over SSL.
The combination of Skype + trac is very common, but they don't really play well together, and while trac is a decent issue tracker, there are better tools for agile development.

I like Pivotal Tracker ([link]) + Flowdock ([link]). Inside Tracker you manage your backlog and its priorities, and Flowdock gets notifications about everything that's happening in Pivotal Tracker. Flowdock integrates will with many other systems too, and it's easy to use.
HipChat is built expressly for the purpose of moving teams from disparate public IM services to a common, private, controlled service. The UI is nice, the desktop application is cross platform, and it is feature rich with a low learning curve for the !dev folks. [link]
We have a very similar remote workforce and we all pretty much hate the skype client, so we use our own jabber server and chat room(s) for group chats. We have written a custom (small) application to allow all devs to browse the group chat history. This has been very useful for devs spread around the world in different time zones.
HipChat was built for the express purpose of migrating IM function off of disparate public protocols and onto a private, controlled service. It's cross platform, and integrates with desktop notifications. Simple, easy to understand UI. [link]
Itti's avatar
Who are the search team and what do they do?

I really like hearing about these things, keep 'em coming!
SanguineEpitaph's avatar
This sounds distinctly like my high school. :B Project-based, 21st-century learning for the win!

Sounds like it'd be a fun career. :nod:
Pickley's avatar
You could just use dAmn. Maybe it wouldn't fall over every second day if you relied on it?
electricjonny's avatar
I think the dA chats would need a lot of work before they could replace Skype. For one, if you aren't in the channel, you can't see messages posted while you weren't there. That seems the be the most limiting thing and one big reason Skype is better.

If dA chats could keep a log of EVERYTHING that was said (without the need for a bot) it would be close, but still, not sure if depending on a web browser is the best thing there.
Pickley's avatar
Well they could implement a system quite easily to show the user of the chat the last fifty messages before they joined or similar.
electricjonny's avatar
Yeah, seems pretty doable. But I bet adding something like that won't happen till the dA chats hit version 1 or whatever the next version is.
Pickley's avatar
Lol, you mean when they actually touch dAmn other than maintaining it?
Join the community to add your comment. Already a deviant? Log In