Ask HN: How do you decide when you've done enough work for the day?

288 points by zzaip ↗ HN
I'm a relatively junior software engineer, a little over a year out from university, with a cushy remote job working for big-co. And I never know how much work to do on a given day.

Right now, my daily rule of thumb is to try to have my butt in the seat for ~8 hours. I clock out at 6 and stay disciplined so I don't end up overworking as many remoters do. The main disadvantage of this strategy is that it just doesn't align with the reality of the job. Some days I work on something complex and want to work more hours, while others I'll knock out a few small things and want to call it early.

Strategies I'd like to use but can't:

- Show up and leave with my coworkers. We're a remote team, and have a few serious workaholics on the team (not to mention the issue of timezones).

- Leave when I've done my tasks. This might work if we had actual sprints. Our reality is an endless stream bugs and features for us to work on before we launch our product, and we just grab tickets as they come. Hopefully this improves after launch.

What do you do? I want to do enough work to feel good about myself, without burning out. I have very little supervision from management, my coworkers seem to respect and like me, and I am generally productive. Help me, HN.

122 comments

[ 4.5 ms ] story [ 174 ms ] thread
I generally try to get as much work done (in life) as I can. Some projects I can work for 12 hours a day on, others I'm tapped out at 6, so I just maximize output. If output is below the debugging cost of that code or something, I stop. Could be 2pm or 10pm.
Do you think this approach applies if you’re trying to save energy to work on side projects? I feel like if I work as hard as I possibly can at my day job, at the end of the day I’m not left with much juice left to work on the things I actually care about.
This is a place where having an awareness of what is important at your job can help. You described a process of adding features and fixing bugs. If you ever want to achieve balance, understanding the value of a feature so that you can determine what actually needs your time is important. Then, it's not about quantity of your time and effort that matters, but how much value you are adding.
Once I get 5 billable hours in the rest is just gravey. I’m a consultant though so I get paid by the hour.
I always stop at 5pm. I take some kids for a walk to decompress. Around 9pm, after kids go to bed, then I’ll do another hour if I’m working on something fun.

I love coding, and I would be coding if no one was paying me, but there’s more to life than just that.

What's going to happen to your life is you're going to learn what other people's natural speeds are, what yours is, and what is needed for your specific job, and you're going to have a much better barometer for that. That's going to happen naturally over the next 2-3 years.

In the meantime, you can:

* Try to incrementally improve. Keep a daily log (wish I had started this my first year), write down your stupid mistakes, false starts, other things. Re-read entries sometimes. Try not to make the same mistake twice and to be doing more complex tasks over time.

* Do the "butt in seat" thing without beating yourself up. A good one is to try to work ~40h a week (even 35), except if you can see an immediate career benefit not to by working the extra hours on a side project or stretch assignment. It doesn't have to be 8 hours every day it can be 12 on one day then 4 the next. Log your hours (remote people should always do this) and note patterns. For example, if you are consistently working less than 40h, try working harder, more than 40h, reconsider your approach or appeal to your manager.

* Ask for feedback. You can set up a meeting with someone (for example lead, manager or just someone more senior you work with) and ask "what do you think I should do to be more useful to the project?". Alternately you can wait until a more social occasion or a lull when working 1:1 with someone and just ask "so how do you think the project is going?" If they think you have a time management issue, they'll tell you, if not, you're good. Side note, you may hear stuff like work on your soft skills, have better work life balance. It doesn't strictly mean "work less" but it means your coworkers think you're too focused on individual achievement.

How strict is your employer about butt-in-seat schedule?

If you have full flexibility, I’d suggest aiming to hit 40 hours on a weekly basis rather than 8 on a daily basis. That gives you the flexibility to work, say, 10 hours one day because you’re really on a roll, and to stop at 6 hours the next afternoon when you’re tired and distracted without feeling guilty.

Don’t go over 40 hours on a regular basis. That’s a recipe for burnout. A week of crunch time every 3 months is one thing. But regular 50-hour weeks aren’t sustainable for most people.

I’d also suggest setting goals in the morning for what you want to accomplish in a day. Put down your work when you reach the goal, unless you’ve got several more hours in the day. In that case, set another goal for the remaining hours. If it becomes clear that you won’t reach your goal within a reasonable number of hours for the day, put your work down whenever you hit a stopping point close to the time you’d planned to wrap up for the day.

