Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

My supervisor is allowing my team to dip our toes in the water of working from home. Considering a recent aquisition of another company is requiring some employees to love this new idea which will hack up to an hour off their commute into work every morning, I really want this to succeed. In order to make it a success, we need good tools to make our lives a lot easier. We currently are set up with OpenVPN, and Team Foundation Server 2010 with SharePoint 2010, and use Live Messenger (for SharePoint integration and easier remote desktop) for IM. These are just what we use (and they are currently working well) , but you can suggest other products.

So, what are some great tools that will helps us collaborate, communicate, and generally work together when we're hours apart?

share|improve this question

closed as not constructive by gnat, Kilian Foth, GlenH7, Walter, Yusubov May 28 '13 at 19:43

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance. If this question can be reworded to fit the rules in the help center, please edit the question.

Basecamp from 37signals. –  spong Sep 28 '10 at 17:59

12 Answers 12

up vote 12 down vote accepted

We use Skype and Team Viewer for remote communication and pair programming. Both have free versions, but Team Viewer's license means you should pay for it if you are using it for commercial use (it's not too expensive).

In terms of project and code collaboration, we use Assembla. With its wiki, ticketing system and hosted SVN repositories, it's the perfect way for us to run a project with distributed team members and customers.

share|improve this answer
+1 For Assembla and Skype. –  Ryan Hayes Sep 28 '10 at 18:10
+1 I've been trying out a lot of the remote viewing tools for both client (tech support) and programmer (code review and help), and have yet to find one on par with TeamViewer. –  Thomas G. Mayfield Sep 28 '10 at 18:14

Google+ Hangouts

I'm adding this as I've had a lot of old colleagues and friends from my user group use G+ Hangouts for scrum meetings and general discussions between their remote teams. Best of all, it's 100% free.

enter image description here

share|improve this answer
But do you wear sombreros to your scrum meetings? –  Wyatt Barnett Jul 22 '11 at 21:57
I'm in the camp that believes sombreros boost team morale and increase productivity. :D –  Ryan Hayes Jul 23 '11 at 2:07
Sombreros are The Agile Way. –  Dan Ray Jul 25 '11 at 12:13
+1 because it works quite good, -1 because it doesn't work with Google App for Business accounts yet. It's allegedly coming Q3 venturebeat.com/2011/07/22/google-plus-business-profiles –  vartec Jul 25 '11 at 12:22

I would add Live Meeting to your list. It'll be nice to share your desktop for code reviews or when you want to go over something with another deveopler or do a demo. We use it all the time.

share|improve this answer
+1 We use Microsoft's Office Connector (Essentially Live Meeting and Messenger in one) at work. The multiple screen sharing and conferencing has been flawless. –  Ryan Hayes Nov 5 '10 at 12:03
+1 for Office Connector. We use Micrsoft Lync at work (newer version of Office Connector) and it works very well! –  Niklas H Jul 24 '11 at 18:07

I make extensive use of LogMeIn.com - so I can connect to my desktop dev pc from home. That gives me pretty much all I need - best bit is that it supports multi monitors, and free for a single computer.

share|improve this answer
+1 I use LogMeIn a lot. Ridiculously great product, especially the free edition. –  Ryan Hayes Sep 28 '10 at 18:09

Don't neglect the basics:

  1. A real landline telelphone. The pitiful voice quality of cell phones is only justified by their on-the-go nature. When you're sitting still, use a landline.

  2. Any kind of IM might be helpful. Try to stay portable. Sooner or later, you'll find yourself doing something non-Microsoft, in which case you'll rue the day you went with "Communicator" or whatever that thing si.

  3. Email, reliable, non-Exchange email. Reasons? Same as #2. Sooner or later, you'll want to do something non-Microsoft.

  4. Static IP addresses, and preferably even DNS-names for web servers running out of the home offices. You can run wikis, bug trackers, etc etc etc on them as you need them.

share|improve this answer
+1 for landline, but how do you solve a problem where the remote team is seated near a speakerphone and you can't hear them clearly when they turn their heads away from the phone suddenly while speaking to a team member next to them or when a team member is a bit far from the phone? Can't keep saying "I didn't hear you" every 30 seconds. –  Nav Oct 14 '12 at 18:15

We use Webex, Livemeeting for desktop sharing, presentations and meetings. Our MS Office Live communicator is configured for Voice calls also and we use it extensively to have one to one conversations. We use company provided cell phones for meetings/conferences.

Personally, I have vonage world VOIP service with unlimited calling ($25/mo plan), which helps me call team members who are in different parts of the world as well.

We use sharepoint wiki to share documentation and bug ticketing system with shared queries to discuss defects.

Our datacenter has all our development/build/test VMs and we use our laptops as just terminals. Some of the VMs have common username/passwords and is used by Dev/QA teams which help to debug problems.

share|improve this answer

