Hacker News new | past | comments | ask | show | jobs | submit login

I have worked at both startups and tech companies 40+ years old, and the conclusion I've come to from my anecdata is that every engineer at every company is swamped all the time.

Feature requests and bug reports are easy. Writing features and fixing bugs is hard. Your todo list will always grow faster than you can tackle items. Once a senior engineer retired, and I inherited about a hundred of his bugs out of the 600 or so he left behind.

It's a marathon, not a sprint. Working at a consistent pace is better than burning yourself out. The work is omnipresent. It will never stop growing. It will consume all if you let it.

Unless you're at an early-stage startup, let your manager deal with your giant and ever-growing todo list. Let someone more plugged-in to the business side deal with prioritizing, and focus on technical excellence. Unless you aspire to management yourself, that's already plenty to do.

Anyone who tells you every engineer needs to be in touch with every business concern either only works on early-stage projects or is part of a hustle culture that I don't ascribe to. I don't have the energy for technical excellence and knowing everything about the business.




My worry is that you can be technically excellent and fantastic at what you are assigned, only to find later on that the project you've been toiling over has been cancelled or valued far less than another team's work.

I appreciate your experienced perspective greatly and it encouraged reflection (I agree with working at a consistent pace), but I believe there can also be a middle ground to have awareness of business concerns to understand when to switch teams or even companies. It's painful to work very hard at assigned tasks, only to find it wasn't valued due to business priorities.


