A developer experience practice I’ve recently picked up is routine Friday reboots of my workstation. I think this can make your workflow (and even perhaps your life as an engineer?) a little better.
Does This Sound Like You?
- You haven’t rebooted your workstation in weeks, and may be proud of this fact.
- You’re maintaining legacy code.
- You find setting up these projects to be finicky.
- You have uncommitted changes that you have to remember to reapply to get the projects working.
- You resist reboots or create obstacles to them, like programs that won’t close without confirmation.
Sound familiar? I used to wear the identity “I never reboot” as a badge of honor. And yet, I know that rebooting my computer has value.
So, why don’t I do it?
Reasons It’s Hard to Reboot Regularly
As I mentioned, many developers resist reboots. Why? I can speak from my own experience.
I typically maintain legacy software, and often, multiple codebases in development that rely on one another. Setting up these projects and their supporting software programs is, to me, pure yak-shaving. I avoid it.
When I reboot, all my other programs close, too: browser, VPN, chat programs, etc. Rebooting these one-by-one is tedious.
So, what are the arguments for rebooting regularly?
Reasons to Reboot Regularly #1: Better Performance
First, your computer is going to perform better if you regularly reboot it.
This article lays out a solid technical case for rebooting: you’ll get cleared memory, resolved glitches, system updates, and resolution of hardware and software conflicts. Here’s another good one, too.
You’d think software engineers, with all we know about computers, would be shining examples of this. Nope. Like a cobbler with disintegrating shoes, we often ignore these basic truths.
And for us, it matters even more. That OS upgrade you’ve been resisting? You’ll get it. That Chrome upgrade that fixes some websites? Fixed. CVE’s remediations you didn’t know about? Patched before they ruin your day.
We all know this is true, regardless of contrarian advice about Macs that never sleep. Whatever optimization your computer might have to accommodate never-rebooting, it needs to be rebooted from time to time.
Reasons to Reboot Regularly #2: Facing the Technical Debt
A bigger reason to reboot is that you’ll face your tech debt head on.
Extreme Programming espouses a simple idea: if something is good, we should do it all the time. When you reboot, you see all the ugliness of your development environment with fresh eyes. Here are a few real examples from my environment that I noticed when I started rebooting regularly.
- I need Docker Desktop to run my apps, but it doesn’t start on login. After a few restarts, I took a moment to open the settings and make it always start on login. For a lot of programs, we don’t want that, but for my workstation, I mostly write code, so I do.
- I don’t have a good Tmux configuration currently for new sessions. I wrote one similar to the Hashrocket Dotmatrix version, so I can quickly start Tmux sessions with mux .
- I typically start our Docusaurus documentation project after multiple CRA React apps, and each of these projects tries to run on port 3000. As a result, Docusaurus has to pick another port, and chooses whatever is available, typically port 3002 or 3003. To have a more predictable environment, I hard-coded this port to 3004, which never conflicts with any of the other kinds of apps we run.
Are these small? Of course. But small comforts add up to the total experience of a workplace. We all have problems like this. Rebooting forces us to face them.
It helps with onboarding, too. When new devs join our team, we want our software to be easy to get up and running. Once you’re on the team, you’ll never be able to experience that again. But, reboots get you pretty close, because you’re starting over in a way. You’ll have more empathy for your team, and you’ll fix problems that you might not have even seen before.
Reasons to Reboot Regularly #3: Helps Me Go Home
Lastly, rebooting helps me reboot myself at the end of a work week.
I like turning my computer off and walking away on Friday. Not every developer can do this, but if you can, I encourage you to pair powering down as an employee with powering down your workstation. They go together.
It also prevents me from doing “one more thing” on Friday until it’s 9 PM, a pattern I have fallen into many times.
Conclusion
Sometimes this bites you! You upgrade a library, restart, and your development environment is worse off. I’ll take that every time over a buggy, exhausted machine.
I’d like to give a shout-out to my team at Hashrocket, who used to do an “Upgrade Friday” that paired reboots with software updates, both locally and in production servers. Those folks had it figured out.
Now, close this browser tab, reboot your computer, and maybe even go home.