Hacker News new | ask | show | jobs
by UglyToad 2490 days ago
I'd be interested to know if other software developers feel their current working hours are good/positive?

From feedback I've had I'm generally regarded as pretty good at my job and highly productive but my current working hours leave me completely drained, to the point I go home and collapse on the sofa, make dinner and go to bed. And that's off an 8.5 hour day. It's at the point now where it's extremely likely I'll leave software for good.

Software to me is extremely mentally demanding and draining, it requires short burts of extreme concentration, but what is more draining is making up the remaining 4-5 hours looking busy. My experience of software work is that it doesn't scale linearly with number of hours. Unless you reach flow which is extremely rare in a business setting (thanks open-office / scrum) you can get the work done very quickly and then have large periods of unproductive time.

It's my experience that at most 2-3 hours is productively spent, the rest is wasted.

I meet software developers who advocate for, or don't mind, 8, 9, 10 hour days and I simply don't understand it, it's alien to me. Are they being productive all that time?

Edit: to clarify (since I've posted on this topic elsewhere today) the 8.5 hours include a 1 hour lunch break and Fridays are slightly shorter.

28 comments

> Software to me is extremely mentally demanding and draining, it requires short burts of extreme concentration, but what is more draining is making up the remaining 4-5 hours looking busy.

Well said! I haven't met a single software engineer who hasn't described something similar to me. I'm the same, I like to wake up early, enjoy my first coffee and then I feel the most productive for the first 4 hours of the day. In those first 4 hours in my morning, often exactly between 8 and 12 I get a shitload of work done. I get so much done that it feels like a real milestone every day. The feeling of being contend afterwards makes it really hard to get into the same focused mindset back again after lunch. After I had my lunch meal I often spend no more than 1-2 hours just doing minor post-real-work tasks, email replies, etc. before mentally signing off completely and calling it a day.

Asking a software engineer to work a certain number of hours per week is useless. It's better to agree on a certain scope of work that one would like to see get done and then let them off the hook as soon as it's done. Some people can do a 3 day burst of 8 hours, but then are so destroyed on a Thursday or Friday that they won't get ANY work done. Others like me are productive every day, but only for ~4-5 hours. Either way, only a fool will think that they will get more out of an SE than they are actually able to focus on. They will just say that something took longer, a bug was holding them back or whatever.

Moreover, the salaries which SE get are so high that an employer isn't paying for the time anyway. They pay for the skill which is being applied during that time, so what's the point in making them commit a certain amount of time. Absolutely useless... well... hopefully one day things will change..

I agree that morning time is most effective and I’m not a morning person. I also agree that contiguous time is vital - usually 4-5 hours. What I’ve noticed is that once I achieve something in that 4-5 hours it’s very difficult to go on to repeat the feat in the next consecutive time block. It’s far better if I go for a run, bike, golf, hang out for the next time block than it is to sit there and struggle with the next code task. But this has been the case whether I’m coding or doing any other kind of work. That said, there are days maybe once or twice in a seven day period where I will code for 8-12 hours straight and the entire time is productive. I think it comes down to energy conservation. Just like runners can build up to run a marathon they usually don’t keep running marathons every day afterwards (although I knew a guy once who did that for something like 30 days straight). So what should one do in their downtime? I think planning and communicating is often seen as non work. I also think meditation is definitely not seen as something one should do on the clock. Yet when I read about billionaires daily habits, they often take naps in the day, meditate, etc. I think Dr. Dre was said to meditate twice a day during the time he was involved in Beats. (My memory is bad so if it wasn’t him it was somebody like that). Anyway I don’t think pay structure necessarily needs to change but maybe the constant monitoring and feelings of guilt if you aren’t pulling desk time should.
Hardy famously admitted he worked only 4 hours in math, and spent the rest of the time watching cricket in Cambridge.

Software is probably quite close in intensity to pure math, so I don't see anything wrong with this!

The 8 hour workday makes no sense outside agriculture and industry. And even here, due to automation, people should be spared from such a long day anyway.

The future struggle for people in these kinds of jobs is to get the wider culture to admit to itself that the latter 4 hours are unnecessary and even detrimental to workers.
I think it's rougher for people to understand that aren't in this industry, and there are so many jobs that _do_ benefit from this in a numerical way, i.e. more parts per hour, more accounts created, sales made, etc.
It's not just software and tech, though. It's almost every 'professional white collar' job.

I work in higher education, and it's exactly the same experience for me. 4-5 hours of productivity a day, at best, and 2-3 hours of just generally wasting time and trying to look busy/meetings/e-mails.

Can't deny that there are some industries where more hours are better and that beyond the 4-5 hour range they don't suffer from diminishing returns. But I'd point to David Graeber here and just say that there seem to be a lot of people out there making themselves look busy for much of the day, and in the process wasting a lot of their lives and needlessly taxing their own emotional states. And together we've tacitly made a decision that this is all OK and normal.
Yup, it's certainly a punchline in seemingly every office job I've ever worked. I've worked a lot of retail and cooking jobs though too, and I think a lot of people come from these fields as well and have trouble distinguishing intellectual work from physical, utilitarian work.
I don't know if they are unnecessary, but they do not require me to be in the office. I usually end up reading up on things, or responding to emails when I am in those latter 4 hours. Those tasks can be done just as effectively at home.
> I feel the most productive for the first 4 hours of the day

The same time that the product managers, project managers, portfolio owners, program managers, and stakeholders fill with hour-long "standup" meetings?

Meetings often destroy my productivity for the day.

I’ll be in the flow all morning, but once I have an hour long standup meeting (or similar scattered topic based meeting) I struggle to regain focus for the rest of the day.

I sidestep this problem by getting to work before all of those people are even awake.
110% this. I mostly work from home, but on office days, I show up at least an hour before everyone else, and often get a lot done in that time. Once people show up, start making coffee, talking about the latest sportsing, etc., I'm already 2.5 hours into my day.
No doubt the first 4 hours are intense and draining, which I definitely experience. But curious if any on this thread notice any correlation with what you put into your body? If I heavily caffeinate, I'll usually want to collapse right after work, which isn't helpful since I really would rather spend at least some time on personal projects each night (personal preference, not prescribing or judging to those that don't). Also, a bigger/carbohydrate heavy lunch usually knocks me out whereas something lighter or more fat+protein based won't as much.

[edit, cleared up who this is targeted at]

Had to switch from coffee to black tea for this very reason. Cannot subsist without some caffeine for mental health reasons, and absolutely love coffee, but it just does not love me back.

When I drink too much coffee, it makes alcohol that much more necessary to offset the extra stress and anxiety, but black tea does not have this issue, it just kinda fades away for me. Then a little cannabis at night for a bit of pleasure and sleep promotion.

I think this is where some of these Kalzumeus Classics come in:

https://www.kalzumeus.com/2011/10/28/dont-call-yourself-a-pr...

https://www.kalzumeus.com/2012/01/23/salary-negotiation/

The problem is most of us do not market our skills and the value we can provide. We market ourselves as being available to be handed tasks to toil on for forty hours a week.

Figuring out the value we provide, and how to explain and market that value, is hard work and higher risk, though, so many of us take the safe and easy route of a full time job sitting behind a desk for forty hours, whether or not we can fill those hours productively.

Thanks for this, I'm working my first job feeling like a complete slacker everyday, it's just like my head is full of fog after a certain period of time and I can't seem to push through it.
My experience too. This thread is helping dispel a bit of the imposter syndrome for me — you’re not alone at all.
yeah hopefully, still we are young.
I'm not a software developer, but basically a structural engineer / project engineer. I just wanted to say that my job is exactly like yours in some ways. Most of my quality work gets done in less than 2-3 hours; the rest of the time I'm either doing menial/repetitve tasks or talking to people / in meetings.

I guess I'm just trying to point out that I think this isn;t exclusive to software jobs, but it's the same trend for any mental labour job.

Getting into, and staying in, a state of flow requires a high cognitive workload, and getting back into it once you're kicked out is almost impossible some days. It often takes me at least 30 minutes to get back into that state, if at all. I think our society needs to re-think how we spend our time at work,but unfortunately that'll require government regulation, unless companies that are bold enough to switch to a 6 hour workday actual start making more money than their competitors.

It's interesting to hear that this is not just peculiar to software. I have no real understanding of what other jobs involve but I can well believe there's a similar experience in other mentally (and physically!) demanding jobs.

Flow is one of those things that I think is related to interest in the task at hand but is also, as you point out, difficult to recover once disturbed. It's also highly unpredictable. The 2-3 hours I spend productively might not be in a continuous block but also the time spent giving the appearance of productivity makes it harder to (re)enter flow. If work was structured such that you could work when productive and take care of life admin when not, rather than a discrete chunk of time every day, I feel like it would significantly improve mentally demanding labour.

Ultimately I'd like to see everyone work less [0] for which I think the driving force has to be regulation (companies demanding these hours are just more-or-less rational actors in the system), the productivity gains are there but we seem to be busier than ever - we've thereby created new fields of work (TaskRabbit, Deliveroo, etc) for people to work in, but at little benefit to people or society.

[0]: http://www.zpub.com/notes/idle.html

At my workplace we do recognize that there's a lot of unproductive time. The best programmers seem to watch YouTube a lot, the least productive ones seem to come early and leave late.

The company culture has sort of spotted the correlation and we're more or less free to do what we want at work. There's just enough pressure to not spend the day on DoTA and social media, which is probably the optimum pressure. Some of the team goes for two tea breaks a day. Some go for long prayer breaks. Some sleep at their desks.

The CTO doesn't use agile; we just tell each other what we want, and poll them on it after 2-3 days if it's not urgent, or the CTO just reads git commits to watch progress.

We still go to work 8.5 hours a day, because it's in the contract, but it's quite relaxing. Best job I've had so far.

After you collapse on the sofa for a few minutes you then get back to work keeping yourself current, right?

A reasonable measure of what it takes to stay current and relevant in this industry is twenty hours of dedicated reinvestment per week. Often times this reinvestment time is not afforded at work and as much as employers want to provide this as a benefit to developers, few offer the resources or time to allow developers to get anywhere close at work alone. Therefore, that time is likely your sole responsibility at home.

If you're like most developers you should be budgeting four hours each day M-F (or three if you include the weekend). I know many that push for even more.

Since our jobs tend to be sedentary and it's probably helpful to budget at least an hour for the gym a day to help mitigate the severe health effects of working a desk job, don't forget to factor time at the gym in your scheduling. Also, if you're like many developers I know you're likely on call and answering e-mails at home as well which is easy to forget about when calculating available time.

This then quickly becomes a challenging schedule even for eight hour days. Those selecting ten hour days are probably not reinvesting as much as they should and will potentially burn out or become irrelevant in the long term. I've attempted a sustained schedule of 12 hour work days with 4 hour reinvestment and an hour at the gym and found it unworkable in the long term.

That is insanity. What could you possibly study four hours a day that would be worthwhile? That's just pumping in useless trivia information that will crowd out the useful development knowledge. Is it a web development thing? Framework-of-the-week psychosis? It just sounds like a recipe to get burnt to a crisp in a few years.
My first thought when reading your comment was "How could you possibly fit everything there is to learn into 4 hours a day?", but I think the disconnect is in two different conceptions of what a job is -

For most people, a job is something where you are hired to do a specific task for a specific wage, using specific skills that you learn once and then apply many times. "Make this button green." "Move the navbar 20px to the right." "When this button is clicked, send off an RPC to the server, and when it's complete, update the table with the relevant data."

These types of tasks lend themselves well to an "instruction manual" approach to skill acquisition: you read the manual, you apply it to your job, you memorize the parts that you use frequently, and you're done. Once you know everything in the manual, there's little point in studying further, because you know everything in the manual.

A smaller (but growing) minority of jobs require you to solve a vaguely-defined problem, where there is no manual because nobody's solved it before, and often times the problem hasn't even been posed in a tangible form. "Find out who wrote everything on the web." "Evaluate whether we should invest $5M into this venture capital fund." "Identify our next billion-dollar business." "Make cryptocurrency useful."

These jobs lend themselves to a "toolbox" approach. There is no manual, but if you have a wide enough breadth of experience, you've picked up a large variety of tools that you might be able to apply to the problem. So if you're tasked with figuring out who wrote what on the web, one approach might be ask the authors by having them add HTML markup, and then parsing and following that. Another approach might be to identify author bylines through machine-learning and then cross-reference them with a database of peoples' names that appear on the web. A third approach might be to identify pictures next to the byline and run facial recognition on them. You don't know which approach will be most useful until you're given the problem and actually try a few, but the bigger your toolbox, the more likely you are to find one that works.

The financial returns to these types of jobs tend to scale exponentially with their complexity, because the number of people who can solve them decreases exponentially. That's why it's beneficial to have as big a toolbox as you possibly can if you want to play in these markets.

I have never been the former, so I don't know how it works. That type of developer clearly must exist somewhere, because I hear people on HN talk about it, but I have always been a "hey, we have this interesting problem to solve, can you help" type of software developer. And yet, I have managed to stay quite good at this even without dedicating four hours of non-work time to it. To each their own.
I've done both of these types of jobs and I definitely feel different about them.

An example is if you work in any service industry. You don't have to think much, you just do when things need to be done. There's a lot of repetition so you just do without thinking. Or in an office job there's generally a set of tasks that you get done and this very clear path of how to do these things. I do think more time generally leads to more output for these jobs (maybe not in service if we're adding more time into the times of day when there isn't a demand for service, but I think everyone gets the point).

In my last job I worked as a researcher and I'm now in grad school. I feel like for the most part I accomplish way more when I'm not tied to a clock (I still like deadlines and think they are beneficial). But some days are just worthless. Some days 10hrs is nothing and I've forgotten to eat. But most days I'm productive in the morning then do other things mid day, be productive again, hang out with friends, then do research at night. These breaks help me end up getting a lot done. The problem I'm working on is far away (though I'm positive some part of my mind is working on it in the background). But as soon as I'm tied to a clock I feel like I get less done. In those moments where I'm drained I end up just looking busy or do something like browse HN. The thing is that these actions don't allow me to recover, so it's harder to get back to work and be as productive as I was in the morning.

I think that's the trick here. Recovery. In mentally demanding jobs we don't consider rest. It'd be like working heavy duty construction all day every day. It's not sustainable. Or asking pro athletes to train at their max every day. Recovery is an essential part of training and being effective. I think you can train to get more hours of productivity in a day, but as long as we don't actually rest that will never happen because we don't recover.

But idk. Do others feel this way? Often I feel like many don't, but maybe people are just looking busy and we're caught in a feedback loop.

Excellent point. I would also like to point out that the instruction manual jobs that you mentioned are being automated away and the pace of automation over this type of job is likely to increase.
I personally study a thoughtful blend of the a number of subjects, including:

1. Machine Learning 2. Practical Software Development Tools and Techniques 3. Computer Science Fundamentals 4. Design 5. Marketing 6. Business Fundamentals 7. Strategy 8. Communication

I believe all of these are elemental to being a successful software developer in 2019. Machine learning is eating conventional software development from the inside out and conventional software development will eventually be mostly obsolete. Like many developers, I'm transitioning to this field to stay ahead of these upcoming changes.

Our jobs as software developers (and increasingly machine learning engineers and data scientists) demand superior communication skills and reasoning. Since the ultimate goal of most software today is to be sold for a profit an impactful area of study is business and marketing. Understanding how to structure software to best serve business goals means understanding the ecosystem that the creation lives in. Finally, the ultimate consumers of software and machine learning models are rarely technical and solid design skills are a good complement to a solid technical foundation.

Staying current and moving ahead in all of these areas of study takes at least four hours a day.

I appreciate the apparent effort you put into this post, but man there are a lot of fluff words in there. You inadvertently pegged my BS meter, even if you hadn't used "impactful." Ha!

I wish you nothing but success and hope your plan works out for you.

Everyone has a separate set of trigger words or phrases, I don't take offense.

As a side note, the phrase that machine learning is eating conventional software development might sound cringeworthy given how ML/AI is commonly portrayed by the media but it's the same description provided by Kunle Olukotun at NeurIPS (I was there when he delivered that talk).

I second what the previous guy said - what could you possibly be spending 4 hours daily on?

Anyone who claims to be current and moving ahead in all 8 of those areas would immediately set off red flags and signal to me that they definitely aren't current in all those areas.

I would argue that I'm current on the machine learning and practical software development side and minimally current on the others and improving.

To offer some background, on the machine learning side I've built and deployed over one hundred models using nearly every major machine learning technique available today. To stay sharp I actively compete in Kaggle and other competitions (and have won a few small competitions) and have attended over six large ML conferences over the past two years. I actively read through every major published book on machine learning and nearly an entire bookshelf dedicated to the practice. These books, as well as MOOCs contribute to the majority of my reinvestment time on this side. I turn around and directly apply this information to competitions and paid projects to help it stick. I also read through as many ML papers as I can budget time for. Arxiv Sanity Preserver is a great resource here (http://www.arxiv-sanity.com/).

On the software development side I've built and deployed over a hundred websites products and services in half a dozen languages over the last twenty years for clients or my own business. I subscribe to a litany of aggregators over python, c#, and javascript news and use that information to identify trends to focus on for the practical side. Outside of side projects to gain practice these skills I also use pluralsight, developer conferences, and (less frequently now) books to stay current on this side - which contribute to time against this daily.

On the computer science side I have a large collection of classic books I'm working through and rereading. Everything from the Intro to Algorithms to SICP. I'm currently on my second pass through MIT's 6.006 and 6.851. Much love for Erik Demaine. I own a collection of CS puzzle books including Cracking the Coding Interview and my wife tortures me weekly with dynamic programming puzzles on a whiteboard we have to keep sharp. Similarly, I also tackle LC and HR puzzles on a weekly basis.

On the marketing side I've managed a significant of marketing spend for clients and my own projects through every major marketing platform except facebook. Through this I've developed a skillset around split and multivariate testing. I've also run literally hundreds of marketing experiments to gain experience and understanding. I actively manage paid and organic marketing efforts for an array of projects which provides an additional impetus to stay current. To that end, I subscribe to a number of marketing news aggregators and I'm reading through every major marketing classic I can find. I've had more trouble finding good information on this side compared to other areas.

On the design side I'm currently taking courses through Kadenze and own every a large collection of design classics that I've been reading through. Everything from universal principles of design (strongly recommend) to the design of everyday things. Beyond thoughtful practical application of these skills in hundreds of websites and apps I've also exhibited artwork.

It's a similar story for the remaining areas. Mostly paid courses, conferences, and classic textbooks (I budget about 20k a year for these resources). I also use Anki for remembering important concepts.

I've been at this (reinvesting continuously in all of these areas) for over ten years and averaging 15-20 hours per week of dedicated reinvestment with nearly no breaks for at least the past three years.

Man, you sound like you need a big fat blunt. There is more to life than what you are describing here. Do you have any hobbies?
What is your end goal?

C-level executive? Having your own start up? Retire early? Researcher who goes to a lot of conferences and applies state of the art techniques to solve problems?

Sounds like most of the things you are working on are just making you a more efficient cog in large organizations. But in terms of compensation, sounds like the skills you are pursuing will have diminishing returns for increasing your compensation, with out a clear goal and road map for where you want to end up.

Most people (me included) reading this think it's insane. I'm glad it works for you and makes you happy (does it?). I'm sure some pointy haired boss would love you.

TBH, if you said all this to me in an interview or cover email, I'd pass you over and maybe keep your email so I could show it to people at the pub after work for a laugh. I'm not trying to be mean, but maybe you're so deep in this that you haven't heard how it might be perceived?

You may think this is due to some buried jealousy at your ability to keep this up, but I promise you it's not. I'm thankful for the time I spent all day/night learning what I know, but I'm thankful for it because it lets me not spend the rest of my life in that cycle.

Are you doing this for personal growth/satisfaction/enrichment? If so, more power to you. I'm personally more inclined to read a (non textbook) book or watch sports during my free time, but if that's what you enjoy then good for you.

Or are you doing this to maximize earning potential? If so, to me (maybe not to you) that's wasted time, unless you're banking over (arbitrary figure) something like $750,000 or more yearly.

I think 8 subjects is too much too make any meaningful progress. I have 2x 30 minutes when I'm on the train, and that's just too little to study anything worthwhile. I mean, I can read a novel in three days, but anything involving math costs me about 1 hour to get into before I can really learn something.
Can you give a couple of concrete examples when you claim machine learning is 'eating conventional software development from the inside out'?
See the first six slides here: https://media.neurips.cc/Conferences/NIPS2018/Slides/Olukotu...

This is not my phrasing but as someone that's deployed several models in production that have replaced existing conventionally written and maintained areas of code I believe it.

The significance is the ability for machine learning to displace traditional software development is small but growing and there's no real practical limit.

Thanks, I've seen Karpathy's core argument before and to be honest, I don't buy it. Throwing everything at neural networks and forgetting all domain understanding (sometimes developed over centuries) just doesn't feel right. They can be good at certain use cases, certainly, but the eating argument is going too far and just seems like lazy justification of his own research area.
I think they're on the money with the dedicating a few hours a day to study/productivity outside of work - I just can't imagine doing it for the same thing I'm already getting paid for anymore. If they're really into programming/dev studies though it's totally fine but it feels like a recipe for burnout.

A lot of people do feel bad if they waste their days just looking at Youtube or social media all night after work - I think a lot of people feel the guilt after the fact but never work to execute on it because its so easy to procrastinate/skip small commitments of studying.

When I was at a shitty job I hated that meant most of that study time went to side hustles and learning the local language to build my CV, but now that I'm free and in a good job it mostly goes toward trying out completely unconnected things like Piano or Chinese - as long as it's productive I'm fine. Playing around in new things that interest you half for fun is the best approach to not burn out I think.

> What could you possibly study four hours a day that would be worthwhile?

You're quite correct that ephemeral and arbitrary arcana makes up a HUGE portion of current applied knowledge in the software field.

But if I could study 8+ hours a day over decades, I'm willing to bet I couldn't exhaust the limits of language/platform independent applicable computer science and mathematics that's presently available, let alone keep up with any new developments. And that's before getting into domain-dependent specific issues and practices.

I realize that barefoot was speaking about studying things that are relevant to your job, but because you asked "what could you possible study for hours...that would be worthwhile", I'm going to say "study whatever interests you", regardless of it's relevance to your job. There are plenty of things worth studying for hours a day...as a hobby. I'm currently studying HAM radio & GIS systems.
Haha, yes, I recognise a lot of myself in this description. My previous job was a start-up and I was working maybe 8.30-6.30 most days with 20-30 minutes lunch and also working on open source software in the evenings (I still do the open source stuff and it's one of the few things I actually enjoy). I also attended regular exercise classes and the job came with crunch periods.

Despite switching jobs a year ago to an 8.45 - 5.30 schedule I'm now so burnt out I'm taking 4 months out and will probably try to change fields. Software is well renumerated but it's a gilded cage, I am under no illusions other people are better off or other jobs are without stress, but trying to be a good programmer has reduced me mentally and physically to the point I can't face the thought of working.

It really seems to depend on the company culture (which itself depends on the actual product) and office setup. E.g. I work remotely, spend time throughout the day relaxing and always done by 3pm and very well compensated
Lmao, this is just so absolutely ridiculous. Nobody needs to spend that long outside of work keeping yourself current... it's much more effective to just try to transition your actual work-work to being current and maybe spend a few hours here and there working on something interesting.

If your current job isn't keeping your skills up to date, you need to switch ASAP. But even if it's not and you can't switch... jesus, it doesn't take 20hr/week to learn some new stuff

I agree outside of software development. However, the only constant in our industry is change and that change demands continuous reinvestment. The only other way to grow is to focus on complementary skills with longer relevancy and that takes real time.

Your proposed alternative solutions to switch jobs or apply current skills at work (I'm assuming new skills or understanding) are common solutions used by many developers but ultimately have significant detrimental effects on companies both from very high industry churn rates as well as unnecessary application of new technologies by unskilled and inexperienced practitioners. These are as ubiquitous as they are bad and from a principled perspective I refuse to use them.

Well, you do whatever you think is best, however for me I am never going to be so loyal to an employer that I will spend 20hr/week outside of work making up for the lack of relevant tech I am encountering at work. And personally I wouldn't recommend that.
>A reasonable measure of what it takes to stay current and relevant in this industry is twenty hours of dedicated reinvestment per week.

Which industry is that exactly? Because it's sure not mine, and I'm a software engineer, which I thought was the default assumption here.

The guy is, assuming some normalcy, unhealthy. Maybe he's very young and still in the learning phase where you're eating up all your time learning, or maybe some physical/mental difference (Autism, etc). He's clearly never been burned out, and notice he budgets no time for social activities. Very unhealthy.
It's a challenging habit to start but not as difficult as you'd imagine to maintain. That said, I've met a number of other professionals that sustain similar schedules. I have an array of hobbies including flying, rock climbing, tennis, and traveling. I've never been diagnosed with any behavior or personality disorder and organize social time primarily around the weekends. I also hit the gym every day which helps a lot. I completely credit any success I've had to working out frequently.

I don't cast any judgement over developers not choosing to reinvest. I also think it's critical to know your limits and stay within them. I've been burned out several times throughout my career and know where my limits are.

I am however very certain that this industry rewards continued learning and with the right mindset it's very rewarding both in the short and long term.

>It's a challenging habit to start but not as difficult as you'd imagine to maintain.

The question is, why would you want to? I don't spend any time at all staying current on my own time. I stay current on my employer's time. That's part of what they pay me for. If they don't want to pay for it, then I'm finding a new employer.

Furthermore, I just have no idea where you come up with 20 hours per week. The kind of software I write just doesn't change anywhere near that fast, and I'm doing cutting-edge R&D! When I need to learn a new thing to do my job effectively, I go do research and learn whatever I need to. I don't, and see absolutely no reason to actively seek out new things to learn that I have no immediate plan to actually use.

>That said, I've met a number of other professionals that sustain similar schedules.

Have you really? I've worked for years, and I'm not sure I've met anyone fitting this description.

What the heck! This is how you fall into a deep despair of depression because you wake up one day and realize your greatest skill is leetcode and job hopping. 12 years in the industry, I can tell you that you'll be fine with zero grinding. Once you learn how to learn, you can pick up anything you want on your employer's time if you have your fundamentals down. You have a life outside of SE, live it.
This might be the least healthy comment I’ve read on HN
> A reasonable measure of what it takes to stay current and relevant in this industry is twenty hours of dedicated reinvestment per week.

That's insane - do we have statistics on people who do that?

I feel the exact same way. I come home and exercise and make food and I feel just beat. All I want to do is sleep by 9pm. I wish I had a few extra hours a day to study or spend time on leisure activities. As it is I study or read until it's time to sleep and if I want to spend time with friends something has to fall off my schedule even though I sit at work and try to look busy most days.

Once my work in a sprint is done my anxiety increases because now I don't know what to do and I'm considered lazy if I can't come up with some fascinating thing to produce. That's the most mentally draining aspect for me.

As a Scrum Master the final comment bugs me. The Sprint is a team effort, you might have been assigned user stories, but if your velocity is higher than others then you need to improve your estimations and you need to help others finish their user stories. Your scrum team does not sound like a team, but a collection of individuals.
As a senior engineering manager and individual contributor, your comment bugs me. You don't realize the value of "slack" and whitespace to allow people to perform at their best and most creative. If someone finishes their tasks early, let them breath and you'll have an amazingly happy, healthy and productive team member! Maybe they won't even quit 1 1/2 years into the job.

Building a team and helping individuals grow is so much more than "maximizing" (not really) every minute of the work day.

Just want to second your wonderful comment. Down-time is critical for productivity... it is not a paradox as one might seem. Just like exercising gives you MORE energy.
Down-time isn't down-time. Anyone who does any kind of mental work will continue thinking about the work even when they're away from their desk.

They will think about it on the way to work. They will think about it during breaks. They will think about it while appearing to wander aimlessly around the building.

They will think about it on the way home. They will think about it while they're at home, they will think about it in the shower, they will think about while eating or doing something else, and they will think about while they're asleep.

It will take them at least two weeks of actual undistracted full-time down-time to stop thinking about it.

But you can also make them stop thinking about it by piling on distractions - hiring sessions, meetings of all kinds, absolutely critical company events that aren't, and so on.

And you can also make them stop thinking about it by giving them too much to do. Most people have enough mental space for one, maybe two, problem tracks. Giving them more - especially with limited context switching time - and you'll make it impossible for them to solve any of them.

You're not running a physical production line. The typing and the code changes are the output of a complex and surprisingly fragile mental process. If you don't understand how the process works, you're wasting a lot of its potential value.

Not only will people be unhappy, but the quality of their work will suck too.

“Fix your estimates”

I have, for a long time, been very opposed to single point estimates, especially when those estimates are going to be interpreted like this. For any task that has any kind of uncertainty to it, there’s a range of time for how long it’s going to take. If you take longer than your single point estimate, you’re going to be punished for it in some way (work late, etc). If you take less time than your single point estimate, you’re going to be... punished for it?

What I’ve settled on in my consultancy work is doing 3-point PERT-style estimates. If I finish a task earlier than the range that drops out, I make a mental note to be more optimistic in the future on that project. If I’m nearing the far end of the range, I take pause and reassess what happened. Did the scope of the task blow up? Did I miss something up front? Is there too much technical debt in this project?

When you use SPEs, there’s no way to tell retrospectively (except in extreme cases) whether an estimate was actually good and the completion time was within an expected statistical variation, or if the estimate was bad and some part of the estimation process needs to be tuned.

I agree, I am assuming you know how we implemented Scrum.... We do point estimates very early to know if a story is too big and needs to be broken down and for rough release planning. The developer that volunteers for a user story will do an hours estimate when the user story is fairly well fleshed out.

We do not use estimates and actual's for any management metrics, this is for the developer to gauge their workload for the sprint. We know from our history that once a developer estimates about 40 hours of work for a two week sprint we don't allow them to take any more.

For us, estimates are the developers gauge to know when the sprint is full.

> 40 hours of work for a two week sprint

You're my hero. For real!

This is exactly the attitude that causes anxiety. You are done with the thing you were working on, now go "help" one of your teammates somehow regardless of whether that will actually increase the amount of value the team is delivering.

Baseball is a team sport, but that doesn't mean you have two people swinging one bat.

Software development is more like basketball than baseball.

In basketball, players do "take off" certain plays. But the most valuable players are still contributing during that time. A good shooter can just stand at the 3-point line. Even if they don't do anything, they occupy a defender and make the whole offense better.

A developer won't be cranking out code 8 hours a day. But if they are available to answer questions, perform code reviews, and generally help the team, that's a valuable contribution.

Yeah, honestly, I think soccer/basketball are better analogies. The team remains in formation. Doing too much is far worse than doing too little, because it pushes everything else out of sync.

A big part of the work is sometimes just fixing/improving workflow. There are tests to write, documentation, refactoring, warnings to look at, plugins to update, that wonky button padding to fix, all these little things that are not vital but stack negative impact.

There is a much bigger point here, though, about idle time.

Idle time is not just about healing the psyche. It also does that. But you run into problems from not having idle time much sooner than burnout, typically.

What is at stake is that the greedy algorithm for optimization does NOT work for complex systems. “I will make every individual person efficient, everyone is always working on something, look how good of a boss I am”—and you WILL fail to meet deadlines. And you will blame that failure on other people, or on the business constraints, because “well I did everything that I could to make the system efficient, the expectations that were put on me were unrealistic!”

The greedy algorithm is really obvious. Why would every part of the system doing less allow the system as a whole to do more? But it is also really wrong for any system that is large and complex enough to have the right sort of nonlinearities. If you’re managing a call center and everything is very linear—everyone has the same task day-in, day-out, the output of the team is directly changed by the output of every individual on that team—great, you can use the greedy algorithm. But if different people are working on different interrelated tasks then forget about it.

Because if you manage an interdependent system without creating idle time, soon you have every task falling into the proverbial “three priorities: Hot, Red Hot, and DO IT NOW.” You have that because you have chosen to create a system where there are large latencies in response to incoming tasks, so that those tasks are piling up.

I discoursed more on the abstract theory behind this in an answer on the Project Management Stack Exchange:

https://pm.stackexchange.com/questions/26651/why-do-all-the-...

This is a nice metaphor.

I think it's similar in many ways to the complaints one overhears about roadworks. "Why do they take so long!? It's just 5 people stood around watching another dig a hole!". Software is a lot like that, you can't have everyone run off and work on all parts of the stack and domain at once, there's only a certain amount of parallelizable work.

Examples are: The tester is always backed up (1 tester for 4 developers), so a developer can help test a user story they did not write. A developer can take on a user story that was originally assigned to someone else.
This is kind of a Kafkaesque way to destroy the developers' pysches.

I feel like you've misunderstood the critical replies you've received above. You may think you are profiting by trying to allocate every millisecond of the developers' time, but it comes at a great cost that is hard to see upfront, but is very very real.

The sprint is two weeks long, if you finish your user stories in a week like OP, then is a full week of downtime ok? That will encourage everyone to sandbag the work to only need to work every other week. No one is talking about milliseconds or even hours, but I don't want the developers making up stuff to do like the OP mentioned or taking stuff off the backlog that the team did not agree to for the sprint. He used the word Sprint, so I assumed we were talking about a team and not just an individual, support your team, that's all.
So... what does the scrum master do then? If the developer needs to figure out how to work things out so he aligns with the rest of the team?
It depends. For me it's a 20% role, I focus more on the sprint flow. We have a System Engineer and they do most of the Product Owner cat wrangling that I would assume a lot of Scrum Master's have to handle.

The scrum team should be acting as a team and the developer should work with the team to figure out how he aligns. That is part of the "Self Forming" stuff. The Scrum Master is not their boss and does not weigh in on the project implementation. They are more of the advocate for the team and the advocate for Agile/Scrum. e.g. Dealing with the Product Owner when they try to add stuff to the current sprint or Management saying everything is top priority. Technically we call that coaching the Scrum process, but I'm going to make sure my team has steady/predictable work and are not going to burn out.

The idea that I can add to the productivity of my team by inserting myself into other people's workstream is pretty thoroughly debunked. Not only would I be working out of context, I would force my coworkers to deal with that lack of context and compensate for it while I'm "helping" them. It also shoves my relatively higher productivity into my teammate's face, which is usually demoralizing.

There are many other reasons that this reasoning is misguided, but I'll leave them for now and instead point you to those smarter and better written than I am.

Luckily, there is a ton of writing on this. I'd start with "The Mythical Man Month" which explains that your reasoning is a fallacy with software engineering: https://archive.org/details/mythicalmanmonth00fred

For people advocate 10-hour days, it's possible that they are plagued by meetings/etc. so can only work efficiently during certain hours. If you look at the sum of high productive hours it could be just like you: 2-3 hours.

I think 3 hours of high productivity is maximum for me too, the thing is it is very difficult to reach really high productivity, so I can wrap up my work in maybe 4-5 hours writing SQL and report (exclude the meetings and break/etc.) and still have energy to write code in my spare time for around 1-2 hours. How and when to achieve high productivity and enter the flow are pretty random for me.

If you can reach high productivity for 3 straight hours a day I'd envy you, because you probably achieve more than people (like me) who work 5-6 hours in sub-prime conditions. I'd rather to work full of energy for 3 hours during the morning, take break in the afternoon, and come back for another 1-2 hours. Much more enjoyable.

BTW I found that useless meetings drain energy really FAST.

I know the science has been semi-debunked, but I can't help but feel that the idea that you start your day with a fixed number of attention units is real. Meetings use up a higher number of units, and, once gone, you don't get them back that day.
I don't know that either. I can be REALLY productive for 2-3 hours a day but rest is socializing with other devs, answering emails etc... I try to structure my day so that I learn some stuff in those 8 hours, do some personal stuff (pay bills, call doctor, arrange stuff after work). I am regarded as quite productive but sometimes I feel really bad for not putting 100% in all those 8 hours but I find it impossible. I have problems with my legs when i sit for long periods of time so I am must productive in the morning till 12:00 after that it just so I have enough hours clocked in
I think it's maybe partly that the jobs I've tended to work have no real socializing/email answering/meetings aspect. I've tried to get more onto that side just to preserve my sanity but it's been very much "go through tickets for 7-8 hours a day".

I can't remember the last time I needed to respond to an email.

And they've all been very different jobs/industries - consultancy, startup and large company. Maybe part of it is the tech (C# .NET) or the location (England) but from talking to my friends in the industry the experience seems to be similar.

Grass is greener...

I miss the days when I could just sit down in front of a program, and just program for 6+ hours out of the day. I did that when I worked for a small startup. I talked to a boss for 30 minutes to an hour sometimes, but otherwise I was left to myself to build software.

Right now I work as an Architect/Support/Developer combo, and it feels like I get nothing real done most days. I'll have meetings at random times throughout the day, half of them status meetings, I'll get pinged at random times in the day by the business side asking to look into various things (I maintain the phone systems for three call centers, and various things don't happen the way they expect and they need us to look into it...we used to have a dedicated support guy for this, but he quit and they won't replaced him, it's been six months now). And then I need to look into our codebase for any of seven different internal phone applications I'm responsible for, figure out how to add the new enhancement requested by the business, and then write precise instructions for our offshore dev team of else it won't be done correctly (might as well have done it myself, half the time).

There are some days in which outside of the meetings, I'll fix a couple of tickets requested by the business side, and then feel like I have no mental energy for anything else.

Every once in awhile I get a taste of what it used to be like when I was productive when I work on projects at home, but even that has lots of distractions between my spouse and attention seeking dogs. I don't mind those distractions quite as much though. Usually. :)

I probably should find a small developer to work for again, where I can just be expected to code, but at my age I'm almost afraid to do that, since I know ageism is going to start limiting the dev jobs I can get before too much longer, and I could make a lot more money just embracing the management roles....but my brain wants to build cool things, not people.

I am working for a relatively small consultancy company. We are team of 5 programmers working on various small programs for government. It gets crazy coordinating between different people trying to get to know where to get data etc... I am changing to a pure backend java job next month. I can't wait to see how other programming jobs look like. (working at this consultancy is my 1st job as a programmer and I've been here for past 3 years)
I think you achieve a lot being really productive for 3 hours and it's kind of difficult to increase that amount because your brain is used to that amount already. It's pretty good if you can put another maybe 1-2 hours of study into it. I find exercising helps me to enter the flow more quickly, but not necessarily INCREASE the time. The total amount is probably defined by genes and health condition in general. I see people who can be high productive for 6-7 hours WITHOUT stop back in high school but that's rare.
I agree. Usually from 9 - 12:30 is my most productive time. Once lunch hits and I start socializing I am just not nearly as productive. I may get an hour or two or productivity in between 1 and 6pm but it's not nearly enough as in the morning. The worst is the last hour or two of the day. I've checked out and there's usually not much work so I end up just sitting idly browsing the internet.
Yeah, I also see this issue. It's made worse by Agile/Scrum that assumes during the planning poker meeting that every dev has 8 hours per day available of constant flow while the real value being maybe 5-6 if you're lucky so you end up cutting corners or burned out due to the stress of meeting the target velocity.
> planning poker meeting that every dev has 8 hours

You shouldn't be talking about hours at all. Points and team velocity help to account for all the overhead in a sprint. Once a team has a consistent velocity, they can talk about items in retro to speed up that velocity (drop a meeting, etc...).

I once had a manager who tried to break tasks down into 15 minute increments. There was a task that he argued was a 15 minute task. And yes, he was right assuming my computer was open, the right editor was up, the right project was pulled and up to date, the project was properly building, there were no updates to apply, and the list goes on.

Hours is just a bad way to plan. Unfortunately those who bill by hour are forced to plan that way.

Your planning system is bad. This was the original origin of using story points instead of days, because the designers of extreme programming found that the work of 1 "ideal day" (8 hours of uninterrupted productive coding) could be done in about 3 days.

And don't get me started on measuring velocity, especially across teams. Your environment sounds like its poisoned by middle management.

It's not my planning system but it was broken indeed even though they brought in a licensed scrum master as a consultant but he was more interested in running things the way middle managers wanted it as that guaranteed his job security.

Anyway, thank God I left, but from what I hear from other mates in the industry it's not better in other companies in my area since they're all run by middle managers.

Maybe it's a problem specific to Germany where managers are always right and their authority is unquestionable.

That's not specific to Germany. Middle managers are politicians inside a company. Their ultimate goal is almost always to accumulate power.
Agree. From the agile manifesto's principles [0]:

> Build projects around motivated individuals. Give them the environment and support they need, and trust them to get the job done.

> Agile processes promote sustainable development. The sponsors, developers, and users should be able to maintain a constant pace indefinitely.

If either of these requirements are not met, you're not being agile.

[0] https://agilemanifesto.org/principles.html

Not an inherent agile/scrum problem, we assume 6 hours availability per day during planning in my team
We assume 4 hrs, that not only accounts for meetings, breaks etc, but also allows people time to help each other with unscheduled support/help/discussion.
Which is still about 3 more than reality
Reading this makes me feel less bad, I tend to think I'm making excuses for myself and/or just being lazy. Especially because I also have to do some tech support stuff, side meetings, etc, while trying to work on (at least one) project simultaneously, the actual programming part suffers first.

Some days I just can't get the programming wheels turning, and a lot of the time it's just because I keep getting interrupted or can't focus with noise around me. God forbid I work from home when I have a hard deadline so interruptions are at a minimum...

Before leaving software, give freelancing / contracting a chance!

I’ve managed to get great clients for years+ working 20hrs/week. I’m briefly doing 40hrs/week right now and am definitely finding it draining!

One neat benefit of freelancing is that if you don’t feel like working, don’t! It’s a win win. You don’t work when you feel drained and the company doesn’t pay you for your least productive hours.

Best of luck!

> if you don’t feel like working, don’t! Man, I got bills to pay, gotta save up for retirement, save up for a house, my car is on it's last wheel. I can't just not work
For me, it tends to be "all or nothing". I may be totally obsessed by my project, from the moment I wake up until I go to bed. I want to see it working, or complete a last feature, or a cool refactoring. I agree it's draining and not healthy but I feel I don't get much done if I only work a few hours. Besides, sometimes it takes time to warm up, and I don't want to break the flow.

Alternatively, I can be disinterested and I will be slacking for some period of times, could be weeks. I would add some doc here and there, fix a few bugs, discuss with colleagues, learn about new techs. But then, I feel guilty and anxious and overall not happy.

I wish I was able to be motivated everyday, work 7 hours of productive work and call it a day.

I haven't found a working mode where I feel productive and motivated for long period of times.

I wish I could upvote you a hundred times. I get at most about 3 hours of intense concentration per day. The need to show constant progress on daily scrums is what made me quit my job recently.
It's very similar to me. Not only on a daily basis but sometimes even a week worth of nearly nothing and then a day worth a week.

The problem I see is that reducing working time per day doesn't necessarily keep the same productivity. If I'm 3 hours productive in a 7 hour workday, I won't spend 3 hours productively in a 5 hour workday. My productive time is mostly random.

For me the solution is not feeling guilty about slacking 50% of the time, because it's mostly normal, and having a manager that understands that. As a manager in the future I definitely want to keep this attitude and want to be understanding myself and protect my developers.

Also in a 1hour meeting that felt completely unproductive for you, you might make a single comment that turns out very productive for the project overall. And reading up on new tech or watching conference videos on YouTube might feel like slacking, but it also improves your worth to the company.

Is it only related to software development where you feel drained after doing something mental for an extended period of time?

For example, what if you play a complex video game that requires skillful choices and mental effort? You might be making split second decisions many thousands of times over an 8 hour time frame.

For me, it all boils down to being genuinely interested in what I'm doing (and you can't fake this). If it's a programming gig that I really enjoy, then I will want to do it from the moment I wake up until I goto sleep and this might be 16+ hours (with reasonable breaks for food, etc.) but there would be multiple productive 4+ hour stretches in that 1 day. The same could be said for a video game that I like.

If anything I feel less drained at the end of those programming sessions because it feels like you accomplished a lot, and you look forward to the next session (it's all positive feedback). It's almost like getting some type of runner's high, except for your mind.

I only find myself feeling drained when it feels like I have to force my way through the work. I have no idea how low level chemicals work in your brain but just based on personal experience I would guess it takes a lot more mental effort to do something you don't enjoy for many hours a day. If your day is filled with mostly negativity, that's going to be very draining. It's might be similar to how if you hang out with someone who does nothing but complain or has a negative spin on everything you end up feeling drained. I struggled with that for a long time (being the negative one). It helped to become mindful of these things so you can reprogram yourself and make decisions that avoid feeling that way.

Just based on what you wrote, you're saying you only work a few hours a day but then waste the rest of the day away in meetings and trying to look busy. I'm no psychologist but it sounds like you're spending a majority of your day in a stressful / negative mindset. It would really suck if you had to "fake work" for 4+ hours a day to look busy so you don't draw suspicion while also being constantly interrupted every time you try to start something. I'm 100% sure I would be drained if my work environment was the same as yours.

10 hour day would be great, because if I am already at work, it doesn't matter much if I stay for 8 or 10 hours. But I'd rather work 4 x 10 than 5 x 8. That one extra day would go a long way.
I find I tend to write bugs after around 7 hour's work, and during the first four, I can throw myself at a new task in a way that at the end of the day I'd be utterly incapable. I think shorter office days would benefit most mature developers. ( I say mature here because I've worked with people who only manage to get things done through many hours extended foot dragging and procrastination. If you can focus, short days can be beneficial. )
I feel the same. The problem is, companies use this heightened productivity to pile on more and more work. So I struggle to get things done, even on time, when I'm context switching a lot. Part of this context switching is self-distraction, part of it is work distraction.

People are known to not be good at gauging their actual work hours. So, when people say they work so much, I'd be skeptical of those claims.

Another phenomenon that makes most programmers unable to achieve flow state is technology diversity - brain can get into flow state only when one is using familiar tools - and than happens rarely, at least for me (I work on a project for 6-12 months and ten move to other and tools and main technologies aren't chosen by me usually).
Work on one project for 6-12 months? Sounds wonderful. Try context switching between 7 different application's codebases with different technology stacks / system architecture in a single iteration (well, sometimes just 3 or 4). Our department was eviscerated and software that had dedicated people on them all got put in my lap to maintain and support. I have to reboot in my head how each application works a couple times a week at least.
Yup, maybe 6-12 moths is wonderful comparing to what you have to deal with, but still not enough for me to get into flow. I consider myself average programmer, so in your environment I'd feel like in hell ;)
I used to only work on one project at a time at certain previous jobs. I really miss it. I felt a lot more productive then.
I'm not a full time developer but have to spend some days purely on dev work(literally programming from 9 to 6). It is extremely mentally draining,yet rewarding.In any other field, with such a level of business value created, would result in compensation being many times higher than any developer would ever make...
I've begun to think most software engineering should be done remotely. Easier to get into a flow state, no need to look busy, and you can work at times when you are most focused. I transitioned to full time remote, and routinely work 5 hour days, and get more done than when I was working 8-10 hr days
Or we just need better offices. I hate working from home and don't want to have to rent a separate office space on my own dime. Luckily for me I work somewhere where I have a real office (with a door!) and no one cares in the slightest when I come and go or whether I look busy when I'm there.

If you like remote work, that's cool, but your complaints are with shitty offices, not something inherent to onsite vs. remote work.

> I hate working from home

Why do you hate working from home? I hate working in an office and will never do it again.

> and don't want to have to rent a separate office space on my own dime.

Also, most companies will (and should) pay for remote workers to have an office outside of their house, if that's what they need. That's been my experience for the past 5 years anyways.

> your complaints are with shitty offices, not something inherent to onsite vs. remote work.

For myself and many others I've read accounts from, it's so much more than a 'real office'. It means no commute, no office drama, being able to talk with my wife in person during the day, make my own lunch... For people passionate about remote, it's more than a specialized office, but a whole different way of working.

If you’re interested in the work it’s definitely possible to work more hours productively. But it’s not optimal. Maybe if employers escaped the gulag mentality and paid wages more proportional to value created it would make sense. But as is, any intelligent dev will find ways to minimize their output.
> It's my experience that at most 2-3 hours is productively spent, the rest is wasted.

That sounds about right for most workplaces I've been in, and it's probably a fairly sustainable pace for work that requires careful thought and concentration.

I remember reading about a consultant who advised struggling graduate students to spend no more than 18 hours a week working on their dissertations; on this schedule most of them finished in 6 months or less.

Working in an enterprise environment, and currently working probably 8-9 hour days, I think I can shed some light on this.

All hours between 10 and 6 are basically unproductive hours, because they get taken up by useless meetings and interruptions.

Any extra hour I work outside of that time, is worth basically 3 or 4 inside it. So working 10 instead of 8 hours practically triples my output.

My experience has been highly variable. It's just my experience, I'm a pretty weird person and tend to be an outlier. But I do think the observation of the variable effect of different job situations in my life is pretty interesting.

I had a period of time where I worked entirely on my own "startup" for about 12 months. I worked nearly 7 days a week for (what I recall as) a lot of hours but I honestly don't know how many. This work was SO much fun. It was definitely still work but I don't think I've ever had more exhilaration than created and launching the projects I did in that year.

I then worked at a startup where we worked a solid 6 days a week for about 10 hours a day. That really consumed my life and wasn't very rewarding in my opinion. I learned a lot and made some really great connections to silicon valley investor types but the job consumed so much of my life and the startup wasn't successful at all.

The next stage in my life was the time I coded the most. I worked for one of the huge silicon valley software companies and they fostered a good work-life balance for the employees. We generally worked 8 hour days and no weekends ever. Also, the work environment was pleasant. I became good friends with my coworkers. I say that because I think that all contributed to the 8 hours not feeling extremely draining. I had a lot of energy left after work. During those two years I launched two websites in my spare time that were pretty heavy undertakings. I also dabbled in other projects. I worked a lot of nights and weekend on top of the corporate job. I could go several weeks without a single day off.

After that I worked at a startup for 2 years and another quasi-startup for 2 years after that. I really disliked both of those jobs and seemed to have very little drive to work on anything on my own time. I actually started playing and recording a lot more music in those years, even started a podcast. :)

I recently switched jobs to a larger company with an established app and it has a similar feel of the other big-corp job I held. Generally, I work 8 hour days, a little bit of weekend and night work but only around releases and deadlines. I also get along with the people in my office very well, it's fun to be at work.

I consider myself as an "emotional" developer. I kinda say it sarcastically but there is some truth to it. When I feel good about what I'm doing, I can lock in for many hours straight and it doesn't drain me that much.

I have similar experience as you, and what I concluded was that it was the 4-5 hours of looking busy that really made me tired, usually I was surfing the internet, switching to a new page every minute.

A better strategy is to work 15-30 minutes and then take a few minutes break where you meditate.

> you can get the work done very quickly and then have large periods of unproductive time.

Totally agree, but I've also worked in codebases where I spend a huge effort and don't get anywhere (these are usually codebases with dark corners which no one knows anything about).

I intentionally show up to work around 11 and leave around 4 or 5 precisely because I know I won't be productive for the full 8 and would prefer to use those last few hours to go climbing or workout, which helps to relieve stress and prepare me for the next day
Do you work remotely or in an office? I do about the same (9 to 3) but remotely, so the visibility of hours in an office is what I'd worry about, though I have no plans to work in an office.
exactly. pretending being busy 4-5 hours eats lot of energy. Also sometimes, you spend weeks doing nothing and then your idiot manager wants to deliver something quickly over weekend. what a waste of life. My biggest regret wasting limited time of life on these stupid things and people.