As a programmer, I have long cared deeply about having the latest, most powerful machine to do my work. If I am not left waiting for my tools to do their job, then I can more quickly do mine.
Recently, I have felt like I never have a powerful-enough machine. Running Docker for Mac brings even a $2000 or $3000 MacBook Pro (Intel) to its knees. Issues persist with Apple’s silicon as well, given that it’s relatively new so the software hasn’t fully caught up yet.
My most recent team at GitHub worked on an internal app. The app was made up of a series of different services. For development, we used Docker Compose to run a dev database, a Rails app, a webpack compiler, a background worker, and probably one or two things I have now forgotten. Running 4 or 5 services in development in Docker for Mac which were all polling for filesystem events from the host into a VM and into cgroups was a mess. After I upgraded to a machine with 64GB of RAM, this workflow became much better, but it was still a huge battery drain and would make the CPU red hot.
We were early experimenters of GitHub Codespaces. Codespaces natively supports Docker Compose, so setting things up was relatively easy. Once Codespaces became generally available, I migrated to use it. Every day, I woke my computer from sleep and reconnected to my Codespace in the browser. As I worked, I felt more productive than ever. Changes were instantly reflected. It felt like I had this supercomputer that I could access from anywhere.
A few months ago I began working at Google. Google is famous for its one monolithic codebase of billions of lines of code. No single machine could accomodate this amount of code, so they invented CitC, a cloud-based file system overlay of the monolithic codebase. Many Googlers have physical workstations at their office desks, but pandemic hires are instead given a virtual machine in the cloud. These machines are given the workstation treatment. I’m able to remotely access mine through a browser window as though it were a virtual monitor for the machine. The immense power of these VMs gives developers the ability to develop massive applications with relative ease. My experience at Google has only enhanced my delight for coding in the cloud.
Coding in the cloud can be cheaper too. Assuming approximately 246 working days per year (261 work days minus 15 days for vacation), a $3,000 machine would cost you roughly $4.06 per day of work over 3 years. Some companies refresh machines every 2 years, which raises that cost to $6.10/day. Codespaces currently costs $0.72/hour for 8 cores, and it automatically shuts off and stops billing for vCPU after 30 minutes. A normal 8 hour work day includes meetings and other non-coding work, so let’s assume you’re actively coding for about 5 hours per day, costing the business $3.60/day or roughly $2656.89 for the same 3 year working period. This is cheaper than your physical machine! They can give you a lightweight, inexpensive computer and you can do absolutely everything in the cloud. If you leave after 1 or 2 years, the company won’t need to spend the money for your Codespace, thus spending less on you than if they had given you a big, beefy machine during onboarding.
I’m sure there are many specific edge-cases I didn’t account for which might sway the financials one way or the other, but this remains true: working in the cloud allows scalability and flexibility in today’s fast-paced world, and offers true developer delight.