A number of tools and practices promise to help startups scale and stay lean, including hiring remote engineering talent and implementing rapid, Agile development cycles. And while it’s true both of these can save time and money and add in-demand skills to the mix (not to mention, around-the-clock coding), without the right collaboration tools in place, companies using a distributed solution for development can risk experiencing a few growing pains.
When Scaling Up, Choose Your Tools Wisely
It’s true that “if it isn’t broke, don’t fix it,” but when it comes to having systems in place to support a growing distributed team, that can be a dangerous mindset. If you’re looking to scale your business with the help of freelance talent, upgrading your processes is an important first step. Don’t outgrow your existing workflow without a plan in place—and what you choose should ideally integrate well without adding extra work (or overhead). And keep in mind freelancers are independent, and you’ll need to agree with them up front how you’ll collaborate together.
How do you decide which tasking, testing, and collaboration tools you should use to stay lean without the learning curve? Here are some options to consider to make communication easy, code clean, and productivity soar.
COLLABORATION IN A DISTRIBUTED ENVIRONMENT
In her article “How to choose the right DevOps tools,” Sarah Zorah says, “No tool in the world will magically make you DevOps (or agile, or lean). DevOps champions collaboration and communication between development and operations teams, so it’s more of a cultural shift than a magic recipe.”
Technology is the glue that holds a distributed team together, especially as you continue to scale and your team grows. Establish a workflow that empowers developers to work when they want, but do so without replacing a culture of collaboration. Beyond the tools themselves, it’s important to build a strong culture around transparency and collaboration.
Above, we alluded to a few growing pains teams can face without the right tools and technologies. Let’s go over a few before we talk about the tools to head them off.
- Vague or poorly defined process. When the development lifecycle is not well defined, things can easily become a mess. For those overseeing the process it’s crucial to understand that communication with a remote team can be scarce compared to communication in an office. There should be no room for implications or interpretations.
- Version control issues, duplicate code, or messy code. Remember, the idea behind distributed teams is that they allow you to get more work done separately, but if developers aren’t communicating effectively you can create new problems and new headaches.
- Dependencies between teams. Divvying up work to get it done faster is great, but you never want one team to be waiting on another to complete their work before they can move forward. These scenarios are known as dependencies and they can negate the efficiency of dividing up the project—unless, that is, you strategically break up code to minimize these dependencies.
- Lack of coordination between teams. While autonomous teams can be highly efficient, you do run the risk that they could progressively diverge and stop communicating important information with each other.
Now, let’s look at some ways to mitigate these concerns.
Tools for Connecting Remote Talent
Teams don’t have to be in the same time zone to effectively collaborate. You’ll want the right mix of tools that can support both synchronous and asynchronous interactions because chances are you won’t all be online at exactly the same time. It can also be helpful to facilitate face-to-face interactions to create more of a “watercooler vibe” with remote workers.
Good communication isn’t just limited to chatting and meetings, either. Inline comments and tracked feedback can serve as a constant brainstorming session.
- Google Docs for asynchronous collaboration without files having to be locally downloaded
- Slack for communication
- Google Hangouts for video communication
- Chromebox video conferencing equipment
- Jing and Snagit for screen-capture and image sharing.
Related Article: 18 Essential Collaboration Tools for Remote Teams
KEEP COLLABORATIVE CODE CLEAN
If you adopt a distributed model, know that joint coding will make up a significant portion of collaboration on software development projects. For that reason, Git repositories are crucial. Developers can work on a single branch of code not shared with other teams, then merge code back to the main branch. It’s a good idea to run some unit tests (and automate those, if you can).
- GitHub code repository
- Jenkins continuous integration server
- Functional testing tools: TestNG, Selenium, PhantomJS, Sauce Labs
Related Article: Ways to Optimize Software Testing with a Distributed Team
Centrally locate project progress and issue tracking
For more simple development processes, an issue tracker like that built into Github/Gitlab may be sufficient. Using progress assignment, coordination, and tracking tools can help set to-do’s and let everyone check in on the status of a project, no matter where they are. Some projects might be large enough to require two types of project tracking (e.g., Basecamp for high-level project views and JIRA for granular, technical issue tracking).
- JIRA for issue and bug tracking
- Confluence for documentation
- Issue tracking in Github/Gitlab
Prototype apps for a tighter feedback loop
Prototyping apps is crucial for rapid iteration. For mobile apps and user-facing software, prototyping allows for feedback and testing early on. Try one of these platforms to transform static designs into interactive mockups, allowing stakeholders to get the end view of a product.
Develop, deploy, and monitor in the cloud
Software is getting more modular, and so are the IT environments we use to build, test and launch that software. Embracing this approach also makes sense for teams adopting a more distributed model.
If you aren’t looking to invest in a large, expensive suite of integrated DevOps software, consider using different tools to divvy up aspects of your development cycle such as collaboration, testing, deployment, or monitoring. Some tools can multitask, so pick the one with the features you need.
- Capture for Jira
- Amazon Web Services (AWS)
- Other tools for monitoring: BigPandaHostedGraphite, Nagios, New Relic, Pager Duty, Pingdom, Splunk
Consider security when sharing data and information
What about protecting the data, systems, and communications that happen when you’re hiring remote freelancers? You might opt to use a virtual private network (VPN) to encrypt connections, grant limited FTP access, or limit rights and permissions when granting access to your server. Download Upwork’s Data Security whitepaper for practical tips on securely working with remote freelancers.
- Google Drive
Ready to take your productivity to the next level?
With the right tools, remote engineers could be just what your development team needs to reach new heights. Download the Hire Fast & Build Things eBook for an in-depth look at how Upwork structures its own distributed teams.
Upwork is a freelancing marketplace where businesses of all sizes can find talented professionals across multiple disciplines and categories. If you are a business and are looking to get projects done, consider signing up!