Sina Khalilisinakhalili.com

You can get a lot less done than you think

It is remarkably easy to overestimate what you can accomplish in a given span of time. Our intuitions about productivity are often little more than wishful thinking. I used to think of myself of something of a "fast" coder. Able to whip something sort-kinda working in a small amount of time.

Quintessential to this self-image was that coding was easy. You just kick back, relax, and let the code flow. And flow. And flow. And wow, woodyalookatthat, you accomplished something... pretty minor.

Recently I've tried using the llama life timer to measure some of my tasks. I think measuring time out like that clarifies time, much in the same mathematics clarifies thought.

Coding fast isn't "easy".

It is simple to say “today I will design a landing page.” But that statement belies the multitude of components involved: header, footer, content sections, visual styling, responsiveness, SEO, analytics, hosting, and domain configuration - each comprising numerous tasks of its own. Only by meticulously breaking down the work into discrete steps, and realistically estimating the time required for each, do we come to recognize the scale of what we have undertaken.

I recently tried mapping out precisely what I was going to work on. It's easy to think "Oh I'll do that in a few hours" but when I actually sat down to do it - well a 26 minutes here, 26 minutes there, and wow that's your whole workday. I was focused! I was flowing! And yet, I didn't get much done. Why?

Each task has substasks. Each subtask has a potential landmine of misunderstanding you have to read into (oh no! I never setup a job queue from scratch before! I always joined the team after!)

Sober up

First, you give everything an estimate:

  1. Header - 40 minutes
    1. Logo - 15 minutes
    2. Nav - 25 minutes
    3. Links - 15 minutes

And you do it for the whole day's task:

  1. Header - 40 minutes
  2. Footer - 40 minutes
  3. Body - 40 minutes
  4. Content - 40 minutes
  5. Styling - 40 minutes
  6. Responsive - 40 minutes
  7. SEO - 40 minutes
  8. Analytics - 40 minutes
  9. Hosting - 40 minutes
  10. Domain - 40 minutes

And then you realize that's 400 minutes, or 6 hours and 40 minutes. And you only have 8 hours in a workday. This is what you can get done in one day.

That is, if you were some sort of superhuman who could work 8 hours straight without a break, without a distraction, without a single moment of confusion or misunderstanding.

Then you multiply everything by 4. Because you're not a superhuman who can work 8 hours straight without a break, without a distraction, without a single moment of confusion or misunderstanding.

This 6 hour and 40 minute task is realistically going to take you 2-3 days.

And that's just the first task. You have 10 tasks. That's 20-30 days of work. I think it it possible to be fast, crazy fast like how you think you'll code in your head. But it's not going to be easy. That's the main point I want to make.

People aren't breezing through code because it's easy. Sprinters aren't running "easy" they're running "fast". It's hard. It's hard to run fast. It's hard to code fast. It's hard to do anything fast. So if you want to code fast you can't take a casual approach to it.

You have to really push yourself.