Reflecting on my recent articles, I've been emphasizing the importance of adopting modern software deployment practices. In my post on Teams using Next.js and Vercel have an advantage, I share insights from my experience with Palo Alto Networks, highlighting how Continuous Integration and Continuous Deployment (CICD) can streamline workflows and reduce manual deployment hassles. Using tools like Vercel and Next.js, I explore how development teams can focus more on creating value, with hands-on tips for maximizing performance and leveraging React Server Components.
Another recent post, The best hardware setup for software engineers, dives into optimizing our workspaces for productivity and comfort. A well-thought-out multi-monitor setup, coupled with ergonomic furniture, can significantly enhance focus and efficiency. I argue that investing in high-quality hardware isn't just a luxury but a necessity for delivering top-notch software. As these articles illustrate, whether improving deployment processes or enhancing our work environment, small changes can lead to substantial gains in productivity.
Teams using Next.js and Vercel have an advantage
During my time at Palo Alto Networks, I spent most of my time working on a product called AutoFocus. It helped cyber security research teams analyze files traversing our firewalls for signs of malware. It was pretty cool, fronted by a large React application, with a bunch of disparate backend services and databases scattered around.
One of the things that was difficult to do was deploy our software. We were on a roughly 3 month release cycle to begin with, which meant several things:
- Out-of-band bug fix releases were expensive
- We didn't get much practice deploying, so when we did, it was a team effort, error prone and took a long time.
- Trying to estimate and scope 3 months of work for a team of 10 is a fool's errand
Deployment meant getting most of the team into a war room, manually uploading build files to various places, doing a sort of canary deploy, seeing if things seemed ok, then rolling out to the rest of the world. Sometimes we decided to roll out architectural changes to reverse proxies and things at the same time, just for fun.
The best hardware setup for software engineers
When I'm writing software I usually have the following windows open, all at the same time:
- 2 column layout VS Code (window = 2560 x 2160)
- A fullscreen-equivalent browser with usable console to see what I'm working on (window = 1920 x 2160)
- A large terminal window (window = 2560 x 1440)
- Chat GPT (window = 2560 x 1440)
- A full-screen browser with all the stuff I'm researching (window = 2560 x 2880)
I find tabbing between windows to be a great destroyer of productivity, so I've spent a good deal of time and money over the last few years iterating on a hardware setup that lets me see everything at once. Today, it looks like this:
I went through a number of iterations when it comes to monitors. For a long time I used dual 32" 4K IPS screens, but even that wasn't quite enough pixels. It's hard to physically fit more than 2 32" screens on a desk - they're too wide already, and it would not be ergonomic to mount them above each other.