When I began my career as a software developer (thought we weren't called that then – we were software engineers) it was a relatively solitary pursuit.
Yes, we had project meetings and code reviews — endless code reviews — but most of the time we just sat and wrote code. We came together for regular project meetings, usually to give project managers or whoever else was in charge status updates. Writing code in those days was not a collaborative process by any stretch of the imagination.
Typical projects were managed using a Waterfall methodology. Waterfall envisions a linear progression through a project with various gates or critical checkpoints. The idea was to complete massive projects in their entirety by understanding all possible requirements and developing features no matter how long it took. Testing came at the end of the project when it was often too late to make changes and stay on time.
You've Come a Long Way, Software Development
Looking at the developer landscape today, it’s clear that the process of writing software is entirely different.
Agile methodology — creating a limited number of features and improvements and squashing bugs in short sprints — is the software development methodology of choice. Teams of developers perform these sprints over and over, continuously moving the code forward.
Instead of releasing code once a year, releases come out as frequently as monthly but often quarterly. To accomplish this rapid development, developers have to work closely together, sometimes working side-by-side on the same code. The team is now the basic unit of measure for developers, and collaboration is ingrained in the processes.
This dependency on collaborative teams to churn out code quickly extends to other IT disciplines. In the past, developers would handoff to testers and sysops, usually toward the end of the project. Now these different disciplines are welded together with programmers to form DevOps teams. This solved the problem of discovering that code didn't work in the production environments (or at all) late in a project, but has added a layer of complexity to managing development projects.
The Glue That Binds
The glue that holds these Agile development teams and DevOps team together is, ironically, software. While not required for Agile or DevOps methodologies, software that fosters collaboration and communication is essential for optimal performance.
It’s no accident that developers led the way in enterprise chat software adoption. Slack and HipChat boast strong followers in the ISV and IT community. This need for free form but coordinated collaboration is also the reason that so many developers’ tools such as IBM BlueMix and Github contain built-in or integrated collaboration software.
A new wave of project management tools has also emerged to meet this need for fluid, but coordinated actions amongst development teams. Kanban-oriented tools such as Trello fit the Agile methodology well. For those looking for a more traditional task list approach, project management software such as Asana or task management software such as Wunderlist (from Microsoft) are more attuned to the new way developers work. Old-fashioned project management software was designed with Waterfall project management in mind.
Project management and communication tools need to integrate with common development tools such as integrated development environments (IDE) and code repositories. This is why integration between project management tools and enterprise chat tools and GitHub or BitBucket is common. IBM, with IBM BlueMix, Microsoft and Atlassian — to name a few — market tightly integrated developer tools and collaboration software.
As is the case with almost all knowledge workers, developers and IT operations professionals are working in more collaborative environments that require dynamic communications and sharing. Luckily, the tools exist to support this environment. And developers have embraced these tools, often ahead of the rest of their organizations.