An illustration depicting a modern workplace, next to an illustration of Bit the Raccoon.

The COVID-19 pandemic and our response to it remains humanity’s biggest event in 2021, with over three million deaths attributed to the disease and its immediate complications this year. Computing is deeply involved in our response: public-health tracking, epidemiological modelling, the extraordinarily rapid roll-out of effective and novel vaccines, and the automation technologies involved in production of monoclonal antibodies are all visible countermeasures, feasible only with the help of cheap and reliable computing.

As much as those technologies fascinate and motivate me, though, I see that true change operates at the cultural level, and computing in 2021 has quite a story to tell there, too.

Commercial society has transformed itself enormously, on the fly, in the last two years. Then, shifts of work, entertainment, and socialising from in-person to remote were the province of futurists. Now, they’re irreversible commonplaces: plenty of workers, for example, are going back to their offices either never or only on special occasions. The CEOs planning a return to “normality” are often just revealing that they feel safer in their personal comfort zone. Researchers have accumulated plenty of evidence by now that distributed workforces can be at least as creative and cohesive as conventional commute-sufferers. For better or worse, a majority of first-world romantic partners now meet each other online.

And digital technologies enabled all this! Plenty of mass-market articles already focus on the tools to use when working remotely. The aim of this posting, in contrast, is to shine a light on implications specifically for developers, and how we adjust our workflows and “soft skills” to make the best way forward in this new world. That story has only begun to be told – and it starts with our approach to collaboration.

Plan for asynchrony

The single biggest step you can make is to embrace asynchrony. Learn to work productively without the luxury of instantaneous responses. Help your collaborators keep moving forward, even in your absence.

Synchronous communication has its place. One of my own roles is to consult with teams that provide support to development projects. There, we have specific service-level expectations at the level of responding to questions like, “why is $SOME_HOST rejecting my ssh request?” within two minutes.

While we’ll return to that example in a moment, the need for rapid response applies in a minority of cases for software workers. For the most part, creatives like programmers, designers and architects do well to “microservice” their intellectual contributions to be loosely coupled. Figure out what your own best rhythms are; if you’re like most of the professionals I see, “day” or “hour” is more likely than “minute”. Work out expectations with your team. Maybe you’ve had the habit in the past of apologising when you take a call or a walk for thirty minutes; it’s time to leave those apologies behind as distractions. Train your colleagues that you’ll take care of their questions, but over a day or a week, rather than in a few seconds. Focus on being fully present when you do address a particular matter.

The centrality of git

The one central “hard” technology for the current shifts in programming culture is git. Its usual description as an “open source distributed version control system” underplays the extent to which git has become a platform for development activities of the world’s 25 million programmers as well as a growing number of non-programmers. This is how we program now:

  • Administration of version control repositories is increasingly in the hands of cloud vendors GitHub, GitLab, Azure DevOps Server, BitBucket and so on.
  • Collaborative workflows are based on “pull requests” and their reviews.
  • The CI/CD/CT fundamental to DevOps are increasingly constructed from building blocks within the frameworks of GitHub Actions, pre-commit, GitLab CI/CD and so on.
  • Where basic websites of the past were by default self-hosted, or built on Myspace or eventually on AWS virtual machines, now it’s often easiest to rely on GitHub Pages or similar.
  • GitHub and competitors offer project management tools such as ticketing systems which are increasingly potent.
  • Even such software as issue trackers, administrative configuration management databases, and effort reporters increasingly present themselves in terms of their integrations with git-based services.

Notice how many of these features complement distributed collaboration. Now and in the future, work gets done in the framework that git defines.

Recognition of git’s importance is strategic to your career. Thousands of providers promise to certify you in such languages as JavaScript and C# and so on. Fluency in computing languages is indeed indispensable to a programmer; however, even shallow exposure is frankly adequate for most of daily commercial work. Real-world programmers rarely spend their time in subtle algorithmic analysis and clever meta-programming syntheses. Instead, our biggest tasks are to integrate with available libraries and configure higher-order workflows. That’s more the domain of git.

At a concrete level, then, set yourself two big git-related goals for the coming year. While it’s always helpful to learn more about the programming languages you use and the full range of git’s specification, those kinds of studies now deserve to be secondary. You’ll gain the most leverage when you:

  • Read the blogs of the advocates for GitHub Actions, pre-commit, and other services built on top of git; and
  • Reshape your own team’s culture so that collaboration is as engaging and productive as possible. That probably entails some combination of healthy code reviews and at least some of the elements of swarm programming.

Progress in these areas, and your programming will feel entirely different over the next year. Not only will you be more productive in a straightforward sense, but you’ll be better aligned for the changes in work habits that are to come.

Rapid response

While the current premium is on learning asynchronous skills, specific situations for quick turn-around remain, including the support-centre work mentioned above. One current fashion is to apply “artificial intelligence” and aim to replace human teamwork with service by bots. That’s a subject for another day. An alternative you can undertake immediately, though, is to promote cultural values of (partial) automation and self-help services. Like other opportunities above, this is more about “soft” elements of attitude and practice than specific “hard” technologies.

Steps to take

As a programmer or related creative, you’re right now at the middle of upheaval operating at a global scale. This is the first time through it for all of us. Be wary of anyone who claims certainty. In all likelihood, though, this is a great occasion for you to concentrate on soft skills that promote effective teamwork, and to learn enough git that you can begin to take advantage of the remarkable assets now embedded in frameworks based on git.