Ushahidi developer meet up
Collaboration and software development go hand in hand. Here are some of the tools that make that collaboration possible. PHOTO: afromusing

Everyone uses Slack, right? Especially if you are a developer in a startup. Silicon Valley startup geeks are more into Slack than teenagers are into Snapchat. 

Slack is a great tool for general communication and can integrate with just about everything a developer may care about. If you are a Microsoft developer, I suppose you use Microsoft Teams … unless you use Slack of course.

Slack, and its competitors, such as Microsoft Teams, HipChat/Stride, Zinc or Fleep, are typical conversational glue. They facilitate conversations between all types of groups and individuals. While this is essential to collaborating amongst developers and between developers and the other parts of a business, it is not the only option open to the technical staff.

Types of Collaboration for Developers

Besides conversations, developers need a number of collaboration tools to effectively perform their work. While chat applications support some of these needs — file sharing for example — they are more effective when used in conjunction with tools designed specifically for these functions.

File Sharing

Developers share a lot of files. Design documents, product requirements, style guides, documentation, etc. While email and chat applications can be used to share files, that usually means having an unorganized mess instead of a well-ordered archive. This can be especially tough on a new team member trying to come up to speed.

A file sync and sharing application, such as OneDrive, Box or Dropbox, can handle most file storage tasks that developers have so long as they provide for versioning. The types of documents developers use the most will go through endless revisions and versioning is a must to insure the history of the document is available.

Code Sharing

Code sharing is different than file sharing. File sharing applications are too general for sharing code. It’s also not a good idea to keep copies of code in a file archive and the code repository itself. There is always the potential that someone will upload the wrong code, perhaps an older version, from the file archive to the code repository causing problems with a build.

Most code repositories such as Git or Visual Studio Team Services have facilities for sharing code. Sharing source code files whether from a chat app or a code repository, means working in one applications, the IDE or code editor, and switching to a different one to share such as chat or code repository application. This is tedious and take developers off task. It also means that coding together is more difficult since these are offline methods of sharing code.

Instead, the ability to share code in real time is being built into modern code editors and IDEs. Codeanywhere, for example, allows developers to share and work on a source code file with another developer right from the IDE. Atom, the popular code editor, has a facility called Teletype that shares that also allows real-time sharing. This is clearly the future mode of sharing code, directly from within the application developers are using the most — the code editor or IDE — and in real-time. This mode of sharing will facilitate co-coding, or real-time simultaneous code editing.

Related Article: Boring (But Important) Topics for Developers to Watch in 2018

Project Management

All large-scale projects need team management. Agile development, especially, needs to carefully manage teams or risk endless sprints that don’t advance the project or a software product that doesn’t meet the needs of users.

Free-Form Collaboration Tools

While the structured tools for managing requirements, timeline and releases are collaborative to a large extent, there is still a need for free-form collaboration tools. This is an area where chat applications don’t work. Instead, wikis and enterprise social network provide the richly featured environment for handling the reams of unstructured data that is a part of the project management landscape. It’s no accident that companies such as Atlassian, who make products for managing project information, also provide a free-form information sharing in the form of wikis, such as Confluence, that integrate with the other structured project management tools.

DevOps – The Meta Developer Collaboration

DevOps is, by definition, the collaboration of developers and operations personnel with the context of development projects. It signifies the removal of silos within the development team structure which, in turn, allows for a better coordinated and presumably more efficient effort by the team.

Unfortunately, much of the tools that are labeled DevOps have little to do with this collaboration between developers and sysops. Instead, they are operations automation tools such as Chef, Puppet and Ansible. That is not to say these aren't valuable tools. They are especially useful for meeting the need for speed of sysops engaged in a DevOps team that is performing Agile development. They are not, however, DevOps tools in of themselves.

Unlike the tools that are available or emerging for developer collaboration, software that binds together developers and operations are still lagging behind. There are a few — IBM Cloud, formerly BlueMix, and new offerings from Amazon — which hold the promise of a complete pipeline from design to coding to deployment to daily operations still emerging.

Related Article: How DevOps Streamlines Digital Marketing and Supports Innovation

Tools Change With the Times

As developers transition into more collaborative ways of producing code, especially Agile, the tools will have to change. Some of the changes are already underway. The uptake of chat applications, such as Slack, for developers is only the tip of the iceberg. The basic tools of the trade, such as code editors and IDEs, are adapting to this new way of developing software. Although still nascent, tools that bind the developer and sysops worlds together are also on the horizon.

Even more important than new tools will be the integration of these tools to bring teams together and make the development workflow more efficient. This is only the beginning.