Laziness and Impatience - An Engineer's Journey

The hardest part is the waiting!

I used to have a relatively derelict blog (the one you're on now) where I would jot down some of my thoughts and experiences...maybe once a year 😂

Some time ago, I defined myself a personal project: to write way more often and at a, mostly, regular pace (in case you're interested, I'll get to the reasons in another post).

Now, mind you, I’m a software engineer - by passion and profession. I dabble in deterministic systems (Terms & Conditions Apply 😅). Usually, I've got a good grasp of the problem to solve, and I build a machine (a la Turing) to solve it at the speed of electricity. The feedback loop is a beautiful, tight and merciless thing. It works, or it doesn't. It's fast, or it's not (Terms and Conditions Apply...yet again 😁).

So, when I was planning my nice little project, I was not mentally prepared for what was to come. At. All.


The Whiplash

It's been a couple of months into the project now. I've written a couple of new blogposts and refreshed a few of my older posts which I found still-relevant.

I've been obsessing over all the little details: from the choice of words and whether this should be in bold face or that should be a heading to sweating the heck out of LLMs to generate the image that I wanted after a thousand iterations.

And I was quite satisfied with every post that I worked on: they were up to my personal standards.

So, naturally to let people know about my cool posts, I followed the playbook you'd find on the internet:

  • LinkedIn post? Check! And yes - the link was always in the comments 😂
  • Mastodon thread? Check!
  • Substack note and post? Check!
  • I even submitted my link to HackerNews for a couple of them.

And, to my engineer's mind, all that was supposed to invite wave upon wave of enthusiastic readers to my weblog abundant with, allegedly, high-quality posts.

In strict terms:

@Test
void testBlogUpProject() {
    // GIVEN
    var post = produceGreatContent();

    // WHEN
    blog.publish(post);
    linkedin.withLinksInComments().publish(post);
    mastodon.publishThread(post);
    substack.publishNote(post);

    // THEN
    assertTrue(isAbsolutelyDazzlingSuccess());
}

Well, as you have already guessed, the reality was entirely different!

When I check the stats of my posts on LinkedIn, I usually see 700 to 1000 impressions in the first week. Not bad, eh!? Except that my blogpost would be viewed only 40-60 during that period!

Naturally, my brain flagged this as a catastrophic failure: A 4% to 9% success rate? In any automated system I’d build, that would be a terrible bug, a SEV0 incident 🚨

My gut reaction was that my whole process was broken and painfully, maddeningly slow.

Guess what!? It is slow. But it turns out, it’s not a bug - it’s the central feature of the human world 😁


The Billboard

The mistake I was making was thinking of a social media post as a script I was adding to the CI/CD pipeline.

It's not.

A social media post is much like a billboard on the side of a highway.

And the 700 impressions? Well, that was just the number of cars that drove past.

➡️ Most were thinking about their destination, listening to music, or just zoning out. They were simply not looking for a billboard.
➡️ A small fraction glanced over.
➡️ An incy-wincy fraction actually read the words.
➡️ And finally a microscopic fraction of those felt compelled enough to take the next exit and drive to the store.

When you frame it that way, 40 people getting off the highway to come into your shop is kind of a...wild success!?

This isn't a machine failing; it's a human system working exactly as it has evolved to: slowly and based mostly on trust and attention, not logic.


Your Inner Programmer

My first thought was that the core virtues of a programmer, as defined by Larry Wall, laziness, impatience, and hubris were liabilities in this new, slow world.

But I think I was just applying them incorrectly:

  • Impatience with the slow pace is a good thing. It’s what drove me to build an efficient and repeatable process and cadence (my "📈 Blog Up!" project) so I don't waste time on when to do what. I guess, I’m just impatient with inefficiency, not with the growth itself.
  • Laziness is, I believe, my greatest asset. It’s what forces me to focus on high-leverage, evergreen content instead of disposable daily chatter. I'd rather do the hard work once on a post, something that, hopefully, will invite wave upon wave of enthusiastic readers for years than write 20 shallow posts that would become irrelevant in a couple of months.
  • As for hubris, I'm sure it plays a constructive role in this model but I just haven't figured it out yet 😂

You shouldn't feel discouraged or, even worse, conclude that engineers are not good writers. It's just that you've got to point your engineering mindset at the right problems.


The Gardener

Preaching aside, you may wonder where does that leave me? Well, I've realised that building an audience is nothing like compiling code. 

It's very much like growing a garden.

You can’t force a seed to sprout and bear fruit in a day. You can’t A/B test a root system into existence. It just doesn't work that way.

Instead, all you can do is provide the right conditions: good soil (a well-tended blog), consistent watering (a sustainable posting cadence), and sunlight (thoughtful promotion).

Then, you've got to have the patience to let a sophisticated, nondeterministic and organic system grow at its own, natural pace.

It sure is a different kind of work: slower and less certain. But, out of the world of 1s and 0s, it’s the only way to build something that lasts.

 

Have you ever had to reconcile your engineer's mindset with the process of a building a community? Pray, do share your thoughts!


Enjoyed reading this? Subscribe to my free newsletter, The Engineer's Paradox. Every two weeks, I share behind-the-scenes stories and pragmatic tips that I don't publish on the blog.



Comments