Yeah that happens. More than once I've thrown away a lot of work due to a shift in priorities. The thing to realize is that as an engineer you have very little control here. All you really can do is argue with higher-ups (they likely won't listen) or job hop (you can't do that too often).

It's sort of like making a movie. You start out with more material than what you need for the finished product because sometimes you don't know what's going to work ahead of time. Yeah, it sucks when you project gets left on the cutting room floor, but it happens. There's plenty more work to do. It might sound cynical, but don't get attached.

In terms of a middle ground, I sort of think about business concerns the same way I think about the news. Be aware, but don't worry, because you don't have much control anyway. If something really important comes around, start preparing to do what you can with what little control you do have (job hop, move out of a place that's about to be a war zone, etc). Don't waste your finite time and attention on day-to-day details. Save it for the big stuff.


The problem is that most places reward you based on "impact" somehow, not "impact had we not given you such a bad roadmap to follow," so being unplugged from the business side is rolling the dice w.r.t. future recognition of your work, no matter how well you did


Not all places do this; the place I currently work only rewards leaders for "impact" and people have the option of whether to take on leadership responsibilities.

Places that reward non-leaders for impact are doing so intentionally to encourage people to self-organize into teams that produce the most value for the business. The theory being that the people on the ground often have a clearer view of whether value is being created than the various layers of middle management do. If you work in a place like this it's actually part of your job to stay plugged in to the business side and determine whether you're working on something valuable or not.


A former coworker went through a stretch where his manager deliberately assigned him insufficient work and refused to let him do anything but assigned tasks, in order to get him to quit, and he said it was the most miserable time of his career. Having more work than you can fill your days with is an ideal state of affairs, because it means you never run out of work.

Of course, as you point out, to work like that sustainably it is important to pace yourself, limiting working time. The natural consequence of that is a need for prioritizing the todo list, because not all of it will get done. I say “the” todo list, because if there are multiple they must be merged so it can be determined what tasks come first. It is cumbersome and distracting to do this merging and develop a business understanding of everything landing in an inbox to be able to prioritize it so indeed a natural temptation is to let a manager do this toil, and just follow their cue.

The consequence of letting a manager setting priorities is a loss of control. You have to have faith the manager will give the right kind of work in the right amount. I am not a good fit for this approach, so I tend to take control of my todo list by proposing my own projects or seizing opportunities as they pass by. This does require having good relations up and down the org chart and good insights into the nature of the business, so ymmv.

Seeing work as finite is imho mistaken. The possible work that can be done in a business is effectively infinite, and an effective business will find the best set of work to do with the resources they have, and an optimal level of resources to do enough work to deliver value, but without breaking the bank.


> Having more work than you can fill your days with is an ideal state of affairs, because it means you never run out of work.

I think we have very different approaches to work. I can’t imagine being anything but excited if some asshole boss thought I would quit because he was paying me to do nothing


With the magic of remote work, I'd probably either start contracting or just see how long I can do 2 jobs at once.


You could also just enjoy your time. Not every moment needs to be filled with labor


Yeah, but depending on where you are career wise you probably want to avoid letting your skills atrophy too much. That'd be my main concern. But if I wasn't worried about that, and the money was ok, then yeah. Rest and vest.


Work on open source software!


That does sound appealing at times. But I think I'd miss focused product management.


It's a well known approach to punishing employees in big corporations in Japan - salaried positions are culturally "for life" and being fired is extremely rare. But.....you can still be assigned a desk far from everyone else and given zero work. You are still expected to sit there for full day of work, and follow all other rules of Japanese culture - not leave before your boss etc.


If the boss is putting you in a form of solitary confinement like the Japanese bosses do, then yea that would suck, but I would be surprised that an American boss would do that without HR getting involved as singling out an employee for extra special rules without a pip is an easy court case


We must have very different HR depts. Mine actively singles out the perceived broken ones and gives them that final nudge to get them to quit.

I've never had any other experience with HR at commercial employers.

HR is for the company, not the employees.


I wasn’t super clear but I meant HR wouldn’t do that in such an obvious way or without the ass covering paperwork. Totally agree that they also look to push employees out and are looking out for the company


> A former coworker went through a stretch where his manager deliberately assigned him insufficient work and refused to let him do anything but assigned tasks

Interesting, even if it weren't to make him quit, in my home country (Germany) this would represent a breach of contract.


For what it's worth, I polled HN a while back and there was a perfect normal distribution on hours worked per day: https://imgur.com/qdSltlM. I asked, "How busy are you at work on average?". Poll questions here if you want to see them: https://strawpoll.com/polls/47x15cf1.

So 25% of people work under 4 hours a day including meetings, 50% work 4-8 hours a day, 25% work more than 8 hours a day. And seniority does not affect this curve.


If you live in a normally distributed universe, then you get ahead by being swamped and incrementally doing more hours of work than someone else. But hopefully most engineers hoping to have an impact live in a power law distributed universe.

I tell all my DRs that, at the end of the year, I will evaluate them on their (self-assessed) 3 most impactful things they've done that year with a 60%, 30%, 10% weighting.

There's a couple of different ways of optimizing towards that goal, you can try out a lot of little projects and double down on the ones that seem like they're working or you can do a careful analysis and scope out a few things you think will be a big hit.

In truth, there's no ability for me to evaluate them to that level of precision, the framework is mainly there to foster two skills I regard as vitally missing:

1. Ruthless prioritization. One of my frequent questions is "does this sound like the 4th most important thing you'll do this year? If so, why are you doing it?". Being able to cut down on the noise and really focus is hard for people, especially when they feel like there isn't a permission structure in place for it to happen. Even with an explicit focus in place, the norms of the workplace make clearing away time for deep thought preciously valuable.

2. Owning of measurement of impact. Being able to measure a thing is, I believe, in many ways more important than doing the thing in the first place. Measuring forces us to ask hard questions that we often skip over: What metrics am I hoping to affect via this project? How does this metric tie into the larger goals of the company? Are we measuring this metric already? If not, how do we start? What change in this metric would count as impactful vs other projects I could be doing?


Going to try your approach. I think prioritisation and measuring impact are awesome skills to cultivate.


I never met any person who has not claimed in a professional set to be swamped with work. It's unwise to seem not busy. There is no signal here, just socially acceptable noise.


Yeah, as developers you usually get to estimate your work so estimate for however much free time you want. This is especially true the older/bigger the company is. Developers with lots of experience working in a specific application can barely tell how long stuff will take. Your EM/PM/Whoever isn't going to know that you're padding time. As long as most of the time you deliver what you say you will when you say you will nobody will catch on or care.


Don't I wish. Currently in the middle of a big thing with a director who keeps mandating unrealistic deadlines with zero engineer input.


This misses the point. Pretty much all businesses are going to want to mandate unrealistic deadlines. Their default stance is to get as much out of the dev team as they think they can get. It doesn't matter because they don't know what a realistic deadline or a realistic amount of work is.

The point is that they have no real understanding of time it takes to develop anything. It all comes from what the developers tell them. You have a huge asymmetric information advantage and should be able to use that to limit the amount of work you have to do.

To put it bluntly, if you work 45 hours a week now and want to work 40 start padding you estimates by 10%. Nobody is going to know.


I don't think you understand what I mean by zero engineer input. I only have an information advantage if they in some way incorporate my information into their decisions. That does not happen.

That would be a wonderful strategy if they asked for estimates.


I've been in a lot of dysfunctional organizations and I've never seen one that took zero engineering estimates. Directors may set deadlines without it but that scope & timeline filters down to the engineering team and then the engineering team plans their time. It's at that point you pad your estimates. Stretch 40 hours of work into 50 hours of estimate and you look like you're killing it when you do 40 hours of work.

Even if engineering has literally 0 planning input at all they're still the ones doing the work. I've never seen a PM sit behind an engineer 45 hours a week and make sure their working. Just stop working and go home or take a longer lunch if you want to work less. They're not going to fire you. The logic doesn't make sense. Firing an engineer on a project behind schedule is going to make the problem worse. Not better.

If you are legitimately worried about being fired you're in the top 1% worst organizations and it's time to move on.


I inherited a part of the org with a history of underperforming[1]. I'm not worried about losing my job, but I am worried about the entire division getting re-orged, or, worst case scenario, laid off.

[1] It would not be an exaggeration to say that this division has literally never produced value for the company.


That’s actually nothing too bad. If you know you will guaranteed miss the deadline then relax, slow down, do the quality work you want to do and meanwhile look for a better job.


When you find yourself in this position, it's time to look for a new job.

It will likely never improve


I had to re-read this a few times. I think you should go 100% full effort with double negatives and rewrite the last part:

> There is no noise here, just socially acceptable noise.


k


I don't think that's the best advice. There is no hard line between business, product, and technical concerns. There's a lot of gray area.

If you want to be great at your job, then understanding the context of business and product decisions will let you make more nuanced technical decisions that support where the business is heading, not just where it's at today. If your manager, and PM, and business POCs that you work with are all excellent, then maybe you can get this context from them. But chances are that at least some of the people around you are fairly mediocre, and part of being great at your job is making things happen in spite less than ideal circumstances.

Maybe what I would consider being great at the job is what you would consider unhealthy hustle culture, and that's fine. If you want to just get by and not be exceptional in the role, that's much easier. But in that case, why even focus on technical excellence? You can get by with less.

Basically, if you're gonna slack off, then you might as well slack off across the board. If you want to be excellent, then be excellent across the board.


Frankly I have little interest in being great at my job. It's a job. At the end of the day, I have exactly as much loyalty for the company as they do for me. None. [1] Furthermore, the "rewards" for being great at your job kind of suck, which at most companies is just slowly accruing experience until you get noticed and someone has the bright idea to make you a manager. [2]

I want to be great at software engineering. I want to use tech to build things. I see it as coincidence that there's enough overlap between that goal and the company's goal to at least make me good at my job.

[1] That's a lie. I wish I had no loyalty to the company, but my personal pride in a job well done unfortunately means I have a non-zero amount of company loyalty.

[2] Just happened to me, actually. My stress levels are through the roof, and I didn't even get a raise. Clearly I miscalibrated my job performance.


>someone has the bright idea to make you a manager.

maybe present your own manager with a copy of "The Peter Principle" book? This seems like a literal example of it.

The Peter principle is a concept in management developed by Laurence J. Peter, which observes that people in a hierarchy tend to rise to "a level of respective incompetence":

employees are promoted based on their success in previous jobs until they reach a level at which they are no longer competent, as skills in one job do not necessarily translate to another.


Why not decline the managerial role?


A few things. Pride, hubris, challenge-seeking, unwillingness to turn down an "opportunity", and, maybe more than anything else, I thought I'd do a better job than any of the other potential candidates (see: pride).

In life in general I seldom back down from a challenge. I even play video games on the hardest difficulty. [1] It's bitten me more than once, but I still seem to have this almost pathological desire to really go for it rather than leave well enough alone.

It was also an opportunity to see behind the curtain. In my time I've had to deal with a lot of boneheaded decisions handed down from on high, and I wanted to see if I could get a glimpse of where they came from.

My job now consists almost exclusively of being handed boneheaded decisions from higher up the chain, fighting tooth and nail for something realistic, and coming to an unsatisfying compromise only to have upper management go around me and communicate their boneheaded decisions to the team directly.

[1] And yet I don't much care for Souls-likes. I just don't enjoy the core gameplay enough to want to climb the mountain.


For most people this would probably lead to exhaustion.

It is doing 2 full time jobs basically. Because you don’t trust your team.

Lets say 80h weeks are OK there is still the hurdle that most corporate structures will actively fight against this level of JD-breaking initiative!

If the product is Dropbox you can talk to mates to do your primary customer research. But what if it is say defence contracts? Gonna be stepping on toes talking direct to customers.

If you are not doing primary research you are relying on those lackluster colleagues.

If you are doing this kind of stuff the job is just in the way, start a business.

For startupish roles where your job might be half coding half VP growth it might work.

I think Engineers should know something the product is used and why etc. But this can only go so far. Otherwise why have other roles at all?


Fundamentally, I agree. Though you need to draw some boundaries between being aware of customer needs and advocating for them during development (and alloying them with realities in your development environment) and being responsible for all customer satisfaction.


I've learned as a matter of survival to abstract availability for more tasks from my actual capacity.

If I don't do this I'm given more work than I can do because I have capacity right now then once I have added tasks invariably later everything comes home to roost at the same time.


Can you share how you do that?


You assume that developers don't know how to pad out their todo list, or complete things quickly and then do other things during work time. I've seen a lot of anecdata to support both, but obviously people prefer to say "I'm really busy" or "I work hard" over "I only work 2 hours a day".


My advice is for engineers, not managers. And as an engineer, I'm assuming you already have more than you can do. If your todo list is so short that you can just pad it out like that, well, lucky you.

It has always, and I mean always, been the case for me than I have more to do than I have time to do it. I ask my manager what takes priority, and I work on that. I miss some deadlines, but I try to hit the important ones, and that's just how real life works.


Stop worry about forgetting about a feature idea, or bug description. If it's any important it will come back to you. Stop writing down bad ideas. Have at most 20 tasks on your todo-list, then order them in importance, and if something else comes in you just drop the least important todo/task. Think of tasks/todos as balls, you only have to juggle those that are made of glass, the other balls will bounce back up. If you have a list of 600 issues, most of them are no longer relevant - the code has changed, or the issue no longer exist. It's not the holy bible. Focus on what needs to be done right now - in order to to achieve your near future goals.


But the underlying reason is that some (most?) bugs are not worth fixing.

If they were worth fixing, then managers would hire more engineers and get through the todo list. So engineers might feel swamp but I guess they shouldn't.


Does anyone have a good reference on how to prioritize in a structured manner?


eisenhower matrix and cynefin framework


Yes, very good point. That said, Big Co. Engineers should be brought into the big picture of stuff that's happening, and, communicate with Engineers.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: