How programmers can be more productive by following the most important rule of productivity

Our goal is to be productive, not busy. Nobody wants to be an overworked underachiever, yet many of us find ourselves in such a terrible position.

Two people sitting in chairs. One of them works on a laptop.
Photo by Helena Lopes on Unsplash

Is it possible to run seven companies simultaneously, build a global business while working a few hours every week and spend 3-6 months a year traveling? I don't know how to do it, but I know who does - Mirosław "Miroburn" Burnejko.

Miroburn is a Polish entrepreneur who describes his approach to life as "optimizing life to get the maximal personal freedom." He used to work in IT, so even those of us who don't want to start companies can learn something from him.

Why should we care? We should pay attention because he has one critical productivity rule that is the bedrock of everything else. What is it? Four words:

Eliminate, simplify, automate, delegate

Would you like to learn how to apply the rule to your life? Brace yourself for a long article. It will be worth it!

Trees surrounded by brown fields
Photo by Cristina Gottardi on Unsplash

Doing less

At first glance, it looks like I lied to you. I promised you one crucial rule, and now I am talking about four necessary actions. Not quite. Every time we take those actions, we have fewer tasks to do ourselves.

Doing less and being focused is the entire productivity trick!

We'll use those four actions to limit the amount of work and gain as much free time as possible. After all, our goal is to be productive, not busy. Nobody wants to be an overworked underachiever, yet many find themselves in such a terrible position.

To become relaxed high-performers, we must apply Miroburn's productivity rule in the proper order. Let's start with elimination.

Old boxes stored on wooden pallets
Photo by Alfonso Navarro on Unsplash

Eliminate

The problem with productivity hacks

Productivity doesn't mean having a packed schedule and a mile-long to-do list.

You can use the Pomodoro Technique, wake up at 5:30 am, start the day imitating the morning routine of billionaires, hit the gym at 6 am, run a half marathon before breakfast, eat one meal a day, spend half of the money on diet supplements recommended by biohackers, and still achieve nothing.

All of those things may or may not matter. The problem is that hacks don't make any difference if you spend the entire time efficiently doing low-value work.

Working 14 hours a day and finishing 40 tasks is a waste of time if someone else could do those things cheaper and better than you. However, we won't focus on delegating yet. What's even worse than working on stuff someone else could do is working on something that we shouldn't do at all.

Eliminating low-value work to focus on essential tasks

It seems we instinctively know we should focus on the important task. But what is an important task?

We tend to confuse urgency with importance. Even when we don't fall for the urgency bias, we focus our efforts on low-hanging fruits or the tasks having the loudest proponents. We get distracted by what we see on social media. All of the other tech companies build MLOps tools and work with blockchain! That must be important! Well, not all of them, only those followed by you and those who are vocal about their work. Second, are they earning money from real customers or draining the investor's pockets?

To focus on the right stuff, we must figure out what is important. How do we do it?

Finding the important tasks

I suggest making a map of dependencies between your tasks and ideas. It doesn't matter how you do it as long as you can spot the stuff on which everything else depends. You can draw a mind map or use the Mikado method to find the dependencies.

I remember one project when we forgot about eliminating needless tasks. We were building a content delivery software. It was a replacement of a service we were renting from another company, and we were supposed to launch on the day when the contract ends. Missing the deadline was not an option.