I worked on a distributed team for a while -- Here were the tools we used:

Skype/Conference Calls SSH/Screen/Vim IRC

Everyone used screen on one of the servers, and edited code in vim. People would skype to pair program with eachother, and log in to a shared screen session. It actually worked pretty well -- you just had to remember to verbally trade who was driving.

For team meetings, we would do the same, but with a conference call. The meeting leader would open the meeting minutes in a text editor, and walk through them while taking notes, and everyone could see it.

We kept an IRC channel open that everyone idled on. We used a private server.

share|improve this answer

GoToMeeting is really handy for remote code reviews and such. Google Docs + any given voice solution is pretty decent for collaborative document editing as well.

share|improve this answer

windows live messenger (msn), skype, office communicator, cisco vpn (or any), webex, cellphones (so people have the same phone number whether they're in the office or not), and a good dose of trust. Having a personal budget for employees to set up a home office can help a lot too. You want them to have furniture to work from there that's on a par with what they have in the office.

share|improve this answer

I recently wrote a blog post about this that you can check out - http://technikhil.wordpress.com/2012/02/20/distributed-development/ In the post I detail some tools and techniques that are relevant to your question which I'll list out here -

  1. Reliable and fast internet is an absolute must and its not that easy to get – at least where I come from (Trivandrum, Kerala). Ask if the person you are working has a backup power supply and a good internet connection. In terms of power supply, the need for one depends a lot on the place the person is working from – if it’s a big city then usually a UPS that provides an hour of backup should be fine, unless there is chronic power problem. In smaller towns and such, they might need to have something more substantial like an inverter or a portable generator. Modern laptops with their longer battery life and portability are a major help since they allow one to ignore smaller outages and coupled with the appropriate wireless or cellular data connection can even allow you to simply shift your base of operations to other places with power and internet.
  2. You need to have an open channel of communication during the time of overlap while you are working – this can be as simple as an open IRC (Internet Relay Chat) channel. We use Skype at work and I think the ability to call or video chat on demand make it far superior to IRC. Another option to explore is to use something like a Google+ Hangout while you are working – obviously this will mean the both you need to have reliable high bandwidth internet. Paid options for software tools are there as well like Microsoft Lync which may be a more integrated solution if you have a Microsoft based IT infrastructure with Microsoft Exchange. There are variety of communicators and tools out there to tryout – have a look at this link where Scott Hanselman provides a deep dive into the communications tools available for remote workers.
  3. Schedule regular meetings and get togethers in the real world. If this means that someone needs to travel somewhere from time to time, consider that the cost of doing distributed development. I would consider this an investment in the team’s productivity and efficiency. When everyone has met in person and worked together on issues, you build up mutual trust and respect. In my year of working at Bang the Table, I think we have had get togethers at least once every quarter. Sometimes we just got together and spent a few days simply working together with no other agenda, sometimes it was a conference or a training.
  4. Distributed development tends to work well with relatively flat and simple organizational structure. The idea is that everyone should feel equally invested and responsible for the software project. The challenge of course is that this particular setup does not scale very well and can be problematic for large organizations. If you are in large hierarchical organisation try to see you can isolate the distributed development group a little bit and create a flatter more informal structure within it.
  5. A good online project management tool is a must to ensure you are heading in the right direction. We are constantly trying out new tools for this part of our development. I have found JIRA to be good for support and task based work while, I am liking Trello for more open ended new development.
  6. At work we use a Rackspace server as a development server and for testing. This is a machine on which we stage our commits from our local machines and have our testing done on. Having a machine to deploy your code on also forces you to test it in the right environment and also brings deployment considerations into your design and development schedule.
share|improve this answer

Disclaimer: I'm on the Yuuguu dev team.

We at Yuuguu (http://www.yuuguu.com) all work remotely to develop our own software. Yuuguu is cross platform and has built in VOIP & instant messaging along with presence (is Bob at his desk/busy?). There is also a teleconferencing service available if an internet connection isn't present or is poor quality so you can join in a session from anywhere that has telephone access.

Yuuguu has one:many screen sharing so we can hold presentations or if it is just two of us together we can use the built-in remote control for pair programming or reviewing code.

As we "dog food" our software, we have ensured that the screen sharing compression features 1:1 pixel mapping so you don't lose text clarity which, for developers, is, in our opinion a vital consideration.

share|improve this answer

Use a distributed version control system: git mercurial fossil

Along with that, use a bug tracker/project management server: redmine bugzilla trac fossil

Along with that, use a wiki: dokuwiki fossil

Many of these things can be downloaded as prebuilt virtual appliances for the company server/ or the cloud: turnkey linux

For communication, you have wiki/bug tracker and email/phones/irc. For collaboration, people using a DVCS can push personal branches to each other directly.

share|improve this answer

Not the answer you're looking for? Browse other questions tagged or ask your own question.