More experience should help you make increasingly accurate estimates of what you can accomplish in a day, so you’ll hone this process as time passes. Plus it’s great practice at estimating, which is a difficult and valuable skill.

It’s unusual to hire junior engineers fully remote in part for this reason: more experience in a “typical” work environment give you more context for these sorts of judgement calls.

Experience alone doesn't help you get better at estimating. You also need to have reasonable stopping points. That's why I try to aim for rigid 8 hour days, rather than being flexible. It allows me to see how much work I accomplished in a given day, and what kinds of tasks generally take less time or more time. Days are very intuitive chunks of time to reason about, and I find this helps my estimations be a lot more accurate.
I'm not convinced burnout comes from merely working hard, it comes from when you work hard and expectation of reward is missed.
Agreed. It seems to me that burnout from work would only be qualified if burnout from play was a thing - because work to the fortunate among us, is play. Managing expectation is key, or more palpably perhaps - anticipation. The scientist, Robert Sapolsky, has done some interesting work on how dopamine affects behaviour. He shows that we get far more pleasure/dopamine from anticipation [future] rather than reward [present], where dopamine dries up. Our endurance is largely about our perception of the future. Good video here if anyone is interested: https://www.theguardian.com/science/punctuated-equilibrium/2...
In my case, it was due to crunch time shortly before release, and then after the project was released falling into a void of not knowing how to fill my time.

Which caused stress and eventually a burnout that I am only just slowly getting out of, after about 5 months.

I suppose it is different for each person though.

Spot on. When I was younger I could do 15 hour days without looking at the clock when orders were coming in and shipments were going out. Reward is a big motivator for time invested.
From my own experience, burnout is primarily emotional. Time spent is a side-effect.

It's not how many hours you work, it's how much of your experience involves despair, frustration, and resentment. That might either be towards your employer ("stupid schedules, I'm not valued"), towards yourself ("this should be easy but I'm failing"), or towards the universe for simply not being the way it "should" be.

Amen. Working on my own products has never caused any kind of fatigue. It’s energizing :)
I find there is inevitably still tough days working for yourself on a project that takes more than a month. Overworking can lead to losing sight of your goals which can lead to burn out.
Fair enough! Breaks and structure remain important.

I wake up every morning at 5:00, do some excersises, write down my goals, do pushups until I can’t any more and then process all emails from the past 24 hours. Once that’s done I set a todo list for that day and push things forward that aren’t a priority.

So far, this ensures I’m able to stay on top, don’t lose track, can work 10 to 12 hours a day easily and not feel tired or unproductive.

There’s still plenty of time left for “life” as well. Just have to be in bed at 22:30 at the very latest.

Setting goals, cooking every day and adhering to that routine works wonders to be honest, I highly recommend it :)

Ok I can see why you don't get burnt out much. I don't exercise and go to sleep at 4am lol
I feel the same. From my own experience, I've done both 9h-10h of productive work for few weeks in challenging projects and 8h ass-in-seat in crappy and bad managed ones.
It’s both. You can be fine doing somehing you hate for a couple of hours. But 12h and more.
> If you have full flexibility, I’d suggest aiming to hit 40 hours on a weekly basis rather than 8 on a daily basis.

I think this is an exceptional answer. I’ve been working as a contractor recently where I am hard capped at 40 hours a week and it’s been wonderful. Work 12 hours one day when I’m in the zone and don’t even think about stopping? Sweet, that’s 4 hours off my Friday afternoon. Can’t concentrate today? That’s fine, I’ll put in some extra time tomorrow.

That’s a major change from my previous position where I felt like I never had a “not at work” mode and there was always more I could do.

I think capping yourself on a weekly basis is valuable because it gives you flexibility on a day-to-day basis while retaining a regular cadence.

I don't agree with that, because the number of hours you work are pretty irrelevant when not in a butts-in-seats setup. Also, burnout is not really directly related to the number of hours you work.

Work should be focused on productivity, not hours spent. Employers, clients and managers have expectations of a quantity of work being accomplished for a specific budget, and it doesn't matter to them if its done in 2hrs or 200hrs.

>"Employers, clients and managers have expectations of a quantity of work being accomplished for a specific budget, and it doesn't matter to them if its done in 2hrs or 200hrs."

You're assuming every project is fixed-scope, fixed-cost and variable-time. In my experience that matches a small minority of projects.

Although " fixed-scope, fixed-cost and variable-time" makes it easier, this works also in other situation, including variable-everything, part of a product team.

You are given tasks or projects for a specific budget (budget, for your manager is 1 engineer). They have expectations on what 1 engineer can deliver on average.

This is what people mean when they say "we care about output, not butts in seats".

(comment deleted)
Interesting, I would advise the reverse, get into a daily routine, try to not variate too much, and avoid working the weekends.
I own a small start-up and struggle with work life balance. I'm a night owl and generally not terribly productive in the morning, but once I hit my stride in the afternoon/evening, my productivity continues to increase and I often find myself plugging away at 3-5am. I have found that it's in my best interest for throughput to continue when I'm "in the zone", but it does create some friction with the spouse.

I'm very interested in how to define the "enough work for the day" question. Or we could just listen to Dan Reeder: https://www.youtube.com/watch?v=xNWhiXxdbWk

When the clock hits 4pm, I have a daily standup meeting. About half the time, this meeting occurs, and I go home afterwards immediately. If it doesn't happen, a quorum of people had something better to do. If I don't have anything actually urgent or interesting, I tend to bail with the others. Otherwise, I work away until maybe 5:15, then I go home.

I'm basically paid to be on-hand 9-5, so that's what I do. I don't check email outside work hours as a rule. If there's something technically interesting, or is important to do but cannot be done within the constraints of a business workday (basically, anything that involves deep thought, concentration, and sustained effort), I may choose to do it when that's convenient for me. And I know things; I remember, and I've been around long enough to know the whys and wherefores and sequences of events that led up to the present state of things.

Not that you asked, but this sounds like a totally dumb time for this meeting.

It creates a reliable interruption, such that if it happens you're likely to be distracted enough that it isn't even worth trying to get back into serious work for 45 minutes before you need to go home.

It's also late in the day, so any tasks that come up must pass a high bar to be actually remembered and resolved. A task must either be so urgent that it is worked on immediately (and then people will resent the standup for making them stay late) or so important that it can be remembered the next day. This means a whole bunch of simple-to-fix issues are probably being ignored, either by forgetting or just not being raised in the first place.

I'm not surprised that the meeting often doesn't happen. A better time for a standup is before lunch or earlier in the morning.

I haven't found an actually good time to have these kinds of standup meetings.

First thing in the morning is not good, because it requires people get in in time, and so it becomes a gate on starting work if you are on time until the latest person arrives. Also kind of useless to do until the morning email triage is completed.

Midday doesn't work, I've found, because it is impossible to carve out a consistent time to meet. External sources always try to clutter up 10-2 with calls and meetings that involve herding cats and aligning schedules over which there is little control. Also tends to blow into lunch time and people get hangry and cranky.

End of the day at least serves as a terminus to the day, and since standups are mostly useless, skipping it to sneak out and play golf or whatever tends to be a common outcome.

What you're describing is a workplace with a generally broken approach to meetings. The best thing you can do with standup in this environment may be to eliminate it, or minimize it as you've described. But there is often a place for a standup meeting in many work environments, and barring the other stuff I'd suggest before lunch is a good time - anchored to another interruption that would happen anyway, and provides an incentive to finish quickly without making it a hard stop.
What you are looking for here is primarily a feedback mechanism issue. This is something that is a hard problem, since good, useful feedback is never quite as simple as just asking someone. Employees are looking for it. Managers are looking for it. Executives are looking for it.

With respect to work time and workload there's always an element of presentism - if "enough" surfaced activity happens over the course of each week and the work is not obviously deficient, then most managers won't ask questions. And you already know that much, since you had many years of school to get that idea in your head. And when it's on-site, it's simple to get to that level - if you're in the office, you're at work, even if it isn't time-on-task.

But there is always going to be a level beyond that, of taking on tasks that are a good combination of "builds up a career" and "builds up the company" - stuff where you can act more independently, and likewise fail independently. You can easily fall into work that does neither or only one of those things, or convince yourself into workaholic behavior and sacrifice everything else. Nobody can offer a clear bright line of "this is the best possible course of action". But there is a "better" out there somewhere!

So if you can measure yourself by whether you did something of both career and company and other life things each day, then you already have a more balanced self-measurement than "quantities of issues" or "lines of code" or "hours in seat".

Try to know how many hours of "deep work" you can do before losing steam. Usually it's ~4 hours, once you get past that point, do some tickets that are not too demanding, and preparation for the next day. That should be around 6 hours of work and that's more than enough, almost no dev does 8 hours of solid work a day, a part of it ends up being browsing the internet and reading articles.
This is the question of the next few decades. How much do we keep the "x amount of hours a each day" thing built into our culture.
When the end of the day approaches, start finishing up whatever you were working on, and mentally prepare for what you'll be doing the next day. Then forget everything until tomorrow morning.

There's a huge amount of variability between developers, so don't think that the "workaholics" doing 50+ hour weeks are necessarily being more productive than you; unless you actually compare, they could really be struggling and just trying their hardest to keep up with everyone else. In the past, I've solved problems in minutes that someone else on the team had spent many long-houred weeks and eventually given up on.

> When the end of the day approaches, start finishing up whatever you were working on, and mentally prepare for what you'll be doing the next day. Then forget everything until tomorrow morning.

Be prepared to either let go of whatever plans you have made, or to stash them in actionable form in longer-term storage for a rainy day, in the event that you start work the next morning and are thrust into reactive triage mode. It can be immensely frustrating if you are anticipating and have expended mental energy planning tasks A, B and C, and attempt to juggle completing them with surprise Sev 1 priority tasks X, Y and Z.

Another trick is that when you're near the end of the day, deliberately stop partway through a problem and write down something about the next steps for yourself to read when you get back in.

This can help short-circuit some obsessive "just one more X" behaviors in night-owls, and makes it easier to get back into the groove the next day.

As a remote developer, setting a schedule for yourself is really important -- at least when you are getting started. Once you have an established work pattern that you are happy with you can experiment to see how things work.

I recommend doing what you are doing until you feel like, "OK. I'm in a rhythm and things are going well." Perhaps you are already at that point.

Next, when you have one of those days where you are feeling good and want to continue, work an extra hour. Then play with how you are going to use that hour the next day. Will you start late, or leave early or have a long lunch, or whatever? Tell your coworkers that you're going to do it. "I worked late today, so I'm going to X tomorrow". This keeps them informed so that they don't panic if they are looking for your help the next day.

Evaluate the progress. Did it feel good to you? For example, starting late does not work for me. I'm a morning person and taking an hour or two off in the morning means that I will get started on my side projects... and never stop. Then I end up working my "day job" until midnight --- no good!

Also, evaluate the reaction on your team. Were they OK with your behaviour? Every team is different. It's important to try to work with the team and not just stubbornly go your own way. I've worked with people who have the attitude, "It's my right to do whatever I want. I'll come in at 2pm and leave at 4pm and make up the time when it suits me". I hate working with people like that because programming is a team sport and I have to accommodate your weird schedule.

I work time shifted by 9 hours from the rest of my team. I know it impacts them and I do whatever I can to help them -- including working late nights sometimes (even though I'm a morning person). But you do what you can. Some of my colleagues can't get up early in the morning, so I'm happy to accommodate them, just like they are happy to accommodate my choice to live on the other side of the world. There is a give and take there, and as long as you are aware of it (and not always taking), then I think it's fine.

Deciding whether or not to work late is always a judgement call. My advice is to consider 2 things.

1: Is it truly and emergency? The server is on fire and you are losing customers. Somebody needs to work on it. You should stay if at all possible. Even staying around to provide moral support for your colleagues can make a big difference. Sometimes there is nothing you can do, but if you hang around and read slack (or however you communicate) and make occasional comments, it can really help the team. Nothing is more lonely than sitting in front of a melting down server, not having a clue what to do and everybody has buggered off for beer.

Sometimes people say it's an emergency and it really isn't. In those cases, consider the cost of saying no. There will be a cost if someone asks (or hints strongly) for you to stay and you say no. It sucks. It's not what it should be. But it's very common. If you can afford to pay the price, then feel free to draw the boundary. If you can not, then do what you have to -- and then try to get yourself into a situation where you can afford to say no the next time.

2: If you just feel like working, then go for it. Keep in mind that this comes after you have established a "normal" working day for yourself and when you know how to take back the time later. But stopping yourself from having fun (even if it's making other people money) is just silly.

Always keep in mind your own health, though. When I was younger, I seemed to be able to work a lot of hours and still stay very energised. As I've gotten older, I can not longer do that. I have to pay attention to my energy level, because a 12 hour stint can wreck me for the next 2 days. That's no good for anyone.

Finally, I o...

To me, it's more about making sure that you accomplish while pushing your learning curve up. This is easier when you work for an employer, but hard when you work for yourself as you always want to push more in less time. Another thing in a virtual work model is to make sure that you are engaged with your other coworkers throughout a regular basis especially if there are some others that are not working remotely. I think it's more about making sure that the team has a good feeling of the virtual model. I wouldn't be too worried about keep tracking of the exact clock in/out.
Using TDD (Test Driven Development) I tend to stop working when fatigue sets in and I'm tempted to skip unit tests for the sake of immediate gratification.
Unless that sweet green bar is your immediate gratification.
I use rescuetime to track my computer usage and aim for a certain number of “productive” hours a day. This way I don’t feel guilty for procrastinating or falling into a hacker news hole, that time is not counted toward the productive time goal.
>> I'm a relatively junior software engineer, a little over a year out from university, with a cushy remote job working for big-co. And I never know how much work to do on a given day.

Protip: Optimize for consistent performance. It's better to close 3 tickets every day, than close 30 tickets on Monday and one or two every other day, even though the latter scenario adds up to more tickets.

(Obviously, replace "tickets" with your own measure of productivity.)

I'm always objective focused with my team...

1. we breakdown issues/bugs into 2 - 4 hour increments where we write test(s) to replicate. Then share with team. Hopefully there can be a fix in that time, else create a new issue.

2. we breakdown new tasks into 2 - 4 hour increments with a new function(ality) + necessary tests

Then we spend ~1 hour a day doing code reviews. Some days I can get through multiple issues, some days it's just 1. In either case, we can assume 5 - 8 tasks / issues a week are completed. How everyone does it is up to them; so that's how you decide how much work you need to do.

Unfortunately, estimating can be poor for these tasks, but that's why we time box it and require a team notification for any issues (plus tests). It works relatively well, and everyone checks for open PRs or code reviews between each task -- so blockers don't occur.

I recommend trying something like that.

I'm remote and have been prone to workaholism in the past. Here are my techniques:

- I do track my progress on key long term objectives. If I'm getting behind I need to know, and burn the candle at both ends until I catch up. This should be rare.

- I try to set a daily goal or two of stuff to get done to make sure I stay focused on something productive and don't get distracted with yak-shaving or non-work.

- I stop hourly-ish and assess what I've achieved in the last hour. Sometimes I'm just not getting anything done and I'm better off calling it a day to get some real rest and diversion.

I try to not go over 20k keystrokes a day
I hope you don't write java in a text editor
I know cause I start to get slow at programming and find it hard to solve problems.
Switching context has a cost. Resuming work has a cost.

If it is already end of day, it may be reasonable to start your next task tomorrow rather than spending time next morning trying to resume your work.

The night before I make the list of the three MUST-DO items, always three. Once those are done, I can bail whenever and feel good about my work product.

I have a similar expecting from my employees.

These items are the detail, the standing orders still remain (answer phones, do meetings, email, etc)

Having had my first tate of work in an agile shop there’s a lot of nuggets of wisdom here.
You need to plan. Merely having sprints will not make your days shorter!

Think what's your 1 day, 3day, 5 day, biweekly, monthly, quarterly, yearly, and 5 year goals for yourself, team, product and company. What unknowns may influence decisions or are strategies? What assumptions need to be confirmed? How often are we checking ourselves on our progress? When do we get to change our mind?Do these things and how much should you with in a day becomes very clear.

Best thing in my opinion is to have something external that limits your schedule.

For me and few it of my coworkers it definitely were our children. I know I want to be at home by 18:00, so that I can have dinner with my family. One colleague was starting at 7:00 and and finished by 15:00, because he was pisking up his kid from preschool at 15:30 most days :)

I am not suggesting for you to get a kid :P but knowing that every day I want to end by $HOUR because I have a $THING does wonders :-)