Way back in 2011, Forbes published an article titled “Now Every Company Is A Software Company”. The author, journalist David Kirkpatrick, illustrated the convergence of traditional business practices into consumer software. Offering a handful of examples where traditional businesses were embarking on technology infused futures. His notion was “The era of separating traditional industries and technology industries is over—and those who fail to adapt right now will soon find themselves obsolete.” Now, nearly 5 years after the fact, this idea, and indeed the premise of Kirkpatrick's article, have never been more true.
The majority of businesses, from mom and pop stores to Walmart, have their hands in something digital. It might be a simple e-commerce platform, or something more complex, like a custom piece of elaborate software. As a result, more and more traditional businesses have hired in-house development teams, and more and more development teams have found themselves plunged into the murky pool of code management. Faced with the mammoth task of finding a suitable way to manage, secure, store, and collaborate on a diverse array of software projects.
The truth of the matter is, whether you’re a veteran developer, CTO, or a complete novice, navigating the saturated market of code hosting and management platforms can be difficult. And figuring out the best platform for your requirements is harder still.
Should you go for an open source solution, or only use private repositories? Which version control system is the best, and is there any difference? Should you keep everything on-premises, or opt for a SaaS, or multi-tenant cloud solution? And should you sacrifice UI for a function you believe to be vital?
There are tons of questions you could ask when you start your journey toward finding your code hosting solution. But rather than asking every question, it can be beneficial to focus on a few key areas. Here are the 3 crucial questions to help you choose a code hosting platform.
What kind of data are you storing?
Many other platforms have limited their scope, focusing on support for a single version control system. So although it might seem elementary, this restriction can make it unnecessarily complicated. Knowing what kind of data you’re going to be storing plays a huge part in deciding a version control system, and, in turn, a platform. For example, if you’re storing a lot of binary data, or large files in general, you might be better off looking at Subversion. Though if you're looking to collaborate at scale with distributed teams, you'd be better focusing on Git.
This is because Subversion’s xdelta compression algorithm works on both binary, and text files, making the subsequent repositories significantly smaller than their Git counterparts. However, Git is a distributed system, making collaboration across vast teams a breeze, where SVN is centralized, meaning access is generally restricted to a specific location.
The truth is, typically, platforms limit your code management to a single version control system, and this can often lead to compromise. So it's worth thinking about your requirements on a multiple project level.
A single version control system is usually adequate for one project, but not all your projects will be created with the same requirements. Sometimes you'll want a project to be distributed among collaborators, other times you might want everything safely secured in a central location. Sometimes you might need the heavy lifting file management that SVN can offer, and other times it will be overkill. Choosing a platform that supports multiple version control systems allows companies to consolidate all existing code repositories under one platform, let the projects to choose which version control system to use, and still streamline the practices in addition to the management and the maintenance of the platform.
There are as many benefits to Git, as there are to SVN and Mercurial. And although there are workarounds to managing binary files with Git, many of which are discussed in this article by Ilmari, having to find hacks that offer the features you need, is not the best way to start your code hosting journey.
Who is going contribute?
Is it true that developers value function over form? Making something pretty and easy to use is not at the top of many other code hosting platforms’ to-do lists. What's more, aesthetics often take a back seat, making way for elaborate functions and features that make development a breeze, but do little for user-experience.
But function, form and ease of use are tightly linked. And when it comes to collaboration with less technically minded people, the lack of attention on UI can be a huge drain on productivity.
When working with non-technical contributors, you can improve productivity by choosing a platform that holds form, function and ease of use in equal regard. As such, knowing who is going to contribute is crucial from the start of your project.
What other tools do you need?
It’s surprising how many development teams overlook other tools to complement code hosting platforms. Whether it's documentation or issue tracking, often we consider these extras as “nice to haves” and not necessities. In fact, more often than not, these additional tools are scrapped for the sake of other functions, without regard for integration or productivity.
The truth is, both adequate documentation and issue tracking can have a huge impact on productivity. From the wider company perspective, poor documentation, and poorly managed documentation can lead to tons of time wasting scenarios, be it changes in personnel or wanting to repeat a specific workaround from your last release. Every minute spent searching poor documentation for solutions is time not spent implementing the solution.
Similarly, poor issue tracking can be a huge bugbear - if you'll excuse the pun! - and a drain on productivity. Whether it’s reports, tracking progress, or dealing with support tickets, having a way to track issues natively can be a huge deal for productivity.
Many businesses are embarking on technology infused futures. As a result, how productive a development team is, plays a huge part in delivering business success. Choosing the correct code hosting and collaboration platform directly influences that productivity. And these 3 crucial questions can help you figure out which code hosting platform will be the best fit for your team.