Developers today have an astounding number of tools at their disposal to help them in their work. We’ve already covered the desktop tools we use every day to build great sites and applications for our incredible clients, but increasingly we’ve found ourselves using some really great online, subscription based tools to get work done. Here are some of the best that we have found.
As a 100% distributed team, we know that effective communication is what makes or breaks a project or a client relationship. Slack is a communications tool that teams use to communicate and keep organized. It’s great for quick questions when email might be overkill, as well as sharing code snippets or screenshots. They’ve recently added voice and video chat as well, which is wonderful when the typed word just won’t do.
Incresingly, we’ve found that our clients also love Slack; Many of them communicate with us exclusively through client-centered channels in our own Slack group. Phone calls are wonderful, but we’ve founds that our clients love knowing that they can fire us quick questions when it’s convenient.
It’s worth noting that they also acquired the amazing screen sharing application Screenhero, which we discussed in our last “tools” post, so I would expect to see even more great collaboration tools coming to Slack soon.
If you’re not using version control, you’ve got big problems. We’re heavily reliant on the Git source control system and use it to keep track of all changes on all of our projects. Git is especially great because it works completely independently of any centralized repoistory. However in order to take advantage of the collaborative benefits Git gives you, there needs to be a shared place where code is mutually stored. To synchronize our changes internally while working together on a project, we check all of our changes into our GitLab organization account.
GitLab is far more than just a conduit for change management, though; We use it to track project issues, chart out project milestones, and plan out feature releases. It even integrates with Slack (this is a theme you will see thoughout this post) so that updates can be communicated to the entire team as they happen. Git is an indespensible part of our workflow, and GitLab makes Git even more powerful than it already is.
Whether it’s pushing a test build out for client review or rolling out a production release, deploying web application updates can be a really delicate operation. All it takes is missing one reference in a configuration file to a local test database and a deploy can result in costly downtime. We’ve begun using DeployBot to help with all releases and it has sped our our deploy process tenfold.
DeployBot hooks right into our GitLab repositories and monitors them for changes. Right on the dashboard, you can see all of your projects and which ones have received updates and area ready to be deployed. Each code repository can be configured with multiple environments—testing, staging, production—and each one can perform specialized deploy processes with per-environment configuration files. When it’s time to roll an update out, it’s a simple as clicking a button.
Even better, DeployBot integrates with Slack as well so all users know when a new update has been released. I can’t imagine managing project releases for multiple clients without DeployBot.
We’re the first to admit that our projects are never error free, but we do our best to plan for bugs and jump on them as soon as they pop up. Most modern development languages have built-in error logging and reporting capabilities, but we’ve recently begun using the Bugsnag service to improve our workflow.
With just a few lines of code added to existing projects, all internal errors and exceptions are automatically directed to Bugsnag’s online service where they are indexed, cataloged and sorted for review. Project teams get a digest each day of the previous day’s errors so we can try our best to replicate them, track them down, and eliminiate them.
Unsurprisingly, Bugsnag also has a boatload of integration options including Slack integration. We have our Bugsnag projects configured so that when it sees an unusually high rate of errors, it can signal the project team on the project’s Slack channel so it can be addressed immediately. Bugsnag is a pretty new part of our application maintenance process, but I can see this becoming a big help in increasing our products reliability.
When we started developing Saffron last year, we found ourselves doing a lot of mail testing. Testing sending mail, testing parsing emails, testing replying to emails. Seriously, you can’t even imagine how many emails we were working with to make sure Saffron could handle whatever came its way. One of the most memorable parts of the final testing process, though, was when we accidentally sent 2,000 emails to ourselves, triggering spam protection rules on our email provider and shutting the beta down for 36 hours. We learned our lesson: Use a test mail interface when you’re not directly testing email flow.
In an effort to avoid this in the future, we’ve been making heavy use of an incredible service called Mailtrap. Mailtrap provides you with an SMTP gateway that you can plug into your app while you’re testing so that every email that passes through it is displayed in their app instead of going to your inbox. That way you can flood it with thousands of emails without actually filling up your mail client.
If you find that there is an email that you do want to let pass through to your inbox, a single click can make that happen. Mailtrap also gives you really great features like spam analysis, to make sure you’re not sending emails that will end up in the junk folder, and multi-user access so you can collaborate on the analysis with your whole team. Mailtrap is great for any application that sends mail, but for building and testing an email-centric application like Saffron it has been indespensible.
These are just a few of the services that we use to keep our projects reliable, streamlined, and efficient. Best of all, all of these services together cost less than than $100 every month: a tiny, tiny price to pay for increased productivity and communication.