Want to improve? Add a delay

Want to help support this blog? Try out Oh Dear, the best all-in-one monitoring tool for your entire website, co-founded by me (the guy that wrote this blogpost). Start with a 10-day trial, no strings attached.

We offer uptime monitoring, SSL checks, broken links checking, performance & cronjob monitoring, branded status pages & so much more. Try us out today!

Profile image of Mattias Geniar

Mattias Geniar, June 11, 2020

Follow me on Twitter as @mattiasgeniar

If you’re a bit like me, you’re probably impatient. You want things to move quickly. There’s no time to waste!

Over the years, I’ve come to realize that most of my biggest mistakes - whether technical or personal - have come from rushing things.

My solution? Delay everything. Let me explain.

I should not have said/typed that

Ever had that feeling where you said something you instantly regret? You accidentally shared a secret you shouldn’t have?

Or you offended someone, only to seconds later realize why it was offensive in the first place and you didn’t mean for that interpretation?

I have that all the time. While it’s very hard to delay real-time feedback while talking to someone, you can delay feedback with any kind of online communication.

By best emails, blogposts or tweets have been the ones I scheduled. I typed them, delayed the sending and have always come back for minor tweaks here and there to the content before they got published.

My worst emails, blogposts or tweets have always been the spur of the moment sends. Lame jokes, badly thought-out reasonings, emails that only contain half what I wanted to say, …

Consider adding a delay to all written communication. Even a 5-minute delay can help you rationalize your thoughts and make minor adjustments. Not everything has an undo button in life, but a short delay gets you halfway there.

I think I agreed too quickly on that one …

How often have you gone back over previous events and thought to yourself: I should have given that some more thought.

Whether it’s a salary negotiation or the purchase of your car or home, I’m willing to bet there are things you regret in hindsight. Things that have cost you money, possibly substantials amount of it.

There’s no harm in saying “let me get back to you tomorrow".

Almost any type of negotiation can be delayed or postponed. If it can’t be, if there’s such a time-rush or deadline, you’re most likely just experiencing FOMO - the fear of missing out - and your brain is tricking you into taking decision too quickly.

Don't be afraid to postpone the final decision by a day. A nights rest can do wonders for clarity and your rational thinking.

Oh no I didn’t just execute that, did I?

Can you spot the mistakes with any of these commands?

$ cat existing.csv | sed 's/,/\ /g' | awk '{print $1}' > existing.csv
$ mysql -h localhost db < db.sql
$ rm -fr /var/ backups/2015/06

The first one will overwrite existing.csv, accidentally deleting your original file. The second one imports a database you may not have intended to overwrite. The third one has an added space that will accidentally delete your entire /var directory.

Woops?

I try to make a habit out of executing potentially dangerous commands, by creating a small shell script first, and organising my thoughts in there. This gives me time to re-think my actions.

This doesn’t always work though. Most errors are only realized when it’s too late. Any delay here, even a 1 or 2-second one, might help - but it would also be frustratingly annoying to work at a terminal that delays everything you type. What’s the best solution here?

Consider putting destructive CLI actions in a shell script, for extra cognitive distance between the writing of a command and the execution of it. It's a layer of friction that buys you some time.

Delaying critical actions, allow cancellation time

A script to e-mail all your users about a new feature, migrate important tables, convert data-types, cleanup old database records, consolidate old records, …

What do they all have in common?

They do some kind of mass operation that, when it goes wrong, impacts a lot of users.

You don’t want to send that email to all users with a typo, you don’t want to mess up a database migration, you don’t want to convert floats to ints in a database and lose all decimals by accident, …

Every critical action you can perform can benefit from a time delay. Something as simple as this:

<?php
if (app()->environment('production')) {
    $this->info('Starting in 3 seconds ... use CTRL+C to cancel.');

    sleep(3);
}

That’s just the right amount of delay to give you a chance to hit CTRL+C and cancel it. Just enough time to go oh shit and undo your action.

When programming, add a small sleep() delay to any destructive action. Make a habit out of this, and one day it'll save you.

The onosecond

Tom Scott recently published a video about his worst typo ever made. In it, he references the onosecond.

That’s the Oh No! second. There’s a weird thing in our brain that gives you instant clarity as soon as you do something. The ramifications instantly become clear after you did it.

Adding a delay to the most important things you do can greatly improve the accuracy, efficiency and impact of your action.

It won’t kill you to delay sending a tweet by a few minutes, or publish that blogpost a few hours later. It won’t hurt to send an email 30 minutes later (you probably postponed it for days to begin with).

It won’t hurt, but it just might help. 😉



Want to subscribe to the cron.weekly newsletter?

I write a weekly-ish newsletter on Linux, open source & webdevelopment called cron.weekly.

It features the latest news, guides & tutorials and new open source projects. You can sign up via email below.

No spam. Just some good, practical Linux & open source content.