It was a stormy dark Friday night, I always wanted to write it! Maybe it wasn't stormy, but it was definitely raining, it's London after all. Anyway... We changed some keys in a JSON, forgot about it and left the office after a good week of solid work.
We woke up Saturday morning with 2k+ crash reports and no idea why. It took us a while to even remember about that change, figure out it was the reason of the crash, and hack around a quick fix. Everything was fixed just in time for the coffee after lunch, but we caused a severe disfunction in the service.
None of this would have been as tragic if it'd happened one day earlier. If that change had been made on a Thursday night, we'd all been in the office when the first crashes started to pop in, and fixed it way earlier. Also the weekend is the the time in which our service is more used, so the number of crashes would have been lower.
That was just an example, but serves well to explain why I don't work on Fridays anymore.
Why you shouldn't work on a Friday
You're tired
Friday is the last day of the office week, and you are an hard working person. You're gonna be tired and more prone to mistakes and suboptimal choices.
You're on a rush
You are gonna be on a rush. You want to get stuff done, or even better shipped. Plus your friends are waiting for you at the pub, and are tired of you always being late. You are gonna code your way through the end of the ticket as fast as possible, maybe skipping the test for that edge case, or not running it on the device because "it's such a simple thing that's gonna work for sure". Boom! You've just created the biggest bug your company has ever seen.
You don't want to work during the weekend
You're friends are gonna be so surprised that you were on time that they'll offer you a drink. Each one of them! You'll woke up hangover and have no idea of how to turn your laptop on, imagine trying to fix a bug on production...
Even if you're not the pub kind of guy, the weekend is the moment to unplug, to recharge the batteries, to do something different and be ready on Monday with a refreshened creativity. You shouldn't underestimate it. It's a vicious circle.
So what to do on a Friday?
By planning your week in order to get you product or client work done between Monday and Thursday you'll have time on Friday to focus on other activities that will still bring value to your work.
Refactor
Refactoring, and by refactoring we mean changing entire pieces of your design, not extracting a method, is a time consuming activity that too often gets delayed because of other deadlines. Don't know where to start? Check out Refactoring: Improving the design of existing code and Working effectively with legacy code.
R&D
The software world moves very fast. The open source world even faster. Many interesting libraries are released or updated every week. And you probably have been thinking about using that new library for the forms validation. Friday is a good time to hack around. Or maybe you could catch up with some technical reading. Or pair with the junior developer in the team and do some mentoring.
Tool sharpening
In this episode of Ruby Rouges Ben Orenstein talks about tool sharpening.
To be a productive developer you have to know your tools, and how to use them to the max. Why not spending a bit of time on Friday going through the keyboard shortcuts of your IDE, learning a new shell command, writing a script to do that mechanical task that you do twice a day every day, or even just check your shell commands history and set aliases for the most used commands.
Contribute on Open Source projects
Open Source is awesome! So many libraries and components, so much time saved by using other people work. And it's all for free. It's time to give back. Maybe you found a bug in one of the tools you use. Maybe you wrote a library for your personal use and want to share it. Maybe you just feel like doing something different and learn by reading other people code. Head onto GitHub and start submitting PRs!
Go to the park
Sometimes taking a break is the best thing you can do to make your work better. Get the rest of the team along and enjoy some group activity, and an ice cream.
I've been using this work schedule for a while and I'm very happy with it.
First of all it helps preventing disasters during the weekend. But also it helps setting a nicer pace to my week. I have something to look forward to. and I don't feel bad when I don't fix that code smell, because I can just take a note and know that I'll be working on it on Friday. And I love having some scheduled me time where I can learn just something new.
Enjoy your Friday!