During the height of the COVID-19 global pandemic, tens of millions of workers transitioned from the office to working from home. It was an unfamiliar way of doing things for many organizations—a true sink-or-swim scenario. Development teams are among those affected, and the challenges that we face are sometimes very specific. In this article, we explore a few tools and practices that can help distributed development teams work and collaborate from home. Hopefully, this exploration will be helpful to you and your team seeking a “new normal" after COVID-19.
Accessing the development environment
Perhaps the most poignant of remote development challenges is not having access to a physical workstation. When developers work together in a company office, it is straightforward to issue everyone a desktop PC that’s equipped with sufficient firepower for the job at hand. Without this convenience, however, many organizations fall short of offering an optimal experience. Let's consider a few common approaches.
Laptops to the rescue?
Company laptops are a standard issue for any full-time job, but developers represent a special case. The inner loop of development demands a plethora of builds, tests, and local deployments. This demanding cycle renders the compute resources of a typical work laptop insufficient. The beefier machines sometimes given to developers to mitigate this are still a compromise between user experience and risk. Portable workstations are more likely to be damaged, lost, or stolen, presenting cogent risks of not only financial impact but the loss of data privacy. With physical access to a device that houses classified information, a malicious actor could create problems that eclipse concerns related to infrastructure costs.
Okay, well then VMs?
Another common practice is for development teams to use virtual machines in a data center for their development environment. The advantage here is that the laptops need not be anything special; the laptops only serve as a means to access the VM. The problem is network latency. Remote desktop environments aren’t as smooth or performant as I/O, especially with insufficient network bandwidth. Developers who are working from home won’t always have optimal network speed to work with, whether it’s unavailable where they live or because they’re competing with other household members for bandwidth. In the latter case, it’s not always as simple as kicking the kids off Netflix; remote developers may live with children using remote learning software or other adults conducting business remotely.
What about an in-browser IDE?
The advent of containers has utterly transformed the landscape for application workloads over the last several years. The dazzling metropolis of communities that have formed around the technology has advanced the maturity and consumability of containers for virtually all aspects of IT, including containerized development environments.
True masters of remote development can serve up workspaces through an in-browser IDE like CodeReady Workspaces. Centralizing workspace management to an underlying platform like Red Hat OpenShift results in workspaces that are powerful and tool-ready enough that all you need on your laptop is a modern browser. This strategy offers better performance over virtual machines because the connection is powered by a web socket, which has lower bandwidth requirements than a remote desktop client. It’s also snappier in that the containers’ shared kernel enables faster start times than virtual machines. As if that's not enough, just think how much easier onboarding a new teammate will be.
Note: If you’re curious about the in-browser IDE option, you can try it out yourself using the Developer Sandbox for Red Hat OpenShift, a free shared OpenShift cluster with CodeReady Workspaces preconfigured. You can get started experimenting with it in as little as two minutes.
Pair programming for remote teams
The lack of in-person interaction is another remote workplace challenge that uniquely impacts developers. When everyone is working from home, having a colleague look over your shoulder at something you’re working on is more of an inventive metaphor than a literal practice. Sure, there are plenty of video conferencing apps, but they generally don’t deliver a quick and simple pair programming experience.
This is another area where CodeReady Workspaces excels, as it can inherit role-based access controls (RBAC) from OpenShift, permitting a developer to grant read or write access to collaborators in workspaces they own. With OpenShift’s software-defined networking, collaboratively fixing a bug is as easy as generating a link to a workspace, or to a locally-deployed app, and sharing it with others. As more companies embrace an increasingly remote workforce, preserving the rituals of rubber duck debugging and pair programming are of the utmost importance for long-term success.
Automated pipelines for CI/CD handoffs
Working from home deprives workers of all teams from a great many easily observable things, like chance encounters with Greg at the Keurig or quarreling with coworkers over who has to sit in the squeaky swivel chair. But remote work also disrupts something a bit less obvious: continuity. Workers are prone to more tiny distractions and sequence breaks at home, as it presents a much different atmosphere than an office setting. This doesn’t necessarily reduce how much work people get done, but it makes achieving uninterrupted workstreams more challenging.
The impact this has on developers is the potential to introduce slowdowns into handoffs related to continuous integration and continuous deployment (CI/CD). When colleagues on ops teams and other stakeholder groups aren’t monitoring incoming workloads contiguously, there’s a greater chance developers will have to wait longer for their code to be deployed. For this reason, it’s more important than ever before to afford developers with self-service capabilities and automated pipelines so that teams can keep moving.
Pipelines turn the team build, test, verification, and release process into consistent and repeatable automation. By hooking up pipelines into source control repositories and into team chat, developers and operations (DevOps) can come together in a way that removes barriers and creates a shared awareness with a recorded history. While these benefits directly address the lament of continuity breaks in today’s IT landscape, they’re guaranteed to deliver improved lead times and developer experience regardless of how pandemic conditions unfold in the future.
Working remotely is the new normal
It’s widely expected that working remotely will become common for at least some of the workweek (almost no one wants that everyday commute again). If you fast-forward to a year from now, we expect to see successful development teams being the ones that embraced the shift. Those teams will be doing the following:
- Providing shared IDEs to facilitate collaboration.
- Establishing a repository of self-service and single-click workspaces for IDE consistency.
- Triggering CI/CD pipelines off of source control to automate away manual operations tasks.
- Providing dashboards and ChatOps feedback from the CI/CD for shared awareness.
- Leveraging new tooling so "shifting left on security" doesn’t burden developers.
- Leveraging code quality tools within their CI/CD pipeline to minimize the effort of manual code reviews.
As your team evolves into remote capable operating models, keeping the status-quo of a local-only development process just won’t cut it. Those environments are a source of friction that will bottleneck your efforts and easily get you off schedule and over cost. Adopting new team culture, defining new ways to collaborate, and bringing in new shared development tools will help you meet the evolution into remote work in a way that becomes your “normal."
Find out more about CodeReady Workspaces by watching this Developer Experience Office Hours video dedicated to CodeReady Workspaces and Eclipse Che. You can also learn about best practices for developer workspaces in this short report.