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 discover 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 entry to a physical workstation. When developers work together in a company office, it is straightforward to issue everybody a desktop PC that’s equipped with sufficient firepower for the job at hand. Without this comfort, however, many organizations fall quick of offering an optimum 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, checks, and native deployments. This demanding cycle renders the compute sources of a typical work laptop insufficient. The beefier machines sometimes given to developers to mitigate this are nonetheless 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 entry to a device that houses categorized 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 entry the VM. The dispute is community latency. Remote desktop environments aren’t as smooth or performant as I/O, especially with insufficient community bandwidth. Developers who are working from home won’t always have optimum community velocity 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 creation of containers has utterly transformed the panorama 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 simpler 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 initiated experimenting with it in as tiny as 2 minutes.
Pair programming for remote teams
The lack of in-person interaction is another remote workplace challenge that uniquely impacts developers. When everybody is working from home, having a colleague gaze 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 position-based entry controls (RBAC) from OpenShift, permitting a developer to grant read or write entry to collaborators in workspaces they own. With OpenShift’s software-defined networking, collaboratively fixing a bug is as easy as producing a link to a workspace, or to a regionally-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 significance for lengthy-term success.
Automated pipelines for CI/CD handoffs
Working from home deprives workers of all teams from a worthy 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 reaching 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 necessary than ever before to afford developers with self-service capabilities and automated pipelines so that teams can hold shifting.
Pipelines turn the team construct, test, verification, and release process into constant and repeatable automation. By hooking up pipelines into source control repositories and into team chat, developers and operations (DevOps) can approach together in a way that removes obstacles and creates a shared consciousness with a recorded history. While these benefits immediately address the lament of continuity breaks in today’s IT panorama, they’re assured to deliver improved lead times and developer experience regardless of how pandemic conditions unfold in the prospective.
Working remotely is the new normal
It’s broadly anticipated that working remotely will become common for at least some of the workweek (almost no 1 wants that everyday commute again). If you quickly-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 guide operations tasks.
- Providing dashboards and ChatOps feedback from the CI/CD for shared consciousness.
- Leveraging new tooling so “shifting left on security” doesn’t burden developers.
- Leveraging code quality tools inside their CI/CD pipeline to minimize the effort of guide code reviews.
As your team evolves into remote succesful operating models, keeping the status-quo of a native-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 tradition, 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 quick report.