Somehow, we spend months redesigning the user interface, building a design system (Whatever it is. I'm a data engineer, so I have no clue), and implementing a self-service configuration mechanism. Were those things useful? Yes. Were those things important? Yes. Were they critical? Hell no.

During the 18 months of project development, we repeatedly ignored the need to display the content to the users. We still had the rented service, and according to the contract, we could not switch it off even for A/B testing of another solution. We focused on building attractive-looking features. We prioritized getting prised for the UI design during product demos and almost forgot about the one feature without which everything else would be useless.

During the last two weeks, we implemented the delivery service working long hours in a quite unpleasant and hectic work environment. In the end, we managed to finish everything a few days before the deadline. The developers were yelled at and worked on weekends to meet the deadline. The product owner who prioritized the wrong things went on a trip with the rest of the management team to celebrate the successful project—business as usual.

What could we do differently? Could we eliminate something? The old system was based on Excel files uploaded by our sales team. We could use those files instead of building a self-service application from scratch. We could refrain from making a design system for a B2B application. After all, does anyone care about the UI in a configuration manager? What we couldn't do, though, was ignore the content delivery.

That's the point. In every project, we must do some things no matter what. Everything else is extra. We can add those features later or never. I opt for eliminating the nonessential features at least from the initial plan. We can always add them later when we build the second version.

Eliminating the unimportant tasks - the only productivity hint you need

It is great to prioritize the critical tasks, but skipping the things you don't need at all is even more important. What can we cut?

Applying the ROI (return on investment) to everything you do is one of the best productivity tips you can learn. Sometimes doing the task is not worth the effort.

Let me show you an example. I have two blogs, speak at conferences, teach workshops, and have a side hustle as a content writer and MLOps evangelist. Would it make sense to me to be more active on Twitter? It is good to have many followers on social media, but is it worth the effort? I don't think so. I think of myself as a content creator, not an online talker.

It is more difficult to monetize a Twitter thread than to sell tickets to a programming workshop. It's a blunt statement and 100% true, and it helps to eliminate ideas with minimal business/career impact. Of course, a vast Twitter following helps you with your career (for example, when you are looking for a new job). However, you can get a similar career boost with an email list or a tech blog visited by thousands of people every day.

You can't do everything. Focus on the high-value work.

A person holding black scissors
Photo by Tá Focando on Unsplash

Simplify

We can eliminate the entire task. However, applying the ROI thinking to individual tasks can also eliminate the unnecessary parts of things we decide to do.

We won't need as many productivity hacks when we have less to do.

Done is better than perfect

Productive people know they can stop working before they create a perfect product. Working on multiple high-value tasks is better than wasting time trying to be the best in one area.

Of course, sometimes being the best is the entire point of the task, for example, when you train for a sport's competition. Finishing a marathon run is an outstanding achievement. However, there are thousands of finishers and only one winner. In such cases, perfection is the only way.

Nevertheless, most of the time, we don't need perfection (yet). Perfectionism is often an excuse to postpone showing your work to the world or to give up.

Productive people don't wait until the work is perfect. They save time by showing good enough work to their clients or audience. They may already finish the work because people are satisfied with the outcome. On the other hand, maybe nobody wants the product, so it makes no sense to continue working on it. It's better to know about it early.

Every time we work on a task, we should ask ourselves whether we can simplify it a little bit while still getting most of the desired outcome. Our goal is productivity, not being tired, overworked, and disappointed with our lives.

For example, I could hire three editors to review this text before publication. It would be expensive. It would take lots of time. But maybe... maybe! I could get 10% more views. Is it worth it? I don't know yet. I will edit the text twice or perhaps three times and publish it. In three months, I will see how many people read it and whether it makes sense to invest in making it even better. After all, I may get dozens of emails saying how much you hate this article. That's why I stop at the "good enough" stage. I can always go back and do more later, but I would never publish it if I waited until the text was perfect.

The interior of an industrial building
Photo by Ant Rozetsky on Unsplash

Automate

It should be easy for programmers. Yet, somehow we spend lots of time doing manual tasks which we could automate.

Templates

You don't need to write scripts! Often, all you need is an email template!

How many times per week do you get a LinkedIn message about a job offer you are not interested in? How many of those messages look like a copy-pasted text or something sent by a bot? What do you do? Do you ignore them? That's one option. Although, I think it is rude. Instead of ignoring the copy-pasted messages, I reply to every message. Is this a waste of time? No! No, because I have a template saying, "Thank you for your message. Currently, I am not interested in new job opportunities." That's it—a copy-pasted response to a copy-pasted message.

Don't overdo it. I still write a unique response to messages about jobs I am interested in now, or I may be interested in a few months or years. I still say that I am not interested right now, but I also give them a non-lame reason and the time when we can talk about it again.

Documenting processes

Templates are the most straightforward automation, but we can do better without writing code.

What if we have six steps to do every time something happens? What if I have to pack a backpack for travel to a three-day-long conference where I am a speaker? Should I think about what I need every time it happens, or can I have a process? Or a checklist. A checklist is the simplest kind of process!

Having a list of things you have to do before travel or something you must take with you is the easiest way to ensure everything gets done, especially when you have one hour left until you leave the house and try to recall what else must get done.

Prepare your checklist before you need it, and mark the tasks as done when you are getting prepared. It doesn't matter whether you print the list, keep it in a to-do app, or a text file. What matters is adding new things to the checklist every time you realize you have missed something and removing useless steps from the list.

Did you assume that every conference room has wifi, and it turned out you were wrong? Next time, you can either take an ethernet cable and hope you see the socket on the wall or buy a mobile router. You can also write an email to confront your expectation with reality before you arrive. Will you remember about it? Probably no, so add it to the checklist!

Real automation

The ultimate goal of automation is to don't do anything manually. You automated the process, and it is running on its own.

Get used to writing scripts! As programmers, we should be comfortable doing it. However, I see many developers who waste lots of time clicking around UI or copy-pasting commands into the command line.

You don't have to automate everything. I recommend automating only the steps required to get the job done and avoiding automating the decision process for as long as possible. I want you to understand why you are doing something before attempting any decision-making automation.

It doesn't matter whether you use software for automation or delegate the process to other people. In any case, from your perspective, the task got automated.

A group of people riding a boat
Photo by Quino Al on Unsplash

Delegate

If you think the only way to get something done well is to do it yourself, you will be a sad, overworked underachiever. You don't have to do everything yourself. You are not the best person for every task.

How do you think Mirosław Burnejko runs seven companies while spending half of the year on vacation? He sets things in motion and lets others do them according to his process.

You don't need to be a manager. You can do it too. You can do it even when we are individual contributors working in a team.

Are you the best person to do the task?

The first question you should ask yourself is whether you are the best person to get it done. Do it whenever someone assigns a new task to you or when you think you should do something new.

I'm getting a new website designed right now. I could do the entire UI myself. After all, I want something so simple that even a data engineer can create it. At the same time, I don't want to spend hours checking how my website works on mobile phones and figuring out what combination of colors looks good. That's why I paid someone to prepare an HTML template for me.

You can delegate tasks too. The first thing you have to do is figure out your hourly rate, or even better, your aspirational hourly rate. You can also follow the Naval Ravikant's advice and set an absurdly high rate. He chooses $5000/hour.

When you consider delegating, check whether getting it done will cost you less than your hourly rate. Of course, when making the decision, you compare the cost with the actual hourly rate. The aspirational one works best as your inspiration to spend your time getting better.

Delegating when you are not a manager

How can you delegate as an individual programmer? It gets tricky, but you can still do it.

First of all, don't think about it as a delegation. You will ask people to do you a favor and do favors for them. If you aren't a manager, that's the only way. I work like this with our DevOps team. Formally, I can't delegate anything to them. But I can ask whether they can do something for me, and I help as much as possible. Also, I make sure I don't ask them to do boring stuff. I want to be a person who asks them to help solve cool problems.

When you can't ask people for favors, you have to convince your manager to delegate to someone else. Can you convince them that another person can do the task better than you? You have to be careful here, though. If you do it too often, you will look like a slacker. On the other hand, if you get everything done, and occasionally you ask to get a task delegated to someone else, they will agree.

Eliminate, simplify, automate, delegate

In summation, to be more productive, we must do four things:

  1. Eliminate low-leverage tasks.
  2. Simplify the tasks you decided to do to get the highest possible outcome with minimal effort.
  3. Build a process to save the time you spend making decisions. Additionally, you can use software to automate it.
  4. Find someone else who can do those tasks for you (or keep using the software automation).