After a successful release of a critical bug fix, I stood up from office desk to head home. Along the way, I couldn’t stop feeling so good about myself. There’s nothing quite like the feeling when people commend you as a Rockstar Engineer.
Well, it was Friday evening and I had indeed accomplished some good work after all. Besides, my luggage was already packed, awaiting a planned trip to the beach for the next two days!
The next day arrived, and I did make it to the beach. But my travel plan ended up in the gutter. My weekends free time disappeared like smoke.
I found myself switching between the hotel desk, absolutely ill-equipped for work, and my bed; investigating why my bug fix ironically transformed into a new bug itself.
“Stressful” and “annoying” were not enough to describe how I felt.
The event above happened about 5 years ago. Back then, I was the main engineer in charged with maintaining a critical ETL pipeline. Its result is the main inputs for a recommendation system generating huge sales in a top successful company product.
From an outsider’s point-of-view, you are looking at an inexperience engineer tasked with overseeing a mission-critical software. Disasters are bound to happen.
But I won’t talk about the technical solution in this post. I’m sure that it will be boring enough that you guys will close this browser tab before you even read half of it.
Instead, I want to share the lessons I learned looking back at that event. Those lessons are distilled into the 5 Tips below to help you steer clear of the sad outcome.
The Good Intention
Please allow me 5 sentences before presenting the Tips.
Readers coming from other professions may notice and wonder why we corporate engineers frequently have to work on weekends.
Believe me when I say the root cause is our unreasonably high responsibility and expectation of our work. My thoughts were usually “Just a little bit more and I can save the business” or “Just a little bit more and I can deliver this mission critical feature today”.
So if you see friends who are in the same situation, please support them. They didn’t mess up, they just had too much good intention.
Tip #1: Release Policy
This policy is simple:
- Never release on Friday afternoon or any afternoon before your day off.
- If you have to release in those forbidden times, always make sure roll-back is possible and convenient.
If your workplace doesn’t have similar policies, propose to your boss to make it available. If you cannot do that, keep this to yourself and use these following tricks to avoid violating it.
- I cannot finish it in time to today without making sure everything works as expected, but I will definitely finish on the next monday.
- I can try to release today but there is a huge risk of failure and we have no plan B.
- Let me finish testing this code today so we can have a safe release on the next monday and be done with this feature.
We don’t deceive our colleagues or bosses. Please don’t do that. The point is to show valid reasons to delay the release. Usually, safety reasons are the most convincing.
But sooner or later, there will be times when it is inevitable to release on Friday afternoon. Such as when the business promotion campaign is scheduled on weekends.
In those cases, a roll-back mechanism is a must-have. And to have it, pay attention configurations before doing code change. The goal is to have a button or equivalents to revert the system back to the state before the release. Then make this button accessible when you are not at your office desk.
🧯 Design for Backward Compatibility so you can roll-back safely.
Having a colleague doing this for your also works. But please let him/her knows beforehand.
Tip #2: Don’t count weekends into estimates
It may sounds strange to many people to count 2 days from weekends into estimates. But once in a while, it is very tempting to do so.
After all, saying out loud to everyone in the meeting that you can finish the task on Monday feels more superior than on Wednesday. Doing so briefly transforms us into a Rockstar Developer with an additional benefit of good impression on the boss.
But hear me out, don’t ever do this. To see why, consider these scenarios:
- Your kids want to go swimming pool with you, thrice a day.
- Your flight is delayed.
- Your dog eats weird things and you need the vet’s help to make sure the poor soul is ok.
- Your girl friend calls asking to go to the amusement park together, immediately.
These are unexpected scenarios that can happen any day of the week, including those two precious weekends. Thus, we want to avoid putting ourselves in the situation of having to choose between these events and finishing the committed task.
💡 The consequence of breaking the task estimate is losing trust and ruining the project timeline.
Tip #3: Ignore non-urgent chats
Urgent Chats are about live issues and require immediate investigation.
We will only allow those messages to have our attention. I use these 3 steps:
- Identify chat channels or threads that contains Urgent Chats.
- Setup notification only for those channels. Make sure the notification can reach your phone timely. Additionally, allow it to get your immediate attention by setting a unique ringtone.
- Open your work chat app if and only if you receive the notification. Ignore everything else.
While responding to chat messages promptly does give the impression of a diligent engineer, the drawbacks outweigh the benefits. You have disclosed that you are online. It now becomes harder to ignore subsequent messages. Especially when the other person is your boss.
This situation is best described by Oliver Burkeman in his best-seller Four Thousand Weeks: Time Management for Mortals, using email instead, as follow:
you’ll become known as someone who responds promptly to email, so more people will consider it worth their while to message you to begin with
Tip #4: Ignore non-critical alerts
Critical Alerts refer to ones that require immediate action. Such as a total failure of the company’s only payment system. Others should be counted as non-critical.
Similarly to Tip #3, we do 3 steps:
- Setup an Alert Sink. A place to where all Critical Alerts will be sent. If your company is using chat apps like Slack, the Sink is a dedicated channel receiving those alerts.
- Setup notification for Alert Sink. Make sure the notification can reach your phone timely. Additionally, allow it to get your attention by assigning a special ringtone for example.
- Check work chat messages if and only if you receive the notification. Ignore everything else.
💡 If a message doesn’t require immediate action, then it’s only makes sense to address it later.
Tip #5: The weekends are for you
Seriously, there are only 7 days in a week, and our work already consumes 5. That is 70%, a tremendous imbalance.
If week days are money, we are effectively giving 7 out of 10 coins we have to the company and only 3 coins to our loved ones. Worse, this exchange repeats for decades.
Of course, work is necessary. What I’m trying to say is you really should give the little 30% remaining days to other important aspects in your life. Otherwise, the existing imbalance will only worsen.
Doing this may put you 2 days behind, but if that task at hand is not urgent, then it really doesn’t matter in the end.
Work is infinite and our effort is finite, none of us are going to reach the end of “work”. So to go far, I vote for producing consistent and quality work over the long term. It’s a sustainable approach that allows us engineers to stay sane and live our lives to the fullest.
This perspective does not belong only to myself. It is directly or indirectly suggested by distinguished individuals worldwide.
In the book Slow Productivity: The Lost Art of Accomplishment Without Burnout by Cal Newport, the author argues that Slow Productivity is a sustainable and meaningful approach for knowledge workers. It contains these principles:
Do fewer things.
Work at a natural pace.
Obsess over quality.
Or in How to Live on 24 Hours a Day by Arnold Bennett:
If a man makes two-thirds of his existence subservient to one-third, for which admittedly he has no absolutely feverish zest, how can he hope to live fully and completely? He cannot.
Similarly, in Four Thousand Weeks: Time Management for Mortals by Oliver Burkeman:
Rendering yourself more efficient — either by implementing various productivity techniques or by driving yourself harder — won’t generally result in the feeling of having “enough time,” because, all else being equal, the demands will increase to offset any benefits. Far from getting things done, you’ll be creating new things to do.
And finally, these wise words told by a legend:
Remember that careers and jobs are long-term things. Too many young people think they can optimize something and they find they’ve spent couple of years or more specializing something that may not have been the right thing and in the process, they burn out. Because they haven’t spent enough time building up friendships and having a life outside computing.
~ from an interview with Bjarne Stroustrup, the creator of C++.
Responsibility to our work is important, yes. But don’t forget that we are also responsible for our bodies and minds, our families, and our friends.
I hope that the tips above will help you secure your precious weekends successfully. In fact, I know you will succeed. I have tried and seen it.
If you have more tips, let us know in the comments. Let’s meet again on a future post.
Top comments (0)