Being able to communicate with everyone on the team is one of the keys to getting a project to production. Even when everyone is in the same office, chat seems to be easier at times (somehow). In my years of development experience I've used an array of communication tools. While some have been proven worthy, others just need more time in the oven.
Everyone has their preference on chat clients, but I'd like to stick to the features of each here. Skype is the elephant in the room that everyone has an account for and yet so few use it, so let's start with it. My favorite feature of Skype is screen-sharing. When working with remote developers nothing compares to looking at code together when one of you has hit a phantom bug. Having the ability to go through code at the same time, no matter where you are and point to lines or code snippets greatly accelerates the process and reduces frustration. While I admit it is great for voice and video chat, it has limitations. A while back, Microsoft tried to buy Slack and that integration into Skype would have been perfect. But until Microsoft integrates channels and other apps into their product, they will remain behind.
If it's simply voice and video chat you are after I would not suggest Facetime or Facebook. Facetime is proprietary to iOS devices and let's not get started down the Apple rant path. Even as an iOS developer, I got away from those devices as my primary phone, so when somebody wanted to Facetime us we had to see if our iPad/iPod were even charged, thus delaying the call. Facebook has issues with quality, just to put that out there. Everytime I've used Facebook video calls recently I've had lag issues that I do not experience with Skype. Let's put Facebook calls in the cooker for a bit longer and just use Skype.
The more popular chat clients right now are Hipchat and Slack. They both offer integrated applications to get your team even more organized. I especially love that you can create a channel for a specific purpose, like code commits, and then link it to Github or Bitbucket that create automated posts for things like merges or pushes. The only drawback to this is your team will get numb to notifications for those channels or any channel really, but don't worry you can mute a channel's notifications.
While Slack and Hipchat both offer video and voice chat, Hipchat offers screen-sharing. I'm hoping this will come to Slack soon, until then I'll use Skype for that. Right now this is the only feature that sets these two apart. They both have searchable archives, file sharing, encryption, guess access, etc. Aside from screen-sharing, the determining factor is price. We currently use Slack for free, but once you hit their size limit or want more archives, then there is a pay wall. With Hipchat, you can opt in to the paid account if you want group calls or more file storage. Hipchat is by far the least expensive of the two, and it gives you more for free. Though with Slack you can have multiple teams that you can easily switch between, making life easier and more chatty.
There are other communication tools out there and while they may do chat okay, they are either expensive or are a different type service that decided to also offer chat. Some of these like Basecamp or Bitrix24 will get you the basic communication you need for the team, but they've left out some of my favorite features. Now, how they do with task-tracking, well that is a rant for another day.
If it's a basic chat client you need, then you have endless possibilites. If you are on a mad hunt for an effective team communication service, then look for one that allows you to integrate with other services you use as well as one that provides the basic needs of file sharing and archiving. Our team is currently using Slack, with channels that are linked to our task tracker account and Bibucket, so that we get updates even if a certain service doesn't support push notifications. Did I miss any of your favorites? If so, leave a comment below! :)