If I know I am going to have my day broken into sub 1hr chunks thanks to meetings and such, I pretty much write off the day entirely. It takes time to get into the flow state, some studies cite over 20 minutes, and once you are in it you want to stay in it for like four hours. No emails to follow up with, no slack, no zooms, no one tapping your shoulder, no conversations about the weekend distracting you on the periphery, just you and your task at hand.
It's pretty ironic, because this is how a lot of people study in the library at college,show up and stay all night grinding in the flow state with your phone shut off. Yet when you graduate to the work place, you seldom have the opportunity to work like how you've been training to work for all your advanced schooling ever again.
With respect to the article and maintaining context while coding for different projects, I find having a tmux session for each individual project super helpful.
> no slack, no zooms, no one tapping your shoulder, no conversations about the weekend distracting you on the periphery
My teen jobs were in stores, restaurants, and manufacturing. In those contexts, everybody understands that when you're working, you're actually working. Even managers understand that even small discussions need to be fit neatly into the flow of the work, and actual meetings require careful planning to not disrupt operations. The space too was carefully designed to maximize effectiveness.
So American office culture seems absolutely wild to me. Especially in software, where we are expected to fit our actual work into a sort of calendar Tetris. Oh, a grand poobah would like another status meeting, plus a lot of time spent coming up with estimates that are not going to change anybody's behavior in the slightest? Gosh, do you think that might have an effect on the completion date? And sure, why don't you put me next to the salespeople making calls all day. I'm not making any progress anyhow.
The only conclusion I can come to is that in a lot of places, productivity is much lower on the list of observed priorities than stated priorities.
And then you're finally fed up with all this and go full remote, if the company allows it. Congrats, now you lost access to 80% of what is going on and fell out of the loop for anything important, and you're now guaranteed to lose in any power struggle that could happen.
In one of the companies I worked for, it was comfortable in the beginning - there were offices, 2-3 programmers in each, not too crowded, but close enough to see when the coworkers were focusing on something and when it would be ok to do a quick "hey, do you know how to...". The company grew, moved to a bigger building, rooms became larger, now there were 4-5 programmers in each. It was still OK then. Calls and longer talks were done in separate rooms, and a quick chat with the guy next to you could be done like you'd do it in a cinema - quietly.
When I was leaving the company years later, it was after it moved to a place with one huge open space and a set of rooms that you needed to book days in advance to use. Some of them were permanently occupied by "important" people even though they had their own offices. That resulted in everybody and they're cat making calls and meetings and sometimes even plannings right in the middle of the open space or in the kitchen. Finally, a "hot desk" system was implemented, and you had to book your desk days in advance.
I asked the CTO who I've know for quite some time - WTF man? He said that he likes it, because he can see at a glance that everybody is working. I was reminded of storehouses with special elevated rooms that had a view on all that happens on the floor. Saying that I got disillusioned doesn't even begin to describe what I've felt then...
> I asked the CTO who I've know for quite some time - WTF man? He said that he likes it, because he can see at a glance that everybody is working. I was reminded of storehouses with special elevated rooms that had a view on all that happens on the floor.
This kind of panopticon is how prisons are often organized.
I can be lying on a couch working hard. How does the CTO see that? The typing part is just the tip of the iceberg.
> I can be lying on a couch working hard. How does the CTO see that? The typing part is just the tip of the iceberg.
It is amazing that most knowledge worker management does not understand how knowledge workers work. Most of our hardest work does not involve hands on a keyboard.
I've been full remove for a decade. There's no way I could work in an office where "butts in chairs" was the way. I guess I would just have a notepad and a pencil and just sort of move my hand back and forth on it while I was in my head solving the real problems.
Similar raising. At one point I was ASE certified, at another I was a landscaper.
The first thing I noticed about white collar work was how gossipy and lazy everyone was. We didn't have time for that in blue collar work. I had no idea how these people were useful to work or society.
It seems so bizarre to me, even today, that most white collar jobs make more money. It's like they took the people who couldn't work physically, made them feel superior, and for some reason paid them unreasonable wages.
It's not really a secret that a lot of white collar jobs are bullshit jobs - if all blue collar jobs were to stop working, society would collapse overnight. Not so much with white collar jobs.
We got a taste of that with the various lockdowns during covid : only the truly essential jobs must be done live and cannot be done remote.
Aye, same. The level at which my time was structured and accounted for on the blue collar level would astound the white collar folks. Entirely directed vs. entirely self-directed.
> It's like they took the people who couldn't work physically, made them feel superior, and for some reason paid them unreasonable wages.
Easy killer, you're projecting.
I could go back to being a bartender today, and could do 90% of the job (I'd have to refresh my memory how to mix a few drinks, but most of em are still there). I could probably go back to Private Investigator, or food truck work too.
But it took a whole lotta learning to get to the point where I can do my current white collar job. No one I bartended with could stay sober 4+ days a week or avoid DUIs; no way in hell I'd trust them with a production GCP cluster.
IMO you work harder in blue collar but its less stress because people don't expect you to hustle to meet a deadline.. I was also a landscaper for a while. Labor is labor in that sort of job, it marches at an expected rate and is dependent on how many hands are working. You often cannot just work for longer, either, if you are bound by the constraints of daylight, or having to clear out of the area by a certain time due to noise perhaps. There is also no way to weed, mow, or lay sod faster than you are already doing it. The deadlines end up moving to fit the realities of the speed of labor against the realities, rather than what happens in white collar work where labor being expected to meet self imposed rigid deadlines, which leads to burnout and poor quality work, and still missing deadlines.
I'm old enough that I remember a time when developers had offices... sometimes private, sometimes 2 to a large office, but usually shared with other developers who generally also understood the benefit of not being interrupted so it worked out fine.
Young me's head would explode if I got a glimpse into a future where cubicles are now looked at as the good old days.
And the progression keeps going with a lot of companies that have open office "hot desking" where not only are you working in a chaotic open environment, but you don't even have your own little space there from day to day.
All of this makes it seem increasingly bizarre to me that a lot of the industry was forced to make remote work viable through the pandemic and many companies saw productivity go up and now a lot of them are trying to claw back on remote as quickly as possible.
There was a lot of “hurry up and wait” at my last job, so I had time to reflect on the hotdesking there.
And I theorized that one aspect of hotdesking is absolute control over employees by having them go through the experience of “clearing their desk” every day so they feel like they’re fired every day. This puts the grunts back in their place and keeps everyone docile because you know you’re just a cog and your job is not a permanent thing at all but rather something that you must work hard at earning again for the next day, lest today’s daily desk clearing be your last one.
The cause of all this is the grafted on management caste, that does not code. For them the whole endavour suspicously looks like not doing a thing, for to do a thing, there needs to be communication, information flowing up and down the hierarchy. Not some dude sitting there like a zen monk, reading, ocassionally typing. Slackers! Best load there calendars, to get them going..
I'd say the cause of this is the developers can't explain themselves, cannot defend why they need isolation, why they should not be interrupted, and more often than not can't explain what they do, what their jobs are and why they are required, in an understandable manner to the management caste. They act as they do because the developers are an opaque pool who talk nonsense when asked questions. Of course they/we get treated poorly.
Nah. I am extremely good at explaining these things. At this point I have a deep grounding in the theory of work. Explaining isn't enough, because the people with power don't care about the same things. Productivity is just not that important at most companies. Conformance to the feelings of the people at the top of the primate dominance hierarchy is generally what matters most.
If I walked into a foreign profession, with no clue, no previous research and assumed to be in command, with the base assumption that its the task of the surrounding eco-system to explain my job to me..
Lets say it that way, such a mindset ought to be valuable to the extreme. Thats why we see a constant stream of meddle-managers, setting out to make compliance and "apply presure" startups. Its definatly at the core of value generation.
ChatGPT: Ask me on the hour, every hour for my status and remind me of the deadline..
We share an old (1960's) building with our research department. Almost everyone has an office, except for contractors and administrative assistants who are in cubes.
This building is scheduled for demolition and we're being moved to an open-area workspace in a new building.
At least it's above trendy retail so we can get overpriced coffee and sushi on our lunch breaks.
My internship at IBM twenty years ago was like that. A fellow intern and I shared an office (and an apartment—we were sick of each other after a while), but the FTEs all had their own offices. No idea if it was the norm for IBM at the time (my team was part of an acquisition that was still mostly isolated from the wider company), but it was extremely conducive to productivity.
> I decided there and then that cubicles has material benefits over open offices.
The cubicle was invented in the 60s as a way to liberate people from the tyranny of the open plan office (just look at film from before then — say, “The Apartment” —- and you’ll see the open plan was the norm.
It’s a shame that the cubicle itself became a tool and exemplar of anomie.
I think the distractbility and the opportunity to just sit in meetings and chats all day is an example of the priviledge that we as white collar workers enjoy. Our productivity isn't measured in output, in number of pallets cleared, in end of day take, it often feels like it's measured in just time spent under a contract.
It feels like I can get away with only a few hours of what to me feels like productive work a week. Actually, I had a really good day last week, but then it takes days for the feature to pass review, rework for said review (often trivial remarks), and to end up in the main branch ready for deployment.
Wait, are you me? I’ve had the exact same experiences! Especially being sat next to sales people. Even when they are not on the phone, they tend to be very loud, outgoing, exuberant, extroverted, etc. and are constantly chatting.
> It's pretty ironic, because this is how a lot of people study in the library at college,show up and stay all night grinding in the flow state with your phone shut off. Yet when you graduate to the work place, you seldom have the opportunity to work like how you've been training to work for all your advanced schooling ever again.
To be fair, I think staying up all night trying to be productive instead of getting a good night's sleep also makes it hard for most people during the day. As someone who consistently got 6-8 hours of sleep every night in college before a day with classes, I've always been mildly horrified by the fact that "staying up all night studying" is somehow considered a good thing.
I think you're still missing the point. It isn't that you need to stay up all night, but rather the flow state. In college you typically have classes during the day so you aren't going to get it then. That doesn't make it a great thing but it also isn't exactly relevant to this conversation.
I understand the point they're making, but I'm not sure you understand mine though. If someone talking about weight loss suggested that people should just never eat breakfast to reduce the amount of eating they do in a given day, it would be relevant to offer a critique this may end up being counterproductive overall to the goal due to it just pushing the issue into another part of the day; this is basically the same thing.
Yeah, but the point you missed was about the uninterruptedness of studying for an exam — a student might be able to dedicate a whole week to learning for an exam and then study each day with minor interruptions.
That those studying session can sometimes be too long to be healthy is certainly true, but was not the point argued here.
When someone argues that a Ferrari is a fast car and you criticize that not all red cars are fast, you are arguing against a statement nobody made while still saying something true.
> Yeah, but the point you missed was about the uninterruptedness of studying for an exam — a student might be able to dedicate a whole week to learning for an exam and then study each day with minor interruptions.
I don't know why you assume that I don't understand that they're saying that their studying is uninterrupted when it's overnight. That doesn't change the fact that sleep deprivation is also something that makes any sort of studying less effective.
> When someone argues that a Ferrari is a fast car and you criticize that not all red cars are fast, you are arguing against a statement nobody made while still saying something true.
In this case, it feels more like someone said that Ferrari is a fast car, and I mentioned that some people can't afford Ferrari's and might find a different car a better fit, and then you came in extremely unhappy with the fact that I dared to mention anything other than a Ferrari because that's the only car OP mentioned. It's extremely common for people to reply to comments making a tangential point, and doing so doesn't at all take away from other people's abilities to have parallel discussions in other subthreads about different points; that's kind of the whole point of this style of forum.
I guess that's possible. I don't tend to spend a lot of time thinking about introductory phrases like that either when reading or writing; they mostly convey tone and flow to me rather than being super meaningful, but I could see other people focusing on them more causing a disconnect.
A tip for your future: if someone doesn't understand what you write, say, or draw, that is squarely on you. "I don't tend to spend a lot of time thinking about... ". Putting information or statements into context is a key, core part of effectively communicating. "I guess thats possible" -- no, you don't guess, several people just TOLD you that is how they interpreted your words. Your response can't be indignance or ignorance. Your response must be "I will endeavour to communicate better next time, and clarify my message for you."
The rest of the world calls this lack of readily access to food.
First world problems; there is so much food that we can make lifestyle choices around it. You can pretend to be a caveman and eat "paleo" since meat is neatly wrapped in plastic at the store and you didn't have to hunt it down. (And if you study the Hadza tribe who are one of the last paleo-bros on the planet you'll find that meat is a small part of their diet). You can forgo certain meats and call your self pescatarian since you can find fish in the middle of a city. And you can intermittently fast since you know that you can quit anytime and stuff yourself full of food.
We as a modern society have to be the most smug of all. Think about every predator in the world. We constantly pay to exercise, to burn off EXTRA calories, where as every other animal on the planet conserves them or expends a vast amount to obtain more.
> If someone talking about weight loss suggested that people should just never eat breakfast to reduce the amount of eating they do in a given day, it would be relevant to offer a critique[...]
Tangential, but might be interesting to some:
sometime before the pandemic, after (I think) 30 years of always eating some kind of breakfast, I accidentally missed breakfast once and that day I felt I had significantly less brain fog after lunch.
So I tried again to see if it was just a coincidence, but it had happened again and again.
And, I realized, as long as I don't start to mentally prepare for breakfast I don't start feeling hunger either.
I'm not suggesting this is a good idea for everyone, only that for people like me who has followed "best practice" for decades and doesn't feel too enthusiastic about it, testing out alternative approaches might be a good idea.
PS: the total amount of hunger I feel in a day seems to have gone down too.
When I do not eat breakfast, I am unable to focus on work. It does not matter when I am in dysfunctional team (so I was actually not eating breakfast), but the moment I needed to produce, I had to eat.
That's very unusual. Your brain needs ready supplies of glucose to function. Not eating breakfast is forcing your body to turn energy stores into glucose in a way that it tries to avoid and probably doesn't give your brain ample supply, or just not function well.
Do you actually work better, or have you decided that you work better?
Many well functioning people, including IIRC navy attack divers, live on a glucose free diet for a long time, so I am not alone.
As for if I work better or just have decided I work better, I only have 4 or 5 years of experience with this but despite the fact that I love breakfast and lunch I still skip them because the brain fog I seem to get between 1200 and 1400 on days when I eat breakfast just isn't worth it.
I noticed that too. I also started skipping lunch for the same reason. If I do eat lunch, it’s only on days with a lot of meetings in the afternoon. If I want focused work, I skip it.
It's possible that my example might not be up to date. In the past I've been given advice that trying to just skip eating an entire meal at a time when one normally would makes someone less likely to be able to follow through with being as strict later in the day. Assuming that this isn't an outdated misconception, I think the comparison still somewhat holds. Studying all night and not sleeping is totally fine if you're able to function fine without sleep, but it's counterproductive if you're not. In the same way, "just eat less" works as long as you're able to follow it, but for some people, trying to follow that strategy without any other caveats might not be particularly effective.
Fad diets like intermittent fasting or any kind of major lifestyle change like that take a lot of willpower and self-discipline, which is also why most diets fail long term.
Better thing to do is have a routine first. A lot of people don't have any eating habits, it's more of an afterthought or a "whenever I'm hungry I'll eat" kinda thing. You can't base a diet off of that.
If you fix your diet by just eating at the same moments, roughly the same amount of time, only then do you have a baseline. Then make tweaks on that baseline. Evolution instead of revolution, only that will be sustainable.
Even in college with classes, overnight studying is one of the least effective way of studying. And no, you don not need 6-8 hours of consecutive flow to learn anything.
Whatever the reason for celebrating overnights, effectivity of it is not it.
I don't think the parent was suggesting overnights to be celebrated. In my group of high achievers, we joked about all nighters but anytime it actually happened, it was always treated as "we fucked up and were lazy and should have done this ages ago and this is our penance to attempt to claw back some almost positive outcome and passable grade from really poor planning"
Years later some of those kinds of situations were bonding moments, but none of them are considered a good thing.
There is a general accepted "healthy pattern", but I think there more to it:
- not everyone has the same sleep patterns, and while it can usually be coherced, for some that doesn't work or has too many downsides.
- some people have straight sleep issues and, sleeping in 6-8h blocks doesn't help. "then fix the issues" could be the basic advice, but again, that's usually easier said than done, or has worse side effects.
In that respect I agree with parent that it would be nice if "weirs" work patterns were more accepted
Indeed I am night owl. I tried to accommodate myself to go to bad early sleep 8-9h, het up early. Nevertheless, I am energized and happy only when I can get up between 8-9 (Morning;)) Which usually contradicts the social and work expectations…
I also do much better with long chunks of time, but it should be possible to make meaningful progress on most programming tasks in a true 1-hour block. It’s common for people to use the Pomodoro technique to great success with blocks of work half that size.
Often, the real problem is that people don’t actually have 1 hour of working time in between meetings. We sit at our desks and feel obligated to respond to e-mails and Slack messages. Our Slack responses turn into conversations that consume 5-20 minutes without a clear end. We need to spend 5-10 minutes reading backlog to catch up. We need to get a drink or use the restroom. That 1-hour chunk of free time on your calendar may only have 10-15 minutes of concentration time, which is the real problem.
I’ve had some success with blocking off calendar time to mark 1-2 hours of focus time. Having something on your calendar makes delayed responses in Slack socially acceptable.
> I also do much better with long chunks of time, but it should be possible to make meaningful progress on most programming tasks in a true 1-hour block. It’s common for people to use the Pomodoro technique to great success with blocks of work half that size.
Pomodoro does not need context switching.
Breaks without loading up a different context gives the brain time to bring back the body into a less tense state, so the next cycle can be more energetic/productive than a continuous one. In many cases it lets some ideas run their courses and save time by solving conflicting thought forces.
I think this is the mindset that a lot of people have, but always keep in mind, the meetings is part of your job, and writing code is also only one aspect of your job.
What I'm trying to say is that don't let the meetings frustrate you, instead just accept them and the distractions. Few people get to do what they really want to do all the time, and it does often seem that software developers show some prima donna behaviour in that they just want to stay in their flow and the other aspects of their job should be dismissed.
I mean I get it, writing code / flow state is enjoyable and makes you feel productive, but you get paid for the full package.
This would be a valid way of thinking about it, but programmers aren't generally judged on their meeting attendance but rather their code output. More meetings == less code == worse perceived performance == fewer opportunities for pay increases and promotions
> More meetings == less code == worse perceived performance == fewer opportunities for pay increases and promotions
That's a rather junior mentality. When one is junior, yeah, usually the most one can do is moving Jira tickets to Done (which means merging code usually). But when one is senior, the pay increases and promotions come from other activities: mentoring, handling technical topics between teams (usually via meetings), etc.
> This would be a valid way of thinking about it, but programmers aren't generally judged on their meeting attendance but rather their code output.
Not universally. Programmers are judged by overall success or failure of the project they are working on. And those ones who can take credit for a success or who can effectively deflect blame for failure are the ones who got promoted. Being in the meetings with the decision makers provides the forum for self-promotion and controlling the message. This does not always mean that they did most of the work. More code or less code is unfortunately secondary.
I have the unfortunate privilege to work at a firm where the senior engineering leaders believe context switching is a requirement. They judge people on whether they can do it.
I find that this leads everyone to constantly do multiple concurrent tasks. After a long day I often have a headache from having to concentrate on both my coding task, an operations task, a meeting, and a new request at the same time.
Ultimately, as you would expect - productivity is awful. They then have lengthy discussions on how to improve productivity by every mechanism other than what’s known to work (faster builds, faster tests, increased focus time)
Heh. The same at my workplace, except that build times suck, tests take a long time to run (and are not dependable), and you're expected to be on an electronic leash -- namely, one of the worst possible instant messengers.
I would rank Slack above Teams in nefariousness, because it's a better tool, so people like it more, use the shit out of it, and inundate you with so much more noise.
Having tmux sessions for each open task is a life-saver, especially in an environment where I do all my work on a remote server. Now I can close the laptop lid and never lose work. Simply reopen the ssh connection and keep going.
Its especially helpful for stuff where I haven't touched it in a while too. One alias and boom, I'm back in a session with a pane with my editor open, a pane with the log, a pane with some notes, and a pane with the shell displaying the last line of code I ran from when I was last working on this pet project over six months ago. Right where I left everything and I can jump back in as if I was working on it an hour ago.
I have a separate VS Code window connected to a dev container for each project that stays open for days, weeks or months at a time. Does the tmux approach materially improve upon that setup? Genuinely curious if I’m missing out on something here.
You can end up pretty deep down the rabbit hole with tmux and configuring it in different ways. One thing you can do that you might not be able to do with your vscode set up is have a script, written in tmux commands, that generates a complicated windowing environment. I am not familiar with the capabilities of your setup though, since I don't use vscode. I would guess tmux is more comfortable than vscode for using it with just the keyboard too.
There's a ton written on tmux as you can imagine by this point. This page seems pretty comprehensive on the advanced features including tmux scripting:
Maybe, you can SSH to GNU Screen and attach where you were, perhaps from your phone to just read. You could do the same with rdesktop to something x11, but you'd need more than a 256MB VM for that. If you have this running 24x365 then you'd spend more energy/money.
To all above: but machines reboot, also, not? Even our coorp Linuxes now succumb to ugly IT update reboot cycles, Cloud VMs even more ephemeral, and lets not even start with dev containers... One can script tmux sessions to some degree, but still loosing a lot of state (editor open ther, shell history here..).
Rebooting my dev boxes for security updates or kernel upgrades once every few months/year isn't a big deal, and I generally know when it's going down. The laptop is an ssh terminal/browser/doc reader only!
Do you exclusively work on remote servers? I love tmux, but I have the issue that I also use it locally, and to my knowledge, you can't have local and remote sessions in one tmux daemon. So I either have to open tmux in tmux, or open it in a separate terminal window.
You mentioned your editor on the remote server. Does everyone have their own account with their own settings on all remote servers? We're still at a point where everyone accesses servers via the one shared "root-ish" user.
Everyone has their own account with their own home folder containing their dotfiles. There are shared project and scratch drives. I do all my work on this server, nothing is done locally other than ssh into the server.
For what you are describing the best practice is a nested tmux session with tmux running locally and on the remote server. So you would open tmux locally, then in one of the windows or panes you ssh into your machine, then open tmux on that machine. This will require you to press the tmux prefix (ctrl+b or however you've set it) twice to do the commands on the remote tmux instance. However you can get around this with some configuration (1).
I think certain certain terminal emulaters like iterm2 have tmux specific features that could also be helpful, but I don't use that software so I am not as familiar.
How viable this is probably depends on what you study, but I skipped most of the scheduled meetings (lectures) during college. At the most prestigious of the 3 universities I've attended (which seemed to have more respect for their students than the other 2) this was actually encouraged if you felt you had better ways to make use of your time.
Im a manager now, and I've accepted these days as a reality. I block book time on my calendar in 2 hour chunks (4 pomodoros) so that week on week I'm consistent.
Ive got some tasks that I can fit in those in between slots. As an IC I would do them at the start/end of the day, but now I do them during those blocks of time. For me, it's things like smaller code reviews, reviewing design docs or triaging issues.
For me it's much worse. If most of my days are reacting to outside signals, it takes me at least a week to get back to the mode where I rely on my own motivation.
I've been in jobs where that happens only for a few weeks in a year, after major vacations.
I collected all my meetings into "meeting thursday". A dump day - typically from 9-2, sometimes 9-5. Sometimes I cancel or reschedule everything if another "dump cluster" forms.
It's pretty ironic, because this is how a lot of people study in the library at college,show up and stay all night grinding in the flow state with your phone shut off. Yet when you graduate to the work place, you seldom have the opportunity to work like how you've been training to work for all your advanced schooling ever again.
With respect to the article and maintaining context while coding for different projects, I find having a tmux session for each individual project super helpful.