Ask HN: Are most of us developers lying about how much work we do?

1665 points by ConfessionTime ↗ HN
I have been working as a software developer for almost two decades. I have received multiple promotions. I make decent money, 3x - 4x my area's median salary, so I live a comfortable life. I have never been fired or unemployed for more than a few months total over my entire career. Through most of that time I have averaged roughly 5 - 10 hours of actual work a week. I'm not even discounting job related but non-coding time as not work. There are literally days in which the only time I spend on my job is the few minutes it takes to attend the morning stand-up. Then I successfully bullshit my way through our next stand-up to hide my lack of production.

No one has ever called me out on this and my performance reviews range from mediocre to great. I'm generally a smart person. I went to a top 30 university, but it's not like I'm a genius or I'm coasting off connections made while getting a Harvard education. I wouldn't consider myself an abnormally talented developer. I often don't understand the technical details other engineers discuss in meetings. I have probably bombed more tech interviews than I have passed. All my jobs have been between 2-5 years so I'm neither finding a place to stagnate or leaving before anyone could judge my production. It feels like I am in the middle of the bell curve in terms of career success. So what gives?

Are most of us secretly lying about how much we are working? Do people regularly run into coworkers like me during their career and simply ignore it because they find it too awkward to criticize them? Have I just been incredibly lucky and every boss I have had is too incompetent to notice? Do I have imposter syndrome and I am actually a 10x developer whose laziness makes them a 1x developer?

These questions have kept popping up in my mind over the last year. Remote work during the pandemic has allowed me to finally be honest with myself and stop pretending I am working when I am not. I want to know if I was the only one pretending.

1,107 comments

[ 0.27 ms ] story [ 499 ms ] thread
I personally put a lot of effort on everything I do, and usually spend more time working then what I'm paid; Also to study, etc. It's my belief that there are better things to do with life, but there are tasks that require a lot of personal dedication and skill and that requires a ridiculous amount of time.
i monitor my work using a plugin and usually get 2-5 hours of code a day... and i have to do all kinds of communication work as well (JIRA, investigation, prepping QA test cases, documenting PRs)

i looked back and was getting 1k lines merged every 2 weeks on average. nothing crazy I know but theres much more then just coding to my job, thats just reality.

Days/weeks where i dont get a certain amount of code done i feel like actual garbage (like the last 2-3 weeks actually). So i try hard to make sure im moving the ball forward daily. The biggest obstacle to this for me is poor planning upstream, missing/bad requirements, missing APIs that are presumed finished, etc.

That seems pretty productive for an IC. If you are spending half of your time writing code, that's pretty good. You seem to be driven and a self starter, which is why you feel like garbage when you don't hit deadlines that you've set for yourself. It's a good way to keep yourself motivated, but try to keep things in the right perspective.

> The biggest obstacle to this for me is poor planning upstream, missing/bad requirements, missing APIs that are presumed finished, etc.

This is the best reason to go into management or take on role where you spend more time on this part of the process. If you do go into management, I recommend positioning yourself as a player/coach.

1k lines per week sounds like quite a lot. I'm a dev whose role is mainly supporting legacy systems and sometimes I write probably ~50 lines in a week and feel incredibly productive due to the issues I've resolved.
to clarify, my post says 1k every 2 weeks, not per week.
50 lines on a legacy system is much harder to write than the equivalent just jamming out new stuff. Also it's hard to compare lines cause it's not a language agnostic measure.
Imagine a security guard at an office building. 90% of the time might be sitting in a booth watching monitors. The other 10% of the time is buzzing people in or making rounds. But that 90% of the time when they are sitting around is important, since they are on call. So you are like a security guard. Your employer gladly pays you for the 90% of the time you are doing nothing, because they need the comfort of having a developer on call for when something needs to be done ASAP. They won't have to go to Upwork or wherever to find someone because you're already there. As long as you are 10x 10% of the time, you average out to a competent FTE and you are tolerated.
I think if that was his situation he wouldn't have to "bullshit through standup". Just say "nothing showed up" or "having a creative block" or whatever and then either get help or something.

It's not like the security guard at all, the security guard is not lying or consciously giving a false sense of what his contributions to the team are.

Part of the problem is that 'the company' accepts this 90% downtime, but managers running standups are paid to maximize productive output of their staff.

So you'd be lying to your managers with the end goal of behaving as the company expects you to.

This kind of internal tension is normal in lots of organizational structures. It's better if no one has to lie but it isn't (in my opinion) a disaster or anything.

This is how I view it. Unless you work for a startup where you need to churn out code every hour, you are paid for your expertise and ability to navigate incidents quickly and efficiently. You are a force multiplier as well as an individual contributor.
Like most analogies, this one fails completely. It's well-understood that the security guard does nothing but stay alert 99% of the time. He very explicitly needs to "do nothing" for long stretches of time.

Software development operates largely on trust that everyone on the team is putting in real effort. The manager trusts that when it takes you a week to finish a task, it's because it actually took a week of work, not a few minutes on Monday and then you watched YouTube vids and were on your XBox the rest of the week. And not just the manager -- everyone at the company would almost certainly like to move faster, and wouldn't be happy to know that features and bugfixes could be landing 5x faster, except for people who figured out that no one's checking up on them.

everyone at the company would almost certainly like to move faster

Not necessarily true. This is certainly the case at a startup, but at a more established BigCorp, things move slowly, and the ability of an engineer to work at a slower pace is an asset. You may be waiting on legal approval for weeks or months, or a software review from infosec, signoff from finance on integration testing for a new payment processor, or any number of processes that are not banging out code as quickly as possible (these are all actual examples from my company). In these cases, you shouldn't have to BS your way through a standup, but you will have times where a week goes by and you haven't written a single line of code, and that is exactly what the job requires.

> you will have times where a week goes by and you haven't written a single line of code, and that is exactly what the job requires.

OP is not saying that sometimes he's idle. Of course there are times when things move slowly.

OP is saying that in his entire software development career, he works 0.5-1.0 days a week, and never more.

Or demoing to stakeholders, gathering business requirements, communicating new content that needs to be received etc. Those are all important reasons to go slower too

Moving too fast doesn't benefit anyone

By "everyone would want to move faster" I mean: ship your product, whatever it is, at a high level of quality, sooner rather than later.

I'm not sure I'm familiar with any software project were people were glad it took as long as it did.

you honestly think they are this alert and actually work? Honestly most of them just watch tv all day long and sit out their shift. I've seen people's bicycles get stolen right in front of the security guy. Most security guys are useless and don't do anything all day.
Other people can probably tell when you're bullshitting, but if management isn't coming down hard on a deadline, it ultimately doesn't matter. Some types of the tech industry like games, I don't believe you can get away with that kind of lack of effort, but other areas its easier to.
I think the need for 10x developers is possible overstated on the internet. In my experience, teams generally figure out how to work around medicore-to-great developers and they're typically not an issue. People online also tend to wear their 40+ hour workweeks like a badge of honor. Many of the people who are 10-20 hour workers like to keep their heads down, both on the internet and in real life, so maybe they're underrepresented.

Ultimately, if no one is taking issue with you, you are getting your tasks done, and you are happy with your pay, then you are exactly where you should be.

To answer the question in the thread title: I don't think most developers are lying about how much work they do, I just think it skews higher online, and the people who work less don't really care to share, or aren't around to share.

> I think the need for 10x developers is possible overstated on the internet.

I don't really have any opinion one way or the other in most of this, but this part of your comment I completely agree with. Sure there are incredible talented people writing code, but the vast majority, even those writing Linux, Kubernetes or Postgresql, they aren't smarter than you and me, at least not by much.

There where a blog post by Jacob Kaplan-Moss "Embrace the Grind" which I pretty much agree with. Doing the work no one else care to do and just stick with it, even if it's boring for two weeks, that's the stuff that will make you look like a 10x developer (well maybe 2x).

Depends wildly on how many meetings I'm scheduled with.

I might work 6-8 hours if I don't have any meetings scheduled.

I tend to work about two or three if the meetings are scheduled in such a way that I can't accomplish anything worthwhile in between them.

