Ask HN: Are most of us developers lying about how much work we do?
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 ] threadi 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.
> 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.
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.
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.
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.
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.
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.
Moving too fast doesn't benefit anyone
I'm not sure I'm familiar with any software project were people were glad it took as long as it did.
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 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).
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’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.
Now, will that particular startup succeed? Probably not in the way their investors would like.
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.
Maybe in some team that is further removed from customers?
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).
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.
Figuratively speaking, right? (Or did you mean literally? Dementia? If so, is he old)
productivity = (time * effort)^talent
Just as a general model.
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.
Maybe multiply with sign(talent)? And the exponent could be abs(talent):
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.
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.
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.
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.
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]
https://news.ycombinator.com/newsguidelines.html
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’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 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?
Yes, after 20 years of doing it, I believe you've at last discovered that you're an incredible talent.
Not sure about your intelligence IQ but your emotional IQ is in the gutter.
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.
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.
Doing the dishes is indeed a good one too.
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.
(Amusing to see “root caused” == “diagnosed” and != “caused”.)
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).
> 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.
The problem is making that a regular occurrence.
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.
Ideally you shower every two days or so.
> "I shower once a month, whether I even need it or not"
joke being that one clearly needs it after a month.
Or just spending time reading about the topic
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.
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 really highlights why I hate agile so much. 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.
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.
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!)
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.
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.
That's why I am a huge fan of free software (and I've spent years on it too).
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?
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?
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.
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.
> 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.
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.
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.
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.
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.
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.
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.
Software manufacturing is the bit after you compile the code.
Seems to invite a deep dive into the history of Gantt charts or their use.
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.
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.
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.
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.
Less hard problems need less-passive processing but are better solved on a bicycle or doing something completely unrelated.
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 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.
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 paid to be present, not to constantly churn output.
https://www.youtube.com/watch?v=f84n5oFoZBc
(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.
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.
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.
But then again, since thoughts are words, thinking can be translated into typing that is monitored: notes instead of code.
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).
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.
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.
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.
If I were your manager, we would have a talk about what motivates you and what you need to be productive.
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.
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.
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).
Flow state is a thing. You can't fake it.
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.
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.
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.
I don't know what L9s or 10s are paid; it's probably highly variable and the total number are probably a handful.
if the engineer is doing their job correctly, they are negotiating to be paid more than tne 1x
Why is that a good idea? Isn't there a risk that s/he will then quit?
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.
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.
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.
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.
- 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.
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.
Power imbalance. The same reason why *essential* workers often get poverty salaries.
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.
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 :-))
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.
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.
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?
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.
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.