Summary
Most coders can’t program for 8 hours a day, at least on a regular basis. Those who can without chemical aids are not the majority, those who want to are less than that, and those who actually do even less.
Not to say those people don’t exist, they do, and they can be fantastic colleagues. But if you can’t, this doesn’t mean you don’t have a future as a dev.
My favorite curve
Human characteristics are often Gaussian. IQ, weight, height, all follow a distribution where most individuals are close to the average, and extreme values are underrepresented.
The capacity to code is no exception.
Coding is a complex activity that requires a lot of effort. It’s strenuous because you have to maintain focus and abstract thinking, while holding a lot of information in your head, plus juggling with various interconnected contexts in a field where the quantity of information is very large.
The ability to sustain this process for a long period of time is, as you can imagine, also following the Normal law. So most humans are in the middle of the curve, where they can comfortably perform it for a few hours at a time.
Lots of factors influence this:
Number of interruptions.
Experiences.
Age.
Environment.
If you use chemical aids (coffee, sugar, THC, amphetamine, etc).
Difficulty of the problem to solve.
And so on.
But the average is NOT 8 hours a day, even when you account for the time when you are thinking about what to code under the shower. It’s not a full day of work. I’ve been collaborating with more than a hundred companies so far, because I’m a freelance dev and trainer. I would say my sample is fairly representative.
Most people I met can program a few hours a day, indefinitely. They can program 8 hours a day for a few days. But they can’t program 8 hours a day, forever. They hit diminishing returns, until they burn out.
The 10x programmer
I don’t know why there are backslashes about the existence of the 10x programmer. There is nothing surprising about the fact a part of the population has certain skills that most people don’t have. Outliers have always been a thing. Unless you are going to deny John von Neumann and Usain Bolt have existed, you have to accept the idea some individuals are able to produce results you can’t.
Yes, some people can program for longer.
They then get more experience, since they work more. And so they become more productive, know more things, which then they apply during the longer period they can work. This compounds.
And yes, some of them are capable of collaborating with teams, being incredible colleagues, producing beautiful software, and raising the bar for everybody. It’s a pleasure and privilege to work with them.
They produce literally 10 times the result than most people do. Sometimes more. This is not a myth.
But they are rare, and you should not use them as a baseline.
Personally, I average about 4 hours a day. Not 4 hours of work, mind you, I have many other things to do in a day. But 4 hours of coding. I can do more, I have done more, but doing it for too long will exhaust me.
I am not a 10x, and pretending I am will do nothing good for anybody.
The spectrum is back
Here I am with the damn spectrum again. But it’s a curve, y’all, of course, it’s a spectrum. You don’t have 10x and 1x, you have 0.3x, 5x, 1.479878x (and -2x because aggressive imbeciles are also part of our reality)...
You are somewhere in there and you have to figure it out. Also, it will change with time, since as usual, it’s nature AND nurture. It’s also not just a matter of how long you can program. Your ability to prioritize, communicate, and collaborate plays a role. But that’s not the meat of this post, so I’ll leave that aside for another day.
This means you will have to adapt your rhythm, and the size of the task you are going for, plus manage expectations, yours and others, to be a happy coder. This:
Is likely to not play in your favor. Figure out what you can do, and find the load that fits you. If you like it, you may attempt to outgrow this by giving yourself more challenges or even putting yourself in an extremely hard situation. However, remember that life, often in the form of customers, bosses and DDOS, will bring that to you anyway.
However, starting from the number of hours you wish you’d put in is backward.
Coding software is a long process, and despite the fact we may call iterations a sprint, we are more in a marathon type of situation. You need to find a context you can fit in, for many, many days.
Now, I’m not against trying things out and failing in a crash and burn. It’s part of the discovery, and sometimes of the fun. Plus, some industries, like video game studios, will often have this kind of culture. But you have to know what you sign for and the consequences of it.
I'm Mr. Meeseeks, look at me!!!
More than that, this article is a message to all those people with an imposter syndrome because they see everybody rocking a full Github page, posting Youtube videos of super cool projects and making bank at some exotic startup.
I didn’t have this problem, because I started programming at a time when high-speed internet didn’t exist. I didn’t know it was possible. I went to the office, and saw mostly normal people doing normal things. Sometimes, I met a super productive dev and was impressed, but I wasn’t phased by it, because my reference point was my life.
Today people use what they see online as the reference point.
This is going to kill you.
The people you see the most online have a great likelihood of being the more interesting or prolific ones. By definition, they are not average.
If you watch streamers, the gap is even greater. AnthonyWritesCode or PirateSoftware may broadcast a casual attitude, but their perfs are in the one percentile. They would deny it, though. But I peer-coded with Anthony once and I had to focus just to keep up with his typing. In a terminal editor he wrote himself.
You can use them for inspiration, to learn, to get motivation, but certainly not as a reference point. Yes, even that guy with a weird haircut who seems to do plenty of typos while streaming on Twitch and telling you how dumb he really is. Because that guy works at Netflix, and that’s already a tremendous filter. There are incompetent people at Netflix, for sure. But the concentration is much less than outside of it, for the simple reason that to build and maintain a system as complex as Netflix, it cannot be otherwise.
Plus, have you tried to live code while explaining it? It’s hard. If you can do that, you are already quite competent.
And you may reach that level. You may even exceed it.
Or you may not.
But this is not the baseline.
What do you want to do?
Being able to program 8 hours a day is a great asset, no doubt.
However, it is not a very interesting goal.
It’s a means.
Just like having millions of dollars is a great asset, but an uninteresting goal. It’s a means for material freedom, having the power to do certain things while avoiding others.
In the same way, what do you want to achieve that requires 8 hours of coding a day?
Software exists for a reason. To solve a problem, to be sold to a customer, to provide fun to the author…
It also lives in a world of constraints: resources you can afford to build it, skills available, deadlines, or administrative burdens.
You should focus on achieving that goal. You may eventually do it by coding 12 hours a day, or 2. It will matter, and have important consequences.
But the desire to reach those 2 or 12 hours is not the starting point.
Start with the goal and constraints.
How many hours you can sustain coding, is a constraint, not a goal.
A constraint you can stretch, train for, and force or workaround.
But a constraint nonetheless. The laws of physics will bind you no matter what. And I get it, you need or want money, status, self-esteem, and so on. Plus, who wants to be like most people? Nobody ever said to a friend, man, you are _so_ average, it’s awesome!
Still, there is no point in fidgeting because gravity and thermodynamics team up with a Youtuber to show you what’s up.
A better framing
Why do you want to code 8 hours?
Is it because you want to say that on your resume to get hired?
Is it because you want to brag?
Is it because you have a deadline?
Is it because you want to prove to yourself you can?
Is it because you love it and you wish you could code as much as possible?
It is because you want money and the amount of it depends of the hours you put in?
The reason matters, because the solution is very context-dependent.
I’m going to assume here you decided you wanted to be more productive, coding-wise. It’s not everyone’s goal, so make sure it’s what you want, it comes with pros and cons as usual. But once you have decided that, there are actually many thing you can do rather than pushing for more hours.
Saying no, avoiding multitasking, protecting yourself from interruptions, using good tooling, and surrounding yourself with the right people are likely to yield as much, if not more productivity, than grinding.
It will also help with the grinding, in fact. It’s easier to work more hours if you have to care only about that.
But what if you actually really, really want to do 8, 12, 18 hours of coding?
There is no secret, you have to give up a part of your life. It can be sleep, it can be social life, it can be family, it can be health, it can be play… And do it until you develop the capacity to handle more, accepting the price and discomfort.
Some people don’t see that as a price to pay. They love it.
Some think the trade-off is worth it.
Just don’t be the person that chases for it like an ideal, you’ll be disappointed.
And if you don’t reach it, remember most people don’t either. Including many who consider themselves successful.
Are a lot of developers on Adderall and Vyvanse?
Just registered to Substack to finally comment upon this blog. I've been a quiet fan for a long time, and so are many of my friends and colleagues. It is a wonderful resource for learning more about Python (and other interesting perspectives as in this blog post), so thank you and keep up the good work!