I don’t think that what you’re doing is very common, but it’s not uncommon either. What you need to do this is to work in an environment where not being productive is not harmful. There are plenty of environments like this. For example, not doing any work but still getting paid doesn’t do any harm at Google. The company is making money anyway. At a small startup that’s under immense pressure people would realise what you’re doing because you’d harm the business.

I’m a big believer in Price’s Law - the square root people produce half the value. If there are 10000 people at the company, you can very well survive in the group of 9900 that does the other half.

I’ve worked at a small startup and find this to be untrue. If you’re working with people 10-100x worse than you, you can be sandbagging as hard as you can and still be miles ahead and look like a paragon of productivity.

Now, will that particular startup succeed? Probably not in the way their investors would like.

As someone who worked at both Microsoft and Google... you can get await with doing little work at those companies for maybe a year, two years at most, but after that you're gone. The expectation at those places skyrockets after the first year.
hypothetically, do you think if people weren't allowed to drink caffeine or use performance enhancing drugs (adderall etc..), what % would not make that threshold of performance?
No idea; most people I worked with drank coffee but never once was I exposed to performance enhancing drugs. At Microsoft I worked on IronPython and the people I worked with were productive not in the sense that they churned out 1000s and 1000s of lines of code a day, but they were productive in the sense that they were constantly outputting fairly novel solutions.

A similar thing was true at Google, I worked in the platforms division there (storage systems, BigTable, Linux kernel tweaking), and it was mostly about identifying bottlenecks and coming up with interesting solutions to squeeze out more performance. Most of this work wasn't like massive lines of code, but you had to really understand the problem at a deep level and have the kind of rigor and discipline to make changes to large systems without breaking anything in the process. That last bit was very hard to do, since coming up with optimizations that don't break anything is surprisingly difficult.

I’ve never mentioned my ADHD diagnosis and medication to my coworkers and none have ever mentioned it to me.
At Microsoft at least that wasn't my experience at all. I knew several people there who hadn't done any real productive work for the last 7-10 years, probably longer.
I've been in Azure and GCP. IDK how anyone would get away with it. You constantly have customer issues, people from other teams pinging you, needing help with something. I don't see how it would be possible just to do nothing and survive.

Maybe in some team that is further removed from customers?

Aren’t there still tons of developer jobs at Google, Microsoft, Intel, Oracle, etc. where you aren’t on call and just get to write code?
Not to disagree with your experience at Azure and GCP, but the grandparent specifically mentioned their parent entities: Microsoft and Google, each of which have several divisions apart from their respective cloud divisions.

Keep in mind that Azure and GCP are playing catch up to AWS, so they necessarily have to run a tight ship in order to close AWS’ lead.

So its possible for laxity to exist in other divisions in a large company, as long as the money keeps rolling in, e.g. the Windows division at Microsoft (which still enjoys a good share of the desktop market) and the Search division at Google (which still enjoys a good share of the search market).

Yeah, I mentioned Azure and GCP specifically, to imply that other divisions within those companies may be different. Anything where you're constantly deploying to enterprise customers, you're going to need to be responsive to issues that come up, and that alone will take a good chunk of the day.
At Google anyway, it's fairly common knowledge that cloud is a far more difficult place to work, both in culture and expectations, than most anywhere else in the company as a SWE.
That's surprising because I came from Azure, and Google Cloud is way slower than Azure was. Frankly I think that's why I failed at the job (separate thread). It feels like a "me too" offering, and the initiative and creativity just isn't there, and I just couldn't be bothered to care. I felt so much more energy at Azure (even though they're the ones most often criticized as being "me too").

That said, it may have just been timing or team fit or seratonin levels or whatever. I'm sure plenty of others have had the opposite experience.

It's easy to be productive in that context. People pinging you to get help with something, that's a "positive distraction." You'll write a block of code super fast and send it back to them.
As someone who put more lines of code into <50KLOC hobby project, that is not guaranteed, especially when your "little work" affects the bottom line on megabucks scale.
It also depends on the company. I've worked at companies where the #1 project can change weekly and by that I mean the previous project is completely abandoned for the new shiny. If you've worked at a place like this (there are lots of them), you have to not burn yourself out. It is very demoralizing to give your all to a UI just to have it literally thrown away. Sometimes slow rolling can let you move things forward in a protective way. If it is still #1 after 5 weeks, maybe it is time to dive in more fully. Digging holes and filling them back in is tough.
With my current manager this has become a skill I'm honing. He's senile and asks for all sorts of things he will have forgotten about in a few days. So I slow roll any new idea he gets excited about until it has percolated for at least a week or two. The trick is figuring out how to wait long enough to avoid doing throw-away work without waiting long enough that he feels ignored. But, like I said, he's senile, so that helps with the latter.
For my previous boss, I have the rule of 3. Until he asked for something 3 times, I just said "yep" and didn't start it. If he asked three times, he wasn't going to forget so time to start moving it forward.
> He's senile

Figuratively speaking, right? (Or did you mean literally? Dementia? If so, is he old)

Different formula but I've always liked:

productivity = (time * effort)^talent

Just as a general model.

let talent=0 then productivity = (time * effort)^0 = 1 = 100% Sounds about right
Yup! Time and effort absolutely count.

But the "star line" folk out of Heinlein's Beyond this Horizon are the ones that catapult the entire species forward.

The Wright brothers, the Norman Bourlags, the Nikola Teslas, the Alan Turings.

What about charismatic poor decision makers, pulling everyone in the wrong direction? Or evil geniuses

Maybe multiply with sign(talent)? And the exponent could be abs(talent):

    sing(talent) *
       (effort * time) ^
                 abs(talent)
I’ve had coworkers like op almost in every team that I worked for and google was one of the only places where some folks like that got walked out so may not be the best advice ;)
There is an extremely broad range of work and effort put in by software engineers, but there's also an equally broad range of necessary and important work in most orgs.

I was a sysadmin at a company that had things extremely well-tuned and within our team we averaged a couple of hours of work a day, tops.

I've been at companies where there were 50-hour weeks of nonstop which which were necessary, followed by downtimes where almost no work was necessary (it was a very seasonal business).

In my experience most engineers have no more than 4-5 hours of real work in them a day. After that, mental performance drops dramatically and while you can definitely respond to emails and attend meetings and do less intense work, deep thought is just a finite resource and heavily influenced by your mood, anxiety, and motivation. Keep it up for too long in an org that doesn't value clean code and good tests and your performance can definitely be negative.

It's also true that good organizations and teams know and work with these limits rather than push people into unrealistic goals. People can switch around between deep architecture work and planning, managing a sprint, writing reams of code based on well-understood specs, debugging, etc. You can take turns when your personal life gets intense or you feel drained.

I think that most works vastly underestimate the importance of deep work and being strategic about what gets done. The right product spec and the right amount of work researching solutions can easily save an order of magnitude of coding work. It's amazing how little you need to do if you know the happy path for implementing the right solution instead of iterating through multiple broken attempts.

Certainly you're not the only one.

There's often wide variation in how long something takes to do, and you have been given the benefit of the doubt. Also, however, you may have been judged relatively underperforming, and missed out on some fun & interesting opportunities as a result.

Hopefully you can find a way to spend your workdays that feels better and more honest. You've already taken the first step.

It's more like I don't care how much work my coworkers do. It's not my problem and I'm not going to police them.

I happen to be very productive when I like what I do, and very lazy when I don't. I even work weekends for free when im loving my work, but I slack for days and weeks when I don't.

It's fine.

You have very serious ego problems. I think you should focus on that.
Please don't cross into personal attack. It just makes everything worse. Perhaps you don't feel you owe people with "ego problems" better, but you owe this community better if you're participating in it.

If you wouldn't mind reviewing https://news.ycombinator.com/newsguidelines.html and taking the intended spirit of the site more to heart, we'd be grateful.

Have fun with your crappy community rules. You can permanently delete my account.
Hey, that could have been earnestly meant as helpful advice, couldn't it? "You seem to have psychological problems, better seek professional help" kind of thing...? Charitable reading and all that.

But yeah, maybe you've looked into their posting history, whereas I definitely haven't. [Edit:] Also, their reply supports your reading more than mine. So, uh, sorry; never mind. [/Edit]

Not at all - I appreciate your watching out for a fellow user, and the guidelines do say "Please respond to the strongest plausible interpretation of what someone says, not a weaker one that's easier to criticize. Assume good faith."

https://news.ycombinator.com/newsguidelines.html

For me, I find there are peaks and valleys - there are times when I'm so overwhelmed with coding tasks I feel like I'm drowning and other times when there's a lot to do, but all of it's blocked waiting for somebody else to make a decision/finish doing something/approve a budget/etc. When I first found myself in the "wait" state, I figured the logical thing to do would be to proactively find something to improve: documentation, unit tests, performance improvements, etc. I've found consistently over my near 3 decades in this business that that sort of proactivity is either frowned on or outright prohibited. What I've taken to doing with myself when I either have no "approved" work or am blocked on everything is reading documentation - recently I read through the O'Reilly Hadoop book and clarified a lot of things that I'd been confused about before.

I do feel the same as you, though - I'm always concerned somebody's going to put me on the spot and say, "what have you done for me lately?" I will say, I've been doing this a long time and that's never really happened. I go through the performance review song-and-dance every year and I can point out quite a few things I actually have done when the time comes, and so far it's made them happy.

I’ve been in the industry for over a decade at this point and I’ve found when I’m in the “wait” state, I just do whatever I want. If it works out, I show people and so far it’s always gone over well. If it doesn’t turn out, I don’t show anyone, and nobody seems to get excitable about what I’m doing.

I’m in that state right now, so I’m making an elastic search database and flapping grafana on top of it to injest and visualize all our logs. It’s been a pain point for a long time so I think it’ll go over well. I’m also compiling a c++ qt app to emscripten so we can host the app and connect with a smartphone instead of lugging a tablet around.

That’s what I do when I feel I’m in a low phase. Improve doc, CI, watch conference talks, read blog posts, etc. You can always improve things, even so slightly, when you’re not in a productive phase.

That’s something I haven’t seen mentioned in the comments at all. Am I the only one who alternates “my life is work” and “my work is life” phases?

The bar for Developer productivity is extremely low. There is a theory that this is due to Computer Science being more Art and less Science and artists need their space to let their creativity shine. This is why a 10x Developer is possible unlike other industries.
Or is it that a 10x developer just sits down and works a full 40h week instead of messing around all day pretending to work.
> Do I have imposter syndrome and I am actually a 10x developer

Yes, after 20 years of doing it, I believe you've at last discovered that you're an incredible talent.

Smart people generally understand hubris a bit better. Are you going exclaim how humble you are next?

Not sure about your intelligence IQ but your emotional IQ is in the gutter.

The work you put in is not about how many hours you spent twisting screws, but knowing what kind of screw, the pressure needed and all the resources you had to dedicate into learning your craft. Get the slave out of your brain.
I think there's also something to be said for passive processing.

Sometimes I'll know I need to write some code or some function and I'll just think about it in the back of my head while doing other things, sometimes for a whole day or two. Then I'll sit down and write it in like 20-30 minutes. Did I work 20-30 minutes, or have I been working for a day or two? I would say a day or two, and the 20-30 minutes was the time needed to produce the deliverable of that work.

> Did I work 20-30 minutes, or have I been working for a day or two? I would say a day or two, and the 20-30 minutes was the time needed to produce the deliverable of that work.

I would say that I do this too. There's a lot of stuff I can more or less do on autopilot and stuff that requires actual attention and finesse, for lack of a better word. I feel like management thinks that I'm good at my job for all of the autopilot stuff that I can crank out, and that makes up for the time I spend implementing one of the more interesting bits.

I think one of the ways that remote work changes this is that I can do other things while I think through a tricky problem; I can do dishes or walk my dog or something instead of trying to look busy in a room with 6-12 other people who are furiously typing because that's how the manager and project manager understand that work gets done.

Or just go and have a shower in the afternoon. It's the best remedy to an afternoon dip I know and one of the major benefits of working from home. It's a great place to solve problems before getting down to coding.

Doing the dishes is indeed a good one too.

Doing the dishes or other chores doesn't work for me at all but showers are great. When I was at Apple one of the few unalloyed good aspects of the spaceship campus were every section had showers available.

I'd take a brisk walk around the spaceship and then hit a shower. It was a great way for me to avoid an afternoon slump and let me do a lot of background processing in relative peace.

I root caused so many hard to debug issues in the shower! Including some obscure bug in Darwin kernel implemented in assembly. Not that I take my laptop to the shower but exactly like the parent thread mentioned, the problem is still background processing in your head.
Sounds like we should ban you from the shower, then.

(Amusing to see “root caused” == “diagnosed” and != “caused”.)

As a non-native English speaker, on of my favorite things about English is that you can (ab)use just about any noun as a verb and make it sound natural
The way I explained it to my boss, is to give him a list of numbers to add up in his head and come up with a total. He looked at the list for a couple minutes, then gave me the answer (I framed the whole thing as a riddle). I then looked at him and said it looked like he wasn't working on the problem for the last couple minutes. He replied that he was thinking during that time. My reply back is "That is what I have to do the majority of the time on my projects, is think about it then spend a relatively short amount of time spitting out the answer. The problem is I also have to look busy while I'm doing it". He then saw the light.
(comment deleted)
If you have to explain that to your boss, you are working for the wrong person. We are in a creative field, he shouldn't have to be explained this.
As long as they are willing to learn, I think that's fine.

I like to make parallels with sports: when I am on the court, I am so much dumber about what's going on. Suddenly, when I am on the sidelines, I can see patterns, strengths and weaknesses for each team and so forth. It's not that I was dumb while on the court, it's just that your brain is in a different mode of operation (focusing on your own performance in this particular case).

Sounds like you asked “how would Jesus explain this to my boss” and got an answer
This is great! Wish our senior director would understand this. The man loves the idea of butts in seats for long hours and can’t wait to have us back in the distraction riddled office.
https://en.m.wikipedia.org/wiki/Henri_Poincar%C3%A9

> He never spent a long time on a problem since he believed that the subconscious would continue working on the problem while he consciously worked on another problem.

This is definitely a thing. Intellectual labor just isn't physical labor.

Most of the best ideas I've had in my career were in the shower before work.

The problem is making that a regular occurrence.

For me it's often in the shower after work. Which is a pain because then I've gotta remember them until I get out and then find a way to remember them until the next day.
A speech to text device in the bathroom helps. Sometimes I worry I'll forget by the time I'm done showering.
I got a good tip for this once: throw the shampoo bottle out of the shower onto the floor. It’s ideal for remembering when you need to buy more shampoo, but if the shampoo isn’t empty, it will remind you that there’s something you need reminding of.
ha! my wife once asked why i was speaking english while showering.

i told her that 1. i can only think in english when thinking about work and 2. saying stuff out loud helps me organize my thoughts and this is specially easy while showering because i don't really have to concentrate.

Interesting! What is your first language? Do you speak any others? Was learning English a natural part of growing up, or was it formally taught to you?
Same here, I do that even when coding, helps me with processing stuff in real time.
I do the exact same thing, though my internal monologue is like 95% English (not a native speaker). I talk to myself out loud when thinking, but my wife thinks it's weird so I only do it when alone.
> The problem is making that a regular occurrence.

Ideally you shower every two days or so.

i shower twice a day -- between gym, walking my dog, living (south america is HOT), it's either shower once a day, or you start feeling like shit.,
Reminds me of a phrase (joke?) I heard in Spanish.

> "I shower once a month, whether I even need it or not"

joke being that one clearly needs it after a month.

sometimes I wake up and know the solution.
I use to think that they should pay me 1/4 of my hourly rate at work because I could get quite distracted and work quite ineffectually, 3/4 for each hour slept as that is where most of the processing happened, and a 10x bonus for the morning shower where all the hard problems of work would be solved in instantaneous heureka moments.
(comment deleted)
The new WFS trend -- Work From Shower.
There is even a story in one of the productivity books about how one of the most productive employees requested shower to be installed in his office since he was most productive in the shower.
Steve Jobs had a theory that hot water on the blood vessels in the back of the neck increased blood flow to the brain.
Interesting. Tried to search for a source for that theory, but couldn't find anything.
He personally related that to a group of us after a NextWorld keynote when someone asked him where he got a particular idea.
Walking also increases blood flow to the brain and is amazing for problem solving (in case you don’t have access to a shower while at work).
Not saying that this is wrong, but he also had some dangerous theories on how to treat cancer. Just because he was good at many things doesn't mean we should see him as an expert in medicine or biology.
That's why I like going for a run or cycling at lunch time. It always helps me to process ideas. And doing it after work means I'll get that great idea in the evening when I don't want to work for the company anymore. I believe doing sports at lunch time helps the company at least as much as it helps me.
But it only happens after spending a lot of time on a problem. You can also swap showering for walking.
Interestingly, that point is listed in the wiki article under his "shortcomings". (According to Édouard Toulouse, his contemporary and a psychologist who wrote a book about Poincaré)
I can’t even count the number of times that I’ve had to give up on a problem after banging away at it for an afternoon only to solve it in 20 mins the next morning. Almost never fails.
Taking a break and going for a run sometimes does this for me as well.
However, banging away at a problem for an afternoon is often needed for the solution to magically pop into our head next morning. The break helps, but so does the work itself.
Yes. Often need to rule out a series of initial ideas first.
Yes, and that can really feel like getting nothing done :-)

Or just spending time reading about the topic

I agree, I used to think I was like OP, coasting in between being quite productive. One day I took a bath, ended up thinking about my ticket, got out of the bath and did the ticket in an hour. The thinking time was definitely work just not in the traditional sense. And yes I could have done the ticket without the bath, it may even have taken the same time, but the code wouldn't have been as clean and there would have been a few more commits.
Well, not only was the code clean, I imagine you were clean too!
Nah, showering makes you clean, a bath is just marinating in your own dirt. Very pleasant though.
Which is why in Japan, you take a (quick, purposeful) shower and then get in the bath. Those baths are exceptionally pleasant.
Very bad, you should take a shower after the bath, not before, so when you're out, you're clean.
To be fair, I've done both. By now I can roughly estimate that a task will take me one hour. If I dedicate myself to it right now, it will actually take me 2-3 hours. I can also sort of carry it around for a couple of days, and then implement it in one hour.

This says two things about me: I usually underestimate the design details when estimating time, and the design takes me roughly the same time anyway.

This.

I will backburner a ticket for days, then when what I need to do comes together I will sit down and bang it out in an hour.

It's to the point that I will deliberately review a ticket and code segment every day, even if I'm not actively working it, just to have the pieces come together in my mind and crank out the ticket.

This method is not very scrum friendly, because in truth I'm actually brain-working all of my tickets at the same time, but I haven't shifted any electrons, just neurons.

Sometimes, when I hit a sticking point, I go do something completely different - like read Hacker News - in order to push stuff into what I call "background processing" in my subconscious.

> This method is not very scrum friendly, because in truth I'm actually brain-working all of my tickets at the same time, but I haven't shifted any electrons, just neurons.

This really highlights why I hate agile so much. Intellectual work doesn't lead itself to reporting status on completed tickets every single day.

I absolutely hate having to do a daily stand up. I'll have my tickets done by the end of sprint, just not before that though.
I agree that there is that implicit pressure, but really it should (as in the ideal case) be fine to just say "I've been thinking about A, B, and C" and leave it at that. That still gives you the room to say that issue C has blocker X etc if it needs to be resolved in the team.
> ...Intellectual work doesn't lead itself to reporting status on completed tickets every single day.

Status is WIP until completion. As for the intellectual work, that's just outright Analysis stage.

Most of dev's work is actually analysis. Sure, there's implementation, testing and such, but Analysis is almost non-stop.

Anonter way to put this is Evaluation of Alternatives, Optimization of Approaches.

I operate in exactly the same way. I wish more people would understand that process.
Here I am thinking I’m the only one. Tossing and turning in the middle of the night for hours just to bang it out for 15 minutes the next day for everyone to go “oh that was easy” no it wasn’t!
Adding my voice to this one. I think a lot of work 'normal people' i.e. the PMs the non-technical management, the sales people etc. really don't get how we techies work. Because they have to do 'active' work all day long to keep on top, they think everyone is like that, where in reality we are really efficient in short bursts. I can ponder a deliverable for days and then just churn it out over a few hours, only taking breaks for coffee intake/discharge. The normals keep asking me 'how far have you got with X' during the whole period, and they don't seem like it when I say 'I'm thinking about it, but I've not done anything yet'.
And, ironically, much of the work that the "normies" do is something tech guys could to hundred times faster. It's stuff like manually copy-pasting numbers from a crappy proprietary software A to a crappy proprietary software B or entering numbers from some system to Excel while it could be done by just directly pulling the numbers from the database the system uses.

Seriously, modern work is all about knowing what to do and how to do it rather than putting in a large number of hours executing a straightforward task.

Hmmmmm, this is actually kind of interesting - perhaps that "continuous grind through criminally unoptimized UI" type of work is what actually constructs the "this is how you use a computer" mindset that these people have - because it's all they know.

Developers are always about optimization and automation and tweaking and refinement, and their tools reflect this constant pursuit of efficiency that constantly transcends and questions how a job is expressed (UI, mental modeling) and completed.

No other industry - ironically including technical management roles (maybe even especially so?) - seems to have this sort of focus.

I even hesitantly wonder if the biggest similarity I've ever seen is with accessibility type setups with screen readers and whatnot. (Ha, that says a lot about the fundamental impedance mismatch of developer tooling!)

Or maybe if you have to painstakingly copy those finance numbers and hour reports, you will be thinking about them more. You look busy enough to qualify as working, giving you time to actually think.

All the time tracking tools I've ever used (at software companies!) had a bad UI. Sometimes we even have to track the same hours into two different tools. Can't we automate time-tracking away? My explanation is that this is the result of cultural evolution. Companies that make people think twice about their time and spendings are more successful. People will copy whatever successful companies are doing.

> You look busy enough to qualify as working, giving you time to actually think.

This is so messed up - and yet so interesting as a direct result of that.

I've only ever considered the idea of "looking busy" in the sense of whether or not someone is trying to optimize for shirking actual mental engagement.

I never thought of how doing that can actually make room to think. But that's so logically obvious once you mush the two ideas together!

I say this is messed up because I can totally see this being both necessary and helpful in certain situations. Wow.

I can never do tedious work quickly. As soon as I notice work that should be automated, I start cursing at the developer of the tool I am using for not offering an easy interface for me to plug into and just automate it, instead of having to rewrite the whole thing from scratch if I want to have it automated (and that's usually too time consuming, so I don't do it). So I'd be constantly unhappy doing it, which is a recipe for avoiding it, ergo being slow at it.

That's why I am a huge fan of free software (and I've spent years on it too).

Hello Necovek, I would like to connect with you on linkedin because I also understand and see this problem

This link shows a touchline between using api and not using api https://www.swyx.io/api-economy/

But how can we build some tool for telling product managers that they should fix there automating proces?

thanks for the rec!
The normals?

Come on guys. Plenty of software devs are actually working during the day.

What are you guys doing if you're not working? Reading articles? Playing Halo?

I didn't interpret the comment to be about not working, but rather about the non-linear nature of programming work. If you have 100 documents to process then you are halfway through after 50 and it will presumably take a similar amount of time as the first 50 did.

When writing code you might have written 10 lines of code in the past week, but the next day you write 200 because you've been thinking about the structure of the solution. In this way you might be working even if you're going on a walk or doing the dishes.

This isn't unique to programming, of course.

>about the non-linear nature of programming work

You hit the nail right on the head.

This is the main thing that non-programmers (i.e. Management) need to understand about "Programmers" and the key to "Manage" them effectively.

Steve Jobs had an opinion on this with which I agree:

> The greatest people are self-managing -- they don't need to be managed. Once they know what to do, they'll go figure out how to do it. What they need is a common vision. And that's what leadership is: having a vision; being able to articulate that so the people around you can understand it; and getting a consensus on a common vision.

Good quote.

Related quote from Scott McNealy : "Agree and commit, Disagree and commit, or get out of the way."

Too many times Management/Leadership devolves into giving orders without having a clue. It then becomes nothing more than a power trip to the detriment of everything and everybody.

All "Good" people just need Autonomy, Vision, Freedom and stellar Results will auto-magically follow.

If you really have a breakthrough you rewrite that 200 lines of code from last week to 10.
Agreed. I probably think about the problems I am trying to solve during most of the day. However, I don't think that is really work. That is just my brain not being able to shut off. And it isn't concentrated work - it is off and on.
I mean ya, reading articles and documentation is a higher part of the job. But I’m this context, it’s not actively writing code.
Oh yeah totally. By articles I meant not work related stuff (like HN posts or something).
As someone who switched majors and became programmer, I experienced a great example of this when I first started programming.

Starting out, if I spent a whole day thinking over a problem or writing code that I ultimately had to scrap, I would tell people I got nothing done that day and it was a waste.

Now if I do that, I see if as the necessary troubleshooting that all must go through to solve the problem.

Thinking over a problem is valid work. The feedback is usually to timebox it or get someone 1:1 to help out if it feels like wasting time. Maybe something wasn't well defined or planned, otherwise it's no updates, no blockers.
The other disconnect is that they can do their work in 30-60 minute bursts (meetings).

We cannot. Some things require multiple hours of uninterrupted concentration and if my calendar looks like someone fired a shotgun filled with 30 minute meetings at it, I can't achieve that.

At my previous company, Monday was filled with meetings with 40-60min of spare time in between.

I mostly did small bug fixes or read articles because there was no way to do anything productive. I need the mental space to properly plan and execute.

I sometimes feel like I'm trying to squeeze "real work" in between meetings and other interruptions. It's almost absurd.
This is a weird take, but as a junior developer, I find I'm more productive on the days with meetings because I'm 'forced' to squeeze in the 'real work' rather than just being scared.
I've done tons of work during meetings. Only need to listen like 4% of the time.
It is SHOCKING beyond words to me what accepted dogma it is that the human resources/devs only work on one thing at a time, they start at the beginning, plan, write, test, & code review the thing, and then move on.

It's a huge waste of human potential. Background processing is vital. Getting hit by the various silly hurdles in the path to shipping- having to go from the elation of getting something done to having to switch to an entirely different set of less fun tasks to get it shipping. Yet our processes, our industrial processes, are oriented towards assurity, towards treating us "human resources" like machines, to making us complete full units of work.

It's hard for me to tell exactly where this sprung up from, how it is so deeply deeply rooted. I tell my managers outright I think it's a wasteful & outright damaging practice, but that I understand that it's the expectation, that every other company acts like fools too, not just them. I don't argue, but I am quite clear that you will get much much much less out of me when I don't have some autonomy, when I have to drag, roll, push, row, swim each rock, one at a time, from end to end. Again, I'm not sure how such a demeaning & menial form of completing single-task-at-a-time happens, especially when no one in management or upper ranks is expected to live like this. My top theory is just that it's convenient for management purposes. That company's are bad at assessing progress, that we're afraid of situations that aren't ultra-well scheduled & predictable, and that we treat programmers like cogs in a machine because we're too afraid to try for better.

Creative procrastination is amazing. Not only are programmers out doing great things, but the task they're more obligated to do goes from irrelevant & stupid to something they just don't ever want to think of again. The internal pressures builds over time, even for the irrelevant everyday crap of development, until we're finally jazzed to just get it done. By procrastinating, we bank up some motivation. And we've gotten a lot of passive processing in. Productive procrastination is one well-known example, but I feel like it's just the tip of the iceberg. Having some different tasks to switch between, having a wheelhouse of obligations, allows enormous relief, allows a much higher average output to be maintained, in my view. I'm kind of in a lull of personal projects right now, because I completed some stuff, and don't have a lot of in-flight options to pick up & work between. Everything feels so slow & getting going again has been such a chore, I feel it so much. Being able to trade off, switch around, chase what feels good is a huge huge productivity increase.

More than anything what amazes me is how conventional & dogmatic companies are. They seemingly all chase the same malgining evil controlling exploitation of human-resources, and not a once has a company seemed to even understand that there are trade-offs. The whole industry is exactly the same; controlling & top-down, one-at-a-time. The people who invented Amdahl's law, surprisingly, seem utterly unable to grasp it's application to humans & our motivations. We all have diverse & wide execution units, but we are treated like in-order single-stage processors. If this were just the predominant way of treating engineers/human-resources, I'd find it unfortunate, but that it is almost entirely the rule, that it is universally expected, that there are so few systems or experiments for doing anything else: the status quo is pathetic & cruel, and lacks even the basic legitimacy to have explored other ideas.

>It's hard for me to tell exactly where this sprung up from, how it is so deeply deeply rooted.

Industrial mass production makes physical objects with incredible efficiency, once things are up and running. Because it's so effective with atoms, people think it can be just as effective with bits, and they're wrong.

a nice contrast showing the difference between Ursala Franklin's prescriptive & control technologies (that orchestrate & organize) and holistic & work technologies (that increase worker power capability & freedom).
Software development isn't a production problem, it's a design problem.

Software manufacturing is the bit after you compile the code.

> how conventional & dogmatic companies are

Seems to invite a deep dive into the history of Gantt charts or their use.

Creative procrastination is a good way to put it. Sometimes I found myself procrastinating and couldn't push myself to move beyond a certain point. Later I realized it's the wrong path after all and it's like my subconscious is recognizing the approaching leading to nowhere and stops me from wasting time.
> My top theory is just that it's convenient for management purposes. That company's are bad at assessing progress, that we're afraid of situations that aren't ultra-well scheduled & predictable, and that we treat programmers like cogs in a machine because we're too afraid to try for better.

This is because the classical consecrated need for project management. Back in the day, you would have factory workers overseen by managers to a) establish a process for the work to be done which is easy and precise - "plan the work" and b) oversee it - "work the plan". The process is, in their view, necessary so why question it?

SW development is a creative process which doesn't really lend itself to rigid guard railing of classical project management.

Some advocates outright speak against managers because of the penalty the rigid process has on creative throughput. Quote from https://www.simplethread.com/agile-at-20-the-failed-rebellio... :

> The important piece that gets forgotten is that Agile was openly, militantly anti-management in the beginning. For example, Ken Schwaber was vocal and explicit about his goal to get rid of all project managers – not just get the people off his projects, eradicate the profession from our industry.

processing for one or two days to prepare productive working that takes 30 minutes sounds a bit extreme. but I get the gist and second it. I hate developers you immediately jump at any task coding right away. they usually actually get the stuff done but the solution is ugly and contrived instead of elegant and simple. that's also what makes me skeptical of devs obsessing about typing (layouts, keyboards, editors, ...) to optimize it further. as a developer I never found speed of input to be even close to a bottle neck. the bottle neck usually lack of silence and peace in a large office which I need to think!
> that's also what makes me skeptical of devs obsessing about typing (layouts, keyboards, editors, ...) to optimize it further.

Those things are a form of procrastination. With your points you should be sceptical for those who just go for VS Code or whatever MS sets up for them nicely in 2 minutes, not those who configure Emacs or Vim.

I almost got fired once for explaining this to my boss. He felt very strongly that each day of a 10 day project should mark 10% in progress. I told him that instead, you think about it, explore a few ideas, then suddenly you might be at 80%. But it's not linear.
the ignorance of managment regarding non-linearity of developing something is one major reason for losing motivation. it causes much confusion and misunderstandings requiring justification. it gets tiresome after a while.
Similar concept:

If one was tasked to move a 10-ton block, 1000 yards in 10 days. You can use brute force move it 100 yards a day for 10 days or spend 5 days inventing a way to move it 1000 yards in day and get it done in 6 days.

You might also be familiar with the Abraham Lincoln quote: If I had four hours to chop down a tree I would spend three hours sharpening the ax.
I had not, but that's a wonderful quote. Thanks for sharing
That just doesn't make sense because Pareto is a well known phenomena. To the point where it has entered the common lexicon (80/20 rule) and is essential for planning how long a project should take.
It is the same way that Vilfredo Pareto is almost only known for the 80/20 rule.

One of the deepest thinkers ever about society and he is known for the most boring of his ideas.

Most things can be explained with this other idea of Pareto that humans are not rational but rationalizers.

Most human action/thought is kind of dumb and non-rational and then we invent rational explanations after the fact. Paint a varnish of rationality after the fact on non-rational behavior in Pareto's words.

Right! I find that I have to 'sleep on' most hard problems. WfH is great because I can take a nap and then get back to work. In the office I can't do that.

Less hard problems need less-passive processing but are better solved on a bicycle or doing something completely unrelated.

This. This happens whether I enjoy the thing I am working on or not. It’s just part of the process.

Also sometimes your mind needs a break. I personally cannot produce quality thoughts continuously no matter how much you force me, or I want to. I can mindlessly do physical things, but cannot code or think. I find it hard to believe there are people who can do this, if there are, they must be rare I beieve.

This kind of “background processing” was covered in detail in the infamous “Learning how to learn MOOC”. I would go further suggesting that for people unaware of this way of thought processing/problem solving (like OP?) peer pressure may bring something akin to impostor syndrom.

This doesn’t have to be a programmer only thing IMHO. If you spend 5 hours chilling and 3 executing and everybody is happy with your performance, it may be just your way to do things. If someone next to you does the same by coding 8 hour straight - its their style, and neither is better.

The lack of replies accusing you of immorality, theft, sloth, etc is somewhat surprising given the reactions in the rest of the thread.
Right? The OP is literally saying he slacks off then bullshits his way through meetings and that he regularly doesn't understand what's going on.

Everyone else appears to be talking about time spent directly thinking about a problem - which absolutely can look exactly like you're staring into space and this magic "subconscious processing" everyone claims to do.

That is far too seductive and idea, and far too ego flattering for me to trust it. "I'm so smart I solve problems in my sleep!"

Oh really?

But the phenomenon of solving problems quickly after a break/sleep/shower/whatever is one I recognise too.

Something else I recognise is that I also jump to solutions too quickly, often wrong ones, or by something that feels quit similar, jump to the idea that I don't understand things or that I don't know how to solve a problem.

Either the "wrong idea(s)" or the "no idea" are patterns of thinking that make it that much harder to see the problem a different way, or to think up new approaches. You can absolutely overcome it, but it takes a deliberate effort of will, and possibly explicit step by step techniques to do.

Much easier to just put it down and have a nap or a walk or whatever.

But that time isn't "subconsciously working on the problem", it's time spent letting go of you original ideas, letting those neuron interconnections to loosen up ( or whatever, not a neurologist, can you tell? ) so you can generate new ideas, obviously you haven't forgotten them.. but they have that softening distance to them now, and the no longer carry as much weight.

To take in one more, completely unsubstantiated step further, maybe that what a 10x coder is: someone who can more freely move between their ideas ( naturally or via learned technique ) meaning the the need to sleep on it far less often. Or maybe they give themselves a chance to let go of there currently working on the next and the next ( which I'm sure we all do some of, or every software company would be surrounded by a cloud of Devs, walking or staring off into spec! ) But maybe to 10x engineer does that more readily? Without the the exhausting drain I know I feel jumping from deep thinking on one think to deep thinking on another?

We shouldn't discount how many of the "other things" people list are either directly rejuvenation ( sleep! ) Or at least refreshing via increased bloodflow from some level of physical movement, even if it is just getting up to do the dishes.

Personally I think "well rested me" is of about average intelligence, "well rested and in the zone me" is perhaps a little higher but "tired me"? Wow can that be a big drop!

So.. rest, rejuvenation, letting go of mental models by directing your attention else where all seem like more likely causes than "my brain solves problems without even trying"

( Sorry tsike, kinda went of on a tangent there.. ! )

We're like commissioned workers of patrons who can't program. They need us to keep things going for them, but they only need that magic really a couple times a week. Maybe for like 2 - 10 hours.

We're paid to be present, not to constantly churn output.

Absolutely. Sometimes for the whole day I remove code because of dead path or rewrite part of the code because of wrong initial design. Am I adding negative productivity?
At a previous job, the boss awarded praise, and "points" each week for the developer who removed the most code from production. Counted as lines of code deleted according to git.

(Points were redeemable for schwag from the company shop. They were highly desirable and nearly cash equivalents).

Deleting code is arguably the most valuable work you could be doing.

That can turn into code golf quickly which makes reading the code later take 2-10x longer. I like the spirit oh this but the incentives are off.
any non-physical work should be paid for 24-7?
I can attest to this.

There have been times I spent 20-30 minutes understanding a new problem at 5pm, which at the time seemed like it was going to take up a significant amount of my working hours the next day.

Then come back the next day and I'm able to finish the task before 10am. During the evening, the problem was solved both consciously (thinking about it on the train home) and subconsciously (whilst sleeping). I just had to produce the deliverable the next day.

Yeah, I am kind of similar boat. I actually has opportunity to implement certain algorithms which were pivotal in launch of specific products. I spent perhaps 3-4 hours implementing the whole thing but i kept thinking about the core problem for a week, so much so that i started dreaming about it. (this dream thing happen quite often).
For sure, we need to collectively recognise how much real work takes place in this mode.

I once collaborated with a colleague to design and implement a data sync framework. For six weeks we chatted about it during our lunch break, while walking from the office to a Japanese takeaway and back again. We'd propose ideas and find weaknesses and flaws in them, and would spend our evenings thinking hard to come up with solutions to get around these issues.

Our boss saw none of this, but it easily consumed about three weeks of person-hours (i.e. around 120 hours).

One day, walking back from lunch, neither of us could find any problems with our proposed solution. We walked into the office straight into a meeting room, spend 30 minutes drawing diagrams on a whiteboard, then returned to our desks and coded up a working proof-of-concept in a couple of hours.

From our boss's perspective, we had implemented a new technology in an afternoon. He's the kind of non-technical person who equates productivity with typing code into a computer. But I think more places need to equate productivity with sitting on a sofa staring into space, or going for long walks, or whatever it happens to be that works for the developer in question.

Just read an article about employers increasingly monitoring their WFH employees with software installed on their computers. This is the "sitting at a desk and typing" measure of productivity. How do they propose monitoring the "solving problems by thinking hard" measure of productivity?
They can't. They have to capitulate to the idea that thinking is work. Especially in knowledge work.

But then again, since thoughts are words, thinking can be translated into typing that is monitored: notes instead of code.

Same. Most of my time is spent in thinking. My manager has told me though that it sometimes is not possible to quantify this time unless I create a doc where I lay down my thought process.
Intellectual and physical work differs a lot. True. Writing a book may take years, while writing the words mere days.

This, however, should not be an excuse, but a cue to get better at that 'thinking stuff'. Improve it. Train it. Learn.

And with all that, strongly ask yourself if that 'backburner time' must be paid. A bricklayer needs 10+ hours off to rest his body, so he can lay bricks for another 8 hours tomorrow. Should we pay him 18 hours?

My answer to both is that when I efficiently ponder and backburn ideas, it is 'work'. But when I'm binging Silicon Valley Episode 5, it is not (unless I can prove that this helps me bring the problem closer).

While this is true, I strongly doubt OP is talking about this case. In your example although it did look like you didn't work from the outside, but in your mind you were still thinking about the problem, technically speaking, working.

The case in discussion is how we developers do just the bare minimum consciously (or unconsciously) and the fake away the rest. Even with this perspective I don't consider it wrong at all. Our developer brains can be in "the zone" for not more than 2-5 hours everyday. If we force ourselves to be in the zone more than that, we are just damaging our runway and heading towards a burnout.

That said, the only thing we could do is - learn how to increase our zone hours. John carmack went to the extent of measuring his bathroom breaks as a way to extend these focus zones. While that is a bit extreme. generally as developers our antidote should be to optimize our focus zones to what fits us.

Very common. It's hard to quantify the mental work done, so we only measure kilos of code written.

I do think though that anyone that has written code should be able to understand that it's not as simple as sitting down and typing fast.

I think passive processing is one, intuition is the other. You can solve a problem by thinking about it for hours or by once looking at it and immediately knowing a good solution. It's about experience, intelligence and probably many other factors.

And that doesn't mean you'll perform well in technical interviews. They're often about specific algorithms most people would never implement themselves. Few are about the problem solving part of programming.

In my lengthy career, most of my jobs have demanded significant and intense amounts of effort and attention. With very few exceptions, I have certainly put in 6+ hours of focused work on average per day.

If I were your manager, we would have a talk about what motivates you and what you need to be productive.

how do you stay focused for 6+ hours? Is it spread across the day in multiple small sessions?

Meetings are horrible and even then a lot of times I find my work also ties in with many other individuals that cannot proceed without communication and often time blocked.

I'd love to be more productive throughout the day but the current org doesn't feel it's possible.

I have worked remotely for most of the last 12 years. That allows me to isolate myself better (to focus), and it allows a bit more flexibility to work when I'm in the flow. But I'm an unstructured (or so broadly structured that it might resemble a bit of chaos) person, so I'm happy to work any time day or night when I'm energized and in the flow.

But even when I was in the office, aside from periods between projects where there's actually not much to do, I still was actively doing real work for most of each day.

The OP seemed to be describing just slacking off, but I think what you're describing is environments and circumstances which make it difficult for you to be productive despite your desire to be.

If the company you work for has ignorant practices and cannot learn from feedback, then they will just have to accept lower productivity. Managers have to understand how to schedule meetings (not too many, and not fracturing time too much). I stopped working for companies that had hostile practices. But if you don't have the option to change jobs, you just have to accept that you will only be useful 25% of your day maybe. And if that starts to eat at you, like you're wasting your life and your abilities, then it's time to consider moving/finding a better job.

> I am actually a 10x developer whose laziness makes them a 1x developer?

You're capable of being a 4-5x developer compared to what you're doing currently (if you think about 5-10 hours versus 40 hours a week). But perhaps you lack mechanisms for motivation and continuing to explore spaces that benefit your team/org and might lead to faster promotions/career growth.

I.e., just haven't figured out as many intersections yet for what's sustainable and enjoyable for yourself and what directly benefits the businesses, teams and people you work with.

My suggestion is to add a few "virus" candidates (i.e., potentials for exponential growth) to your day to day. And push yourself more.

Getting a lot more productive starts with getting productive and gaining confidence/experience in small things. Assuming that's something you want (i.e., being even more effective) and that you're not just happy with the current steady state of where you are.

But to your points - a lot of software developers don't realize that they're in a steady state and are living a comfortable life (still a good deal for the company you're working for) when they could be making a lot more / having greater impact.

Part of the issue is that with programming our jobs are focused around 'automation' (in the form of software), so that very often we reach a point where our required effort really plateaus (and yet for the business still scales and provides value). If you want to really have exponential growth for yourself, you have to push yourself in those plateaus (i.e., find intrinsic motivation).

I think it's important to consider that an "hour" out of a 40 hour week might be vastly less productive than an "hour" in a 5 or 10 hour week.

Flow state is a thing. You can't fake it.

Developer work should almost exclusively be measured on "did you get that thing done we needed done on time?", with the limit that you shouldn't be required to work extra hours to make that happen (with rare exceptions).

I've had weeks where I do nothing, and then have two hours of real insight and solve a problem my team has had stuck in the backlog on for month/years in an afternoon.

I've had mornings where I browse HN, then take a shower, and suddenly realize the solution to a problem that ultimately brings my employer potentially millions in revenue.

At the same time, I can't perform these quick moments of brilliance for 8 hours a day, 5 days a week.

I've also had weeks were I put in long days quickly building a prototype needed to test out a new product idea, it's hard work but the results impress important clients and help everyone look good. But I can't keep up weeks like that for long without burnout.

The most import things:

- are you getting the things done you and your team agree are important, on time

- when you're involved with other people, where do the find you on the "oh god no" -- "oh thank god!" scale

If your team is on track solving the problems that need to be solved, and whenever someone pings you with a question or in need of help they leave feeling like you saved them a ton of time, it doesn't really matter if you work 5 minutes a day.

The inverse is also true. If people find that adding you to a project is a time suck, and things never seem to work right, it doesn't matter if you are putting in 70 hour work weeks.

The same could be asked about upper management. They earn 10x our pay, so their output is 10x more value than our work, and they work 10x harder, right? In our normal 8 hour work day, they must work 80 hours. Except a full day is 24 hours.

Why is the onus always on the bottom workers to be honest? Why are we trying to feel guilty about our working hours vs how much we're paid? Because it's clear salary is not tied to better performers given how much upper management is compensated.

Just enjoy your life. Management probably lowballed you coming into the job anyway, but if they are happy with your work, then spend that extra time you're saving to enjoying other things in life.

What do you want to do, OP? The new year is coming up.

The whole point is the compensation is not based on how hard you work but the value you provide and what the market will support. Of course upper management works roughly the same hours as everyone else, but they also have far more responsibility.
Actually, compensation is based on what the company has to pay. There are some other rules, like they have to (overall) pay less than they make from the output. But in general, a company never pays their employees more than they think they have to.

10x programmers don't make 10x the pay. They might make slightly more, but not even 2x what a 1x programmer (of the same level, no comparing seniors to juniors) makes at the same company.

You’re not wrong, of course the company will pay the minimum it can get away with. My point was a bit broader regarding the market value between an executive versus a programmer.
If a company is doing its job correctly, a 10x engineer should not be leveled the same as a 1x engineer. (It's more complicated than that but, y'know.)
Yeah, but you have to go up quite a few levels to make 10x the pay. E.g., a Google L5 makes (ballpark) $360k. An L8 makes (ballpark) $1M. That's only 3x higher, and you probably need a lot more than 10x impact to go L5 -> L8. An L4 makes $270k, still within ~1/4 of an L8. L3s are paid almost 200k, which is still ~1/5 of an L8.

I don't know what L9s or 10s are paid; it's probably highly variable and the total number are probably a handful.

Advancement at Google is tied heavily to being on the right projects to the extent that I think you're way overselling the extent to which the higher levels will be better at their jobs.
That seems plausible; I don’t work there. I think that further supports the argument that “10x engineers” are not paid 10x.
if the company is doing its job correctly, its paying the 10x engineer even less than the 1x engineer.

if the engineer is doing their job correctly, they are negotiating to be paid more than tne 1x

that's one way to get a lot of 1x engineers...
> paying the 10x engineer even less than the 1x engineer

Why is that a good idea? Isn't there a risk that s/he will then quit?

best solution is to stay a 1x developer then devote most of your energy to sidegigs and stock investing
yes. or better be a 10x for 4 hours a week. i feel like 10x is about flow not stress, so doing 10x might be easier than 1x ironically.

there is a disconnect about how companies mildly or jot so mildly “gaslight” employees into burning all of their energy on the job.

Its more cultural than profit-seeking. The profit seeker would want to maximise the effectiveness of the worker, by for example thinking hard about what work is worth doing.

The biggest waste i see is cancelled projects that could have easily been pre-cancelled. The next is features that are hardly used. Followed by technical debt and its impact on velocity.

Actually, the best strategy is in fact to stay a 1x performer at work, AND to stay a 1x performer in your investing life via set-and-forget index funds.

Minimize risk and time spent in efficient markets with millions of participants (the developer talent pool, the stock market). These places are treadmills.

Instead, spend your free time in inefficient markets by starting a business with the rest of the time you’ve now freed up.

Most B2C and B2B markets don’t have millions of competitors, and hence are much less efficient than the developer talent pool and stock market (which do).

This is the optimal strategy.

In my last two jobs I fail to see that my employer got more value out of me than the expenses of paying me.
don't feel too bad. There are a lot of CEOs that get $20M salaries for doing nothing. If the company succeeds due to market conditions they are seen as heroes- if the company fails for market conditions they are seen as losers. They may have some impact but mostly its luck.
Ah yes, the incredible value of providing feedback on proposals and signing off on initiatives.
> but they also have far more responsibility

This is relative. In my experience, many people in upper management have held little to no real responsibility because they were the types that if all goes right, it's their doing, but if anything goes wrong, it's the fault of someone below them. I find this more true for middle managers, but I have seen this with upper management numerous times.

Again in my experience, the higher in rank one achieves, the less real work they end up doing when compared to their subordinates. Delegating isn't that hard to do and takes very little time -- and there are some master class delegators out there.

That all being said, I do respect and love working for upper management who understand, who care, and who do as much as the rest of us. I currently work for such individuals and it's part of the reason I've stayed as long as I have.

Compensation is based on how much economic rent the employer can extract from the value that its employees produce. Thus, roles who produce the same amount of value can still receive drastically different compensation. Furthermore, in case of upper management, the value produced is negative in many cases - numerous examples of companies run into the ground, with the people responsible still getting their golden parachutes etc.
They in general seem to accept credit for other peoples work and delegate blame to others as well. I don’t call that being responsible.
I'm not upper management. Most upper management gets paid way too much for the value they bring.

But, when you have the opportunity to work under an excellent CEO or CTO you will learn that they do bring 10x or even 100x the value you bring to the team.

(comment deleted)
Agree with your second statement. I work at a semiconductor startup. Both the CEO and the CTO are excellent folks. Kind, extremely competent, hardworking, and reasonable; I love my time spent interacting with them.
> But, when you have the opportunity to work under an excellent CEO or CTO you will learn that they do bring 10x or even 100x the value you bring to the team.

The same can be told about OP who claimed that they work 5-10 hours a week but their performance reviews have consistently ranged from mediocre to great. The point is, the hours you work is not an indicator for the value you bring to the team.

They are also capable of causing 10x as much damage. Their job is to make correct decisions because they supposed to have the permission and responsibility to make larger decisions.
I have never seen that happen in practice. Can you give an example of a CEO who delivered 100x value to the company you worked for?
Yes. They do this in a lot of ways.

- Connections: industry, hires, investors

- Investing themselves into the company (bringing capital to help you grow)

- Domain specific knowledge. Hopefully they know the industry better than anyone.

- Management. Do not underestimate how far good management can go. It can really be a productivity multiplier - but the other way is true, too. If you have bad management, you're going to kill productivity.

I would love to see an experiment where a single CEO competes with a group of 100 experienced software engineers, sales people, product managers etc. I have a feeling that close to no CEO would win that one.
This is uncharitable, the parent comment explicitly said CEOs are a power multiplier.

Using your parallel, I think it'd be more fair to compare

> CEO + 300 software engineers, sales people, product managers

> 400 software engineers, sales people, product managers in a flat structure

I tend to think that the former would be more efficient, because otherwise we would be seeing at least some organizations of the latter type outcompeting the former on the free market. We don't, with 1-2 exceptions.

> Why is the onus always on the bottom workers

Power imbalance. The same reason why *essential* workers often get poverty salaries.

Labor is not productivity. Labor is labor, and if badly aimed, might as well be completely useless. Upper management has the power and responsability to make decisions which can have colossal implications on the overall productivty of the company towards its goal of selling what it sells. The real issue though, is that even though labor can approximately be measured, the impact of decisions not so much; whatever decision is taken becomes the "new normal" and it's hard to know how much it was a productive or improductive one. I'm not really knowledgeable on how upper managers are evaluated.
Most upper management aren't hired because they're good at something. They're hired for who they know.

Knowing the personal number of CxO from a Fortune 500 company and being familiar enough to just call them is worth a TON of money for the whole company.

Management experience is also a plus, but it's not necessary when you have the ability to short-track yourself (and your company) straight to the people who make the decisions.

You think execs get hired based on connections alone? That is pretty absurd. It’s difficult to see value when you have little insight into their day to day. Upper management probably has the same skill distribution of any other job. Meaning your likelihood of working for an incompetent C level is probably roughly the same as working for an incompetent leader at any other level.
> execs get hired based on connections alone

I think you're interpreting what theshrike79 wrote, a bit too literally :-) (agreed, though, about the skill distribution thoughts, I guess)

(Good books, btw, the Hyperion series, theshrike79 :-))

I usually book time with JIRA in hours so there is a small mark-up when I round say 45 minutes to 1 hour. But I'd say it's not off too much from reality. My company also doesn't force us to "work" 8 hours.
This varies a lot on the job. I can guarantee you’d spend more time at my current place. In fact, half of that time you’re currently spending would be at least on interviewing people - and another half would be on the mandatory meetings.

You’d easily spend a lot more time on the projects. Many of my coworkers work nights and weekends. It’s not uncommon to see people starting around 8-9am and logging off around 7pm for a regular schedule. And then pressure hits and weekend work starts showing up too.

It’s gonna vary so much by your place of employment. I’m gonna guess you don’t do any project work or significant projects and management is entirely disengaged.

why
Why so much work? Understaffed orgs and exceedingly high expectations of engineers. A lot of management has no social life or life outside of work - so they expect the same of their subordinates.

I’ll move on after a year or two. I just wanted some name brand recognition and to give the company a chance. I was tired of going with unknown places.

Not why so much work, but rather why do you put up with it?

I've never understood how companies like this can still exist in today's job environment. Does everyone get paid significantly more than market rate or have equity doubling in value every quarter or something?

The parent said how. I know a company where people are forced to come on weekend, get underpaid, and work on patents filed under someone else’s name. Just because it’s a well-known company and looks good on the CV.
From my experience it isn't companies like Google or Microsoft running these tech sweatshops. Large prestigious companies generally have great work life balance and take care of their employees. It's the bottom tier ones who get away with hiring desperate talent and exploit them.
I will say - people here are not chronically underpaid. It depends a lot on how the stock is doing but a lot of people here are from pre-IPO. So, it's not uncommon for people to have a 7-figure TC. The company basically 50x'd its valuation in <3 years. So, even if you got a kinda not-so-great amount of stock back when you joined, you still are getting a ton of money.

For newer candidates such as myself who joined post-IPO, the pay is definitely nowhere near competitive for the level of effort. I'm making a good amount but I'd say it's closer to average-slightly-below for FAANG but it's also my first big name. I didn't have a competing offer to push that could push them to the top of the band or into the next level. My offer was for about $360K recurring TC (I have ~8years of xp). Now, it's worth like $330K because the market went down so hard but just a month ago... It was $450K. So, the stock is very tumultuous and frustrating to deal with. I wish I had joined a Google or something because my last company IPO'd but the stock tanked 75% since IPO. I've held the entire time and am wondering if this shit is gonna be a penny-stock now. I went from thinking I could buy a home in the next year or two to "well, I'm fucking nowhere and I spent nearly $100k on those options. FML."

A lot of my peers have been here before IPO and are putting up with the shit because they make so much money. A lot of people here are making crazy money even if they joined just a month before IPO because it 3x+ just before they listed. The people who are post-IPO (like myself) tend to put up with it because it's their first big name - although blind leads me to believe a lot of people quit... Just not from my immediate team. We'll see. I'm surprised no one has left on my team in the 6 months I've been here.

I'm in SV, obviously.

Keep in mind not everything is in SV.
You and your co-workers are working too hard and need to press back against it.
"working too hard" is an individual decision, and these people have lots of job mobility - they have opted in to this particular circumstance.
I know several developers just like yourself. None of them are on HN.
A lot of them are. Where do you think all these comments come from? Everyone isn't on their lunch break.
The Pareto distribution applies to software development.

And aggravated in my experience because:

- Its really hard to work with multiple people on the same project ( and when you do: https://en.wikipedia.org/wiki/Conway%27s_law )

- People Managers usually think they are buying bus-factor insurance and throughput for each additional developer. Additionally they want more devs to indicate they are an important team.

So this all conspires to you being in the 80% doing the remaining 20% of the work without getting payed less or being called out.