Hacker News new | past | comments | ask | show | jobs | submit login
Best practices for remote software engineering (acm.org)
490 points by RuffleGordon 88 days ago | hide | past | favorite | 199 comments

I was just having a discussion about this with my manager during 1:1. I'm curious how any fellow devs with ADHD have managed the transition to remote work over the last year? I love the freedom and ability to focus that working from home provides, but I often find myself taking advantage of that freedom and focusing instead on podcasts or reddit for 3 days to avoid 3 hours of writing unit tests.

I stopped being able to get work done at all. It gradually tipped me into a low-self-esteem death spiral. I tried lots of different approaches to fix it: more accountability with my manager, new medication, more regular exercise, therapy, a bit of disability leave, even moved to a bigger apartment where I could have my own office. Nothing got me past the block.

I quit my job, spent six weeks studying and interviewing aggressively, and got hired for a higher-level position at a different company. I pushed back my start date enough that I'll onboard in an office instead of remotely. In the meantime I'm working on my health and personal projects, and spending lots of time with friends and in nature.

I gave up trying to work remotely this time around, but I'm still hopeful that at some point I'll improve my coping skills enough that it will be an option.

I'm in the same boat right now. Since my company insists on using an "air-gapped" development network (it basically means no internet connection, but that didn't stop the Chinese from copying our code and designs but I digress) we have to go through two different VPNs, which means remote desktop lag. Usually I don't mind for a few days, but after more than one year I just can't stand it, especially when we're we're forced to used an early 2019 version of Visual Studio, so it's reallyyy slow. I just can't stand it anymore. Sometimes I'm allowed to come back at work and it's day and night in terms of productivity.

I'm getting contacted by headhunters left and right every months but I'm still reticent to leave because we're short on staff and the project I'm working on is really important for the company and I've was kinda hired to bring those things into reality as the other devs are mostly technical experts in their fields than actual developers and in addition the code is ugly.

So yeah. Sucks.

> I'm getting contacted by headhunters left and right every months but I'm still reticent to leave because we're short on staff and the project I'm working on is really important for the company and I've was kinda hired to bring those things into reality as the other devs are mostly technical experts in their fields than actual developers and in addition the code is ugly.

Red alert. You basically just wrote “I should quit tomorrow”.

Wait, is there an ethical reason you think the project should be completed? Like, it's really going to help starving orphans or something?

Because otherwise you should quit yesterday, like the others say. You don't owe them nuthin'.

> Wait, is there an ethical reason you think the project should be completed?

I had a higher salary than demanded because they needed me to complete the task. Sure I could quit, it's just I'd feel bad about myself.

>ike, it's really going to help starving orphans or something? Because otherwise you should quit yesterday, like the others say. You don't owe them nuthin'.

Can't deny the logic of that.

Company loyalty is an outdated concept. You are the CEO of yourself so that should be your first priority.

Get out.

All your reasons for staying have to do with the company; not you. Unless -you- want to see it to completion, that is not a good reason. You do not owe the company anything.

Everyone is saying you should quit, which might be a reasonable suggestion, but it sounds like your issue is with working remotely. It sounds like you are able to be very productive and get satisfaction from your work when you can come into the office. If you don't want to quit, you could alternatively demand that they let you work from the office or relax development security. If they realize that saying "no" means jeopardizing the project, you might have some leverage.

Strange tip, I use to do part time local delivery. It made my brain cool off (safe regular activity, simple money, low skills). In between deliveries I often wrote small bits or small feature branches. I found it a good balance. It also made me think differently because I'd favor changes that were high ROI. No large design, no syntactic change. Only solid and valuable additions. Something I never really felt before.

Interesting. I have thought about working at a grocery store or something just to feel useful and connected, but my immigration status doesn't allow it. And honestly even though it would probably be good for me, it's hard to consider working for 1/10th of my usual wage.

Heh, same problem as ADHD developer. The one thing that was helping me was a custom in our company that we sit on zoom as much as possible. But, to be honest, I just got back to office as soon as it was possible in my country.

If you don't mind me asking, how did you find programming on meds? I can't do it.

It's ok, although I have a tendency to wear myself out mentally when I take stimulant meds.

Certain kinds of programming have a very high activation energy. In each programming session, it can take a lot of time (sometimes hours) before I've gathered enough context to start making progress on a problem. Once I start making progress my motivation is usually self-sustaining. Sometimes I can't focus long enough to get to that point, and in that case the stimulants do help.

However, I also become very reluctant to take breaks and lose the context I've built up, so I often end up working quite late. I feel exhausted and sort of disoriented sometimes after these sessions. I can't do days like that too often without sacrificing health, relationships, etc.

In 2020, meds didn't help me at all. I just ended up being really focused on some useless distraction or cleaning my house or whatever. My problem was more fundamental than "I can't focus long enough to build up self-sustaining momentum."

What don't you like about programming on meds?

I've been a programmer for 20 years and you just described my daily struggle with my job so precisely. Is this kind of experience happening to neuro-typical people or is this a very ADHD thing?

I ask because I have often wondered if I am undiagnosed as something or other and this post hit me hard.

It is common with tasks requiring deep focus also in people without ADHD.

I think for neurotypical people it is easier to create some kind of system/framework for being more efficient in work. Every solved problem add some mental tools to this systems. But it is much harder for ADHD because of how our brain works. Working step-by-step is hard for me. It is easier for me to load as much info to my brain RAM and try to digest it. And it is not something that you can get better in because it's not really a systematic method.

I've seen coworkers that I'd describe as neuro-typical work in a similar way sometimes. But the tendency to alternate between periods of difficulty focusing and periods of hyperfocus is a recognized trait of ADHD. If you're interested in learning more I'd recommend Hallowell's book, the one I read was "Delivered from Distraction" but he might have a newer one. Just read the first couple chapters and if it resonates a lot then it might be worth getting tested.

Just wanna say I relate strongly to these posts. Sometimes it just feels like i'm trying everything to manage my motivation and adhd and it just doesn't work and I just gotta breath get outside and be unproductive for awhile.

I hear you.

If you otherwise like your job and the people you work with, then I think it's good to just accept that some days you won't get work done and that's ok.

If you feel that way all the time, maybe it's time to find work that you care about more.

Thanks, I resemble all those statements, and I've often wondered if I'm undiagnosed ADHD. My occasional brushes with modafinil... well, sometimes it works, and sometimes it turns me into the best damn house cleaner on the planet.

In my brief experience of SSRI drugs, they left me fuzzy and unable to concentrate. Like baby brain without the baby.

I sometimes take modafinil before starting a day of work.

So far there hasn't been a single instance where I did that and didn't get sidetracked thinking up a new software project I could start using technologies I barely understand to solve a problem I just learned about.

The upside is you're a lot more focused, so you can get a lot done. The downside is it's really easy to nerd-snipe yourself, and the increased focus means it's hard to stop thinking about whatever problem caught your attention.

I found meds to have enhancing effects on my code. Everything I have earned is because of it.

My best guess is you are still in the phase of titration and finding the correct type of medication that works for you.

Having an empathetic doctor who is willing to work with you can make that road smoother. She printed out papers from pubmed to help me better understand what I'll be taking and what to expect. It felt very nice to actually be taken seriously.

I do notice that the other experiences may not truly reflect the efficacy of medication. The actual symptoms are still not well defined, not all doctors are equal, being misdiagnosed, etc.

Hard truth? It's still guess and check. There are so many comorbid conditons associated with ADHD - most of the time it is just the symptom of an underlying cause. ADHD meds only work on people with ADHD :)

Not OP, but I have ADHD and would love to chime in here. I love programming on meds and I hate programming on meds. Meds connect the dots, but meds also over-engineer everything. Then the meds wear off and I am stuck with a huge solution and I have no idea what I just did.

As a person without ADHD that sounds weirdly similar to my experience of studying or coding on amphetamines (from brief experiments in college that I quickly decided were not worth it). Is there actually any difference between ADHD meds and speed?

Depends on the meds, but Adderall is a combination of different amphetamines and dextroamphetamines. Some of which are added just to make it uncomfortable if you take too much.

The greatly simplified idea is that people with adhd have trouble using parts of their brain at the time they need to. So by increasing all brain activity the parts that are normally diminished are about normal. The side effect is that all the rest of the parts are amped up.

This isn't quite right. Adderall is a 3:1 mixture of dextroamphetamine and levoamphetamine. These are different enantiomers (configurations) of the amphetamine molecule. The two molecules have subtly different effects in the body, but as far as I know, neither is added to "make it uncomfortable if you take too much".

Fair enough. A doctor basically explained it to me like that over a decade ago, and I took their word for it. Which is uncharacteristic of me to just take someone's word for something, and repeat it.

I had a coworker with ADHD and I'm pretty sure he was prescribed stimulants although he was discreet about it. His patterns of focus were idiosyncratic, and occasionally he wrote code that just oozed "hopped up on addy" stylistically — particularly spurious and superfluous abstractions.

How long were you able to push your start date from when you accepted the offer?

Weeks? Months?

Months. Certain very large companies hire engineers into a general pool rather than to a specific team, so once you've passed the interviews they don't mind too much if you put off actually starting work.

Time management at home is a different ball game.

A good first step is to understand what's fundamentally different about working from home, alone, versus working from the office. Some common differences:

- Context shifting into the office can help context shift you to work mode. At home, if you use the same workstation for games and Reddit and work and entertainment, you lose the physical context shift. If possible, try using your company-provided computer for only work, and your personal computer for only play. Even better if you can have them in different rooms. Start training yourself to associate one context with work, and one context with not-work. When you sit down in the work context, it's time to work.

- Accountability can feel lessened when no one can see over your shoulder. This can be misleading in the short term because it's easy to get away with it for a while: You can tell people you ran into unexpected difficulties, or you had to spend time on something else, or any number of excuses that work in the short term. Over the long term, the productivity difference starts to show up in your output relative to peers, so avoid falling into this trap. If your company isn't big on short-term accountability, give yourself some daily accountability. A good practice would be to write a short message to your team's Slack channel with what you're going to be working on for the day. At the end of the day, write a short summary of what you accomplished. Once this is routine and public (within your team) you will feel some of the same accountability you did when your team was sitting in the same room and could see you working (or not).

- Offices provide a lot of social exposure that we take for granted. Slack and Zoom can't fully replace it. Make sure you get out of the house and see other people routinely, even if it's just walking around the neighborhood. Simply seeing other, real human beings goes a long way.

- Track your time. Entering the office in the morning and leaving in the evening are natural delineators for your work day. Try to have some similar start and end times at home. Consider using something like RescueTime so you can see where your time is going during the day.

As an alternative to a daily chat message, a teammate and I have been meeting for ~15 minutes at the end of the day to talk about what we did and how productive we were. It's been pretty helpful a few different ways. First, it forces me to think about what it is I'm supposed to be doing and figure out the next step. Not knowing how to approach my next task is a huge cause of procrastination for me. Second, it's a chance to notice when I've gone astray, and identify factors that lead to low productivity. (Like that I procrastinate when I haven't broken down my next task into small enough pieces.)

I think for this to work well, it needs to be with someone you don't feel the need to impress. Maybe you have a teammate you trust like that, or maybe you can find a coworker on a different team who doesn't impact your performance assessments. If you have that, this feels different than a standup. Standups easily devolve into signaling to the team that you've done work. Instead, a 1:1 meeting with a coworker who you don't feel the need to impress makes it way easier to be vulnerable and admit when you screwed around on the internet for a lot of the day.

That accountability step is part of the intent for daily standups in most agile disciplines. The five minutes it takes for everyone to say what they worked on since the last one, what they plan to work on, and what obstacles they have, is great both for forcing people to focus a bit, as well as for managers to help point out when someone is stuck (i.e., "you've been working on that the past few days; is something wrong?")

This is why I find standups (and other ceremonies) patronizing and exhausting. It's like you have to publicly defend yourself and your work every single day. There's a massive difference between setting up accountability for yourself and having your manager/team/etc impose a public accountability ritual on you. Doubly so because it's usually billed as being about "visibility" or "alignment" or something else, as if it isn't about mico-level "accountability".

I couldn't agree more. The feeling you are describing is felt particularly acutely by individuals who are junior, or for one reason or another (low self esteem, flagging mental health, membership of a group that experiences disproportionate marginalisation in the workplace), and in my experience it subtly but profoundly warps developers' motivations and drives. Tasks can become all about rushing to get some progress made so you have something to say in stand-up or the weekly showcase, and not about actually patiently thinking problems through at whatever level of detail is appropriate at their org scale.

I don't understand. Can't you say on stand-up that you are "patiently thinking problem"? You can try to explain how this process works for other team members and maybe they will learn something new. If you can't explain what you are doing maybe it's not as important as you think.

So as with everything agile, the process is -nothing- without the culture. You can't fix culture with process.

If the culture is right, it's enabling. If the culture is wrong, it's patronizing. It's not intended to be a public accountability ritual; it's intended to make it so you're participating in setting the expectations of the team, and if you're not living up to them, the team looks to figure out how to better support and enable you.

I'm sorry, a process that happens in front of your team so that they can judge whether you're "living up to expectations" is literally a public accountability ritual.

You can't fix culture with (just) process, but process certainly affects culture. And this kind of process directly contributes to a culture where people are pressured based on how they work at an extremely finely grained level. Even if somebody is doing top-notch work and having real impact long-term, if they're not making legible progress day-to-day, Agile is going to make them look bad and feel bad. The process itself emphasizes consistency and incremental work while deemphasizing individual flexibility and agency.

Now, perhaps some teams have a culture that's strong and accepting enough to compensate for this and provide a great environment for people who work in different ways, but if that's the case it's despite the process, not because of it. I've never seen that myself though.

It's in front of the team so that obstacles can be solved by the team. It's why it's not in front of people outside of the team. The number of times where someone says "I'm struggling with X" and someone else says "Oh! I know about X! I can help!" has been innumerable.

And, it really doesn't contribute to a etc. I've had devs spend days with basically the same status, but it also was a large task. I've had devs make incremental progress, and everyone understood. I've had devs (and been a dev!) who said "I got nothing done; I was in meetings and they drained me", and it's fine (though it helps highlight that the meetings are too much very early).

The process presumes culture. It assumes the team functions together and is aligned in delivering, and isn't looking to blame one another. If the culture is bad, then, as with any bad culture, it's easy to blame the process.

I'm unsure if this is more your perceptions, the places that you've worked or a combination.

Why do you phrase it as "public accountability ritual"? I'm sensing my definition for accountability is different than yours. I typically think of my comment at a standup as (small) opportunity to answer "what have you been working on?" once instead of if every member came by and asked in a friendly manner. I wouldn't be bothered by them asking individually, and it saves me repeating the answer.

I've never heard the phrase "isn't living up to expectations" related to stand ups. Do you (or places you've worked) normally have those related? I'm not sure I understand.

Why do you think it's "in front of your team" as opposed to "with your team"?

I, and other people I've worked with, have never been bothered by saying "still working on the same hard task" for _weeks_. If anything, I usually hear encouraging comments; "it sucks that the task is so difficult", "anything I can do to help you out?", "I'm surprised you haven't gone crazy from that", etc.

The places I've worked at aren't even great at agile, but I've never seen the process directed towards some of the things you're saying.

I had a manager who would ask "is that all you're working on?" if you mentioned working on less than 3-4 unique tasks.

This incentivized breaking everything up into tiny tasks and getting things out the door instead of getting the right things done. It was not a good workplace.

So, first, let me say that, yes, that sounds like a bad workplace.

Second, just to point out (I'm sure you realize, but just in the spirit of the parent comment), no agile workplace cares about the load of tasks dev has. Are they busy doing valuable work? If not, is there valuable work they could be doing? That's it. If yes to the first, no problem. If no to the first, and yes to the second, no problem, "hey, I've got something you can have a look at". If no to both, no problem, it's on product and management to work on getting some new work items.

I agree that a True Agile workplace would not care about making sure that everyone looks busy. So far 2 for 3 of the scrums I've been involved with have degenerated into micromanagement and pointed questions if there wasn't constant process, even if that came at the cost of overall velocity.

Maybe just bad luck and bad workplaces, but I am increasing skeptical that there are any true 'Agile' workplaces.

I don't think there's a clear definition of what a 'true agile workplace' is.

That said, agile is, if anything, a culture. It's why it started with a manifesto, and it's why retrospectives are the only meeting that is spelled out in it; the retros aren't to try and determine what parts of a particular process you're not adhering to, but what isn't working (process or otherwise), so that you can change it (i.e., "At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly").

There are plenty of workplaces that have that culture, even if the processes are all over the place. Of the last four workplaces that called themselves agile that I've worked in, three of them had that culture, and I and my teams got amazing work done in them (in fact, my reason for leaving at least one of them was -directly- due to the hiring of a micromanager and the ousting of someone who protected the teams from upper management). The fourth was an old school enterprise company you've almost assuredly heard of, with high employee retention, a culture of top down management and decision by committee, and, surprise surprise, their injection of agile processes did nothing to make them actually deliver software any faster, nor did it lead to any better results.

I understand the argument that most people don't implement Agile as it was intended, but I don't think it is an enabler of bad management practices any more than what would be implemented in it's place if you remove the Stand-ups and Backlogs. It's like what they say about Democracy being the worst system of government except for all the rest. Brittle teams who are not in it together with each other are going to be hard work whatever the organizational structure. The fact that situation is so normal is not the fault of Agile.

The flip side of this is what I would term standup-driven-development.

You work just enough to have something to say that day. Rinse and repeat for the next day. The incentive isn't to do more or better work. The incentive is to have something impressive to say at the next meeting.

The other issue with standups is if it's not "on the board" then developers are disincentivized from doing certain things (proper testing of code, code reviews, etc.) in favor of things that show up.

Standups can help close the short-term feedback loop, but they don't replace long-term management involvement. Teams with standups still need proper performance management and performance reviews from a hands-on manager, along with clear communication of goals and expectations.

> The other issue with standups is if it's not "on the board" then developers are disincentivized from doing certain things (proper testing of code, code reviews, etc.) in favor of things that show up.

If important things are missing from the board, that's a problem with the planning process.

It's easier than it sounds to simply put those things up on the board. If engineers realize something important is not on the board, they need to get it up on the board. Communication needs to go both ways in planning sessions.

"Yes, I can't stop worrying about tomorrows standup and, as a result, I'm incredibly inefficient."

I used to live in a commercial building (the only living space) that had a separate office suite. When in the office doing billable hours sorts of things, 0% of time was spent on non-work issues. Work computer = a big honkin' loud workstation. Home computer = a laptop.

It wasn't too hard a discipline to keep, I think it helped a lot to use physically different space and hardware.

This is amazing advice. Thank you.

ADHDer here. WFH was a nightmare the first six months, but the past few months have been working out great. My findings from this past year:

* Finding the right medication, in the right dose. Biggest QoL improvement. YMMV

* Whenever I get lost in the sauce and start spinning my wheels, I schedule a call with a colleague and ask them to help sort my priorities out. This also helps me with accountability, in a softer way than accountability-by-authority. This might require some self-awareness.

* Finding a note-taking/task management system that works for me. So far, I've been having the most success with a combination of Roam Research; Apple Notes and Muse for drawing/diagramming on my iPad; and Todoist for hard reminders.

* Getting enough physical activity. My headspace becomes awful if I don't get at least 30 minutes of walking in during the day.

* Finding my context shift to work mode. Most days, 15 minutes outdoors first thing in the morning after checking my task list is enough. For rougher days, I work from the café down the street.

* Avoiding social media before lunch, as it stresses me out.

* I found the eureka moments striking at odd times, like evenings or in bed. I rarely regret following these strokes of inspiration, but they can really throw my off my work/life balance. Cutting my days shorter (most days), and allowing myself to work when inspiration strikes (a couple times a week), has really helped in lowering my stress levels.

* A couple days a week without scheduled meetings. I can't focus if I know I'm going to have a meeting in 1 hour.

* Splurging on equipment. If I'm going to spend a lot of time in front of my screen, I might as well get that 4K 32" and a G915 TKL.

What features make Muse the one for you, as opposed to alternatives? Just curious.

Definitely agree with working using the best equipment money can buy, if you spend so much time with it.

So I really enjoy the spatial paradigm with Muse. It feels like a digital whiteboard - I can paste images, resize them, throw them around, and ink over them, which makes it great for thinking. Compare this to Apple Notes, where each note acts like a document. I can ink, write and paste images into a note - but text, ink and images are all their separate blocks, flows from up to down, and cannot "interact" with each other.

Further, the Muse interface is very frictionless. Erasing ink is just holding a finger while using the Pencil. Switching tools is just swiping in on the screen with the pencil. Compare this to Apple Notes, where I usually need to chord several taps on different parts of the screen altogether just to change the tool or ink color.

I agree with the equipment. To the point that I just bought a great Dell Ultrasharp monitor to use instead of my company issued 1080p monitor at home.

Life is too short to spend on crappy screens.

So I have ADHD. Official diagnosis. My kids have it. Official diagnosis. My mom and sisters clearly have it, but refuse to be tested.

If something is sufficiently interesting I can hyper focus like crazy.

For decades any level of boredom was physically painful.

Remote is the worse for me. Staying on task is a nightmare.

What helped? Pair programming. This keeps you engaged and on task. I try and pair as much as possible.

Medication. I was on Adderal for awhile. It works great. I had to stop due to serious side effects. (Strokes)

However it got me past the mental block of “boring is painful”

I function a good better without medication now. It’s not where it needs to be to cope with 8 hours of no human interaction, but better.

I tried another non stimulate med. my focus was fine, but I was so sleepy my work was crap.

I’m on Vyvanse now. My kids are on Vyanse.

It works a lot better.

I get some of the same side effects as adderall But not as intense.

I'm in the same boat and pair programming has been a godsend. It's so much easier to think about and work on boring tasks with a colleague. We both have the same problem so it's a good match.

Have you considered modafinil? It allegedly has fewer side-effects, but a similar effect as adderal.

I've been using it, finding it less useful for me than stimulant options but sometimes it can unstick a feeling of ADHD helplessness or "death spiral".

I kinda made it explicit with myself (not with my colleagues of course, duh).

I'll fuck off most of the morning, well aware that I'm doing so, and I'll work non stop in the afternoon.

Some important things though: during the morning I mostly spend time on stuff I find interesting, usually tech stuff not directly related with my job. A few times non work stuff. But seriously, it's a joy to be able to spend the morning to get better at something about your job.

I spent last week mornings playing with the kubernetes APIs and the client-go libraries, with only vagues ideas. Turns out, a colleague is findin one of the toy tools I've written useful. Wasn't expecting that. Last month I spent another week mornings diving into AWS IAM and now I finally finally understand stuff and I'm reporting problems to our head of it security, and we're fixing stuff before they become problems.

The key, imho, is to be self-aware: I'll fuck off in the morning, and I will work in the afternoon, no interruptions.

Important edit: I might be slacking, technically, but I always keep an eye on the company chat. If anyone or anything needs my attention, I drop my slacking off and be readily available (most often you only have to be able to hear the Slack client beeping)

I have quite the story.

I was terrified I wouldn’t be able to focus. Terrified I’d get distracted by home life. That my productivity would plummet.

But it didn’t happen. In fact, the opposite. I never realised how much commuting and office noise harmed my productivity and energy levels. I was buzzing.

And I did what any ADDer would do.

I got drunk on it. Then burnt out.

In typical ADHD fashion, I thought all that new energy was permanent and I could work insane hours. Sometimes from 7am until 1am.

I was warned. But I didn’t listen - not to my mrs, not to my old man, my sister and colleagues.

And then, once the dust of lockdown settled, I burst.

After making damn sure that the company I worked for and my sisters business didn’t go bust, I couldn’t anymore.

The code I wrote only a few weeks before? Hieroglyphs. But not that I’d lost understanding. I knew I could read it if I wanted to.

But I really didn’t want to. Like my very being rejected any attempt to focus on the task at hand.

I was reduced to attending scrums. And playing video games.

It took a weekend away, a week off and a bit of advice from Dr Feynman.

Thankfully, work was understanding. I was given a project where I could play, and still deliver value. And so I played, got something small done. Then I played some more. And so on.

Now, a colleague works on the project with me. I played so much that I was prone to rabbit holes. My hyperfocus was out of tune.

But then I took stock and was able to focus. We found a way forward, took some advice, got speaking to the users and focused development on fast iteration and feedback.

The past few months have been the most productive of my life. All remote.

I learned a lot of hard lessons in lockdown. The lessons I could not predict.

This reads like a inspirational linkedin copypasta.

Sums up my life really, goes deeper than that hahaha

A coworker of mine (our company has always been “remote”) has written a lot about ADHD and working remote. https://aaron.blog/?s=Work

https://aaron.blog/2016/03/25/how-working-remote-probably-sa... is a good place to start.

That was a great read, thanks for linking!

There are a couple of things that allow me to get past these bottlenecks. First, let it go. Then do something else, get outside, have a cup of something. Instead of thinking about "3 hours of writing unit tests", start with "write just 1 unit test". Then get back and try to find something interesting about this depressing piece of work you need to do. Just one tiny thing, like "how fast does it take to run a test" or "how does this utility method is implemented". I do this a lot - trick myself into something small, and then let myself go with the same work, just like reading "one post in HN" leads me to write this response LOL.

In my case, it is just a pure absence of motivation and interest that causes the attention to go somewhere else. And this is all right, as it's a signal that the shit I do is not worth it. I have to make it worth it in some way, worth it for my soul sake.

Agreed. Creating small, achievable tasks to start my day gives me some easy "little victories" which provide some confidence to tackle harder problems. Often tiny things like "send an email to X" or "write JIRA ticket for Y".

Sounds stupid, but it really tricks my brain into not procrastinating on the more important tasks.

I don't think you're going to find the best time management tips from people who are on Hacker News in the middle of a Monday afternoon.

It‘s not the middle of the afternoon all around the globe at the same time. Some of us already spent eight hours slacking off.

Well there is more than one timezone.

Which is too bad, because those of us reading right now could probably benefit the most from good advice.


It's midnight where I am. I think that might be worse.

slow clap

I'm struggling. When we were in the office there was still some semblance of normality. Particularly in 2021 my productivity has plummeted. I'm considering leaving this field altogether and have started applying for other jobs. At least with a physical job I can do the task at hand. I don't think I can be a successful developer with ADHD and I refuse to take meds full time. If anyone has figured out a solution to their own problems I'm all ears.

This (might) help you, It helped me anyways.


I often find myself looking at my website and trying to figure out what is the most important thing I have to work on right now.

But hours can pass by like this.

And I’ve learned that I need to start with something small. Even a tiny improvement/fix I spend my first 15 minutes on gets me going and into the flow state!

If you can get away with going down a Reddit rathole for three days, no one is watching you that closely. That gives you freedom to chase other things. One option could be writing a library to make your tests more interesting to write. Write the boring tests first, and then look for a way to make the process of writing them more interesting.

Does it actually impact your relative productivity net of everything?

I have done that a few times even without ADHD (presumably). But stripping away all the meetings (or at least the need to stop work to be in them), the chatting, and the distracting questions has made it net out to about the same.

Is that ADHD or are you just procrastinating? You clearly recognize the issue. Maybe try Screen Time limits or changing your hosts file

Software is absolutely inadequate to prevent you from being distracted... You can block a couple of things but it's an uphill battle, because there are no limits to the number of things more interesting in the short term than writing unit tests.

It's import to identify and address the root of the problem rather than just the symptoms. Do you find your work rewarding? Will these unit tests help you to complete the goals you hold for yourself? Are you healthy enough to faciliate productive work?

Are you suggesting that people suffering from ADHD do not recognize that there is an issue?

Procrastination/lack of executive function is a symptom of ADHD.

Aren't these synonyms?

No, far from it. The pop culture definition of ADHD has become extremely vague and watered down, almost to the same degree that "OCD" has become a pop-culture term for attention to detail.

Procrastination is a common behavior in people with and without ADHD. Procrastination alone is not an indicator of ADHD.

Likewise, someone who procrastinates does not fully understand the struggles of someone with ADHD.

It definitely helps me to have at least some working in the office. I can work on something that is cool/exciting from home no problem such as implementing new features, learning some new API, etc. from home no problem, but going back to the office is very helpful for stuff like going through email.

Also, thank you for speaking up! I feel like a lot of the discourse for ADHD folks has been how freeing it has been to get away from the distractions at work. For me, and it sounds like also for you, working from home often doesn't have enough structure.

This might sound pretty laughable but seriously try a standing desk. If you have a bookshelf or something that you can prop a laptop on to just try it without buying anything, do it. I find that when standing I'm able to get my brain to engage in problems or boring work that I otherwise wouldn't do and would instead avoid and watch YouTube. The ability to fidget and move around (calf raises, jumping in place, pacing back and forth), and not having the ability to sit back and relax has actually made a huge difference in my productivity.

It's also important to not do leisure activities like watch YouTube or browse reddit at the standing desk. Make it a work-only space.

Another thing to consider is ADHD and the emotional wall. When confronted with the idea that you have to do 3 hours of unit tests it seems daunting to start, because it's going to take so long! Instead, start by doing 3 unit tests (or something that will take 15 minutes). Even if that's all you get done today, do 3 again tomorrow. If you can make it through a much smaller task you'll likely have the momentum to keep going. And even if you don't, that's okay because you made some progress and can do a little more tomorrow.

I have. Some keys:

- Lists.

- Checkins for accountability.

- Distinguish work space from other space.

- Develop routine around work start and end times. Block off heads down work as opposed to meeting time.

- Use the time flexibility that remote gives me to my advantage — if I want to start later and work later that’s fine. But keep routine.

In other words, all the same stuff as before. An office just gives you a sociotechnical system in which doing all of the above is easier.

We are using Mumble (https://www.mumble.info/) to be able to hear your colleagues the whole day. When I need to focus more, I go to a virtual office in Mumble.

Regular 20-30 minute walks interspersed throughout my day have helped, usually every 2-3 hours It's probably more breaks than I would otherwise need but getting outside had helped me be mindful and exercise inhibition; a bit of a reset, so to speak. If not, I find myself getting stressed out at home more than I otherwise would as well

I struggle in meetings, always have. Ive found i have to slow people down in meetings and have them repeat themselves a lot, and I will repeat back to them what they are saying because I easily miss a lot.

I keep a list of tasks in a notebook and take the time to break them down and make sure I check them off.

I take a nap when I need one, take a break occasionally. Keeo the task ritual going. I always get my work done on time.

Are you me? One thing that led me to not turn on my desktop workstation is to complete a personal project. For at least half a week, I did not bother to reach out for instant gratification via reading HN, proggit, podcasts etc.

If I can only find the energy and appropriate time to do this, I figure I can save my work and work ethic.

It’s important to have a good working environment with clear boundaries between work and private:

- Work starts at a certain point and ends at a certain point with a pause or pauses.

- Only work happens on the work computer, no work happens on the private computer.

- Keep private distractions away when you work (put your phone in another room)

I’ve been using Immersed VR with some good success. I use different virtual environments for different tasks. The coffee shop for deep work, space for emails, etc.

Part of my problem is that my “office” is in my bedroom. I’m a strong believer in “physical” mental spaces, so it really helps me.

I'll do your unit tests if you'll take my build scripts! :)

Have you experimented with remote pair programming as a way to encourage focus?

I use timers all the time. Basically a slightly modified tomato timer.

Adderall 5 times a week instead of 3.

Pair and mob programming

In my experience, pair and mob programming are just yet another scenario where neuro-atypical people are punished for approaching their work differently.

I just recently started working at a place where mob programming is commonplace.

It is easily the most wasteful use of time I have ever seen in my professional career.

1.5hr session * 6 devs = 9 hours down the drain.

Only one person can speak during a Zoom call! It's a single-threaded, low throughout, low latency communication medium.

So it always ends up being one or two people talking - the one or two driving what is being mobbed on.

Due to this, I try to only jump in when I have something valuable to add. Which isn't often given the situation I described. If I'm driving or directly involved with the design or w/e of the mob session's focus .. sure of course I'll talk. But I'm not going to sit around trying to get a fluffy word in edgewise for 90 min just for its own sake.

And yet a frequent driver of this mob culture (a "principal" engineer if you can believe it) loves to mention how I'm not "engaged."

??? I sit in your dumbass meetings and pay attention for 90 minutes! My time is 100% focused on the meeting!

Being a junior previously I derived a lot of benefit from light pair coding every now and then to learn something from a more senior developer. I have also been in code reviews where 2+ people are of equal relative skill, but have different approaches to a problem, and it almost becomes a stalemate or some kind of power struggle to 'be right'. 6 devs seems very excessive and an expensive use of time heh.

Think of it as a chance to pick up editor and language tricks you might not have known, or to socialize "best practices". The metagame is still part of the game. If you can't change the practice, try to make the most of it.

I had an admob interview once. I don't understand why this would ever be used. It seems so costly, slow and disrespectful of everyone's time.

It's slow at the beginning, but the payoffs are huge. With mobbing, everyone knows how to do everything. Far less design mistakes are made. No one ends up "owning" certain parts of the system. It's also very humbling as everyone succeeds and fails together, discouraging "heroics". Pairing is also great for this (but you have to switch every day).

Obviously, if you're working in a feature factory, pairing and mobbing are pointless. If you care about code quality and de-siloing, they're incredibly valuable.

Obviously, it's not for everyone, but it works incredibly well where I work and I will never accept another job that doesn't encourage pairing by default.

For "normal" mobbing, 6 people is too many. If I had 6 devs coding (which I often do) that's very rarely going to be a single mob. It could split up 2/2/2, 3/3, 1/2/3 or whatever, but a single group of 6 is really inefficient.

I won't say it's for everyone. But for ADHD specifically, my personal experience is that pair programming is a godsend. I am able to use half my regular dose of ritalin while pairing.

I am glad it works for you. Maybe (hopefully?) I have just had an abnormal experience.

I'd say I can get behind pair-programming to a point... it helps get new ideas, different view points and leads to rubber-duck-programming like effects.

I'm not sure I'm a fan of Mob programming... as others mention, over a phone/video conference, it seems inadequate. Turns more into an ad-hoc video lesson by the stronger personalities (for better or worse - I happen to be one of those in my small group at work).

Do you have problems with both? 2 vs 3+? or is it one or the other?

To do mobbing effectively you should be switching the driver very rapidly. It's a bit tough remotely, but it can be done. There are probably other ways to make it effective, but if only a few people are contributing, then the mob has failed and should either be recalibrated or stopped altogether.

No, anecdotally a lot of people struggle. It is an intensive experience and places different pressure on a person than soloing does. For me it works great, for many people it works great, but not for everybody.

> avoid 3 hours of writing unit tests

Why? Unit tests are our closest allies

Just because something is important doesn't mean it is enjoyable.

I consider Unit tests to be essential. People who don't like them, maybe they never tried to drive a value from them.

I also use-to consider them not important, but they have saved my as* so many times.

How would you drive a big refactor, without introducing new bugs - without unit tests?

With a solid test coverage, via a button click, you can conclude - how functional is your code base. Of course, not on the basis of weak tests.

I know this sounds like evangelism, but I absolutely hated writing unit tests until I learned TDD. Now, I don't always write tests first, but I usually do.

I'll also say that I have seen a lot of time wasted writing useless unit tests. That can contribute significantly to the "I hate unit tests" feeling.

Maybe not enjoyable, but also not anxiety-inducing like certain foundational design tasks can be. For procrastinators, writing a small unit test can be a near-mindless, easy activity to get going.

I'm not sure if it's wise to publicly post this "taking advantage of that freedom and focusing instead on podcasts or reddit for 3 days to avoid 3 hours of writing unit tests."

At least he is honest and wants to change. Better than 99% of people out there.

Honesty doesn't replace accountability. Wasting three days is a long time to just be "procrastinating"

I can tell you've never suffered from ADHD.

So you are telling me a person suffering from ADHD is not accountable for the $ lost in productivity. If I had ADHD, just for survival, I wouldn't ever let my boss know that I have this condition which is costing his company X amount of dollars a year.

Most knowledge workers are paid for impact, not hours worked.

If your results-based performance is deemed adequate, that means either the company is getting good value for the money they pay you, or they have a broken performance management system.

ADHD doesn't really factor into it. If ADHD leads an employee to have subpar performance, they will be fired just like anyone else.

Caveat: the best companies think like this. Most don't.


I've worked with people who come in late, leave early, and make huge, disruptive, positive impact as well as slow, positive change.

I've also worked with people who work 15 hour days who don't work well with others and are constantly picking up after themselves as their silo'd work breaks daily (yet from management's point of view, everything is running smoothly not realizing they have a giant bus factor on their hands).

So ya, nothing to do with hours worked and, if you're working for a decent company, there should be reason not to be upfront about this.

By not letting your boss know, you are making it harder on yourself, and then leading to less productivity in the future, as opposed to getting better. Also it isn't that it actually costs the company money. They could very well make up for that lost time by hyper focusing and finishing it quickly later. So it could be the same result for the company but much more stressful for the person with ADHD.

It sounds like you believe time and productivity are fungible. That's the real problem, not people being on Reddit during "work" hours.

I feel like most engineers are pretty good at working remotely (c.f. all of open source).

Managers however seem to have a very hard time adjusting. If I were to give some "best practices" for remote management, they would be:

* Don't worry about how your reports are spending their time. If someone doesn't get back to you, they are busy.

* Don't factor an employee's location into their compensation.

* Minimize meetings (this is for non-wfh too, but it's much easier when people are remote).

* Allow people to leave their cameras off during calls.

* Don't worry so much about flying people to meet IRL. It's expensive and disruptive. It may also introduce politics that won't exist if everyone stays remote.

* Realize that a lot of what people think of as "management" is actually unneeded babysitting that's a vestigial cargo-cult from the industrial revolution. Your job is to hire, motivate and unblock. That's pretty much it.

I wonder if the role of manager will go away and be replaced with more specialized roles. I actually think it might be nice for a company to provide a therapist for people to to privately talk to. That's always been a weird roll that managers often play. It would be nice to vent to someone who doesn't get to decide your next raise. Between some level of HR outlet, product management and mentorship, I don't really see a dedicated role for what we now call "manager".

> I feel like most engineers are pretty good at working remotely (c.f. all of open source).

Most engineers are not on GitHub or any of the other social coding sites, let alone contributing to or managing an open source project. And anyone who is managing an open source project can tell you how much work it is to help other engineers contribute constructively.

Your idea of a managerial role doesn't seem to leave much room for technical or team leads, only "product management". Sometimes your role is to hire/motivate/unblock - and sometimes the motivational role is make sure someone spends those three hours writing unit tests everyone agreed were important even though no one wants to.

Open source is just one example. In general I would say engineers work well in a quite place with no distractions and minimal bureaucracy. It is creative work after all.

> Your idea of a managerial role doesn't seem to leave much room for technical or team leads, only "product management". Sometimes your role is to hire/motivate/unblock - and sometimes the motivational role is make sure someone spends those three hours writing unit tests everyone agreed were important even though no one wants to.

I did include mentorship in my list of things needed to help engineers grow. I'd also add "everyone agreed" in a traditional management setting is pretty much identical to "the person who decides how much people get paid, said so". Good devs will typically write the appropriate amount of testing unprodded.

Engineers (and everybody else) like working in places with no distractions and minimal bureaucracy. But that doesn't mean they all work well them.

> I'd also add "everyone agreed" in a traditional management setting is pretty much identical to "the person who decides how much people get paid, said so".

Absolutely no one on our team deciding what people get paid has any say in how many tests we write. The engineering manager has some say (mostly as a tie-breaker) in technical decisions but does not "decide" how much anyone gets paid (outside of salary range for new job postings), but can choose to advocate (or not) for a particular person's salary with higher management. The senior developers have the most say, and they determine no one's salary.

> Good devs will typically write the appropriate amount of testing unprodded.

Qualifying this with "good devs" somewhat begs the question. I would rather avoid judging the developers and just say, no, most developers will not typically write the appropriate amounts of tests by without some friendly reminders.

> Engineers (and everybody else) like working in places with no distractions and minimal bureaucracy. But that doesn't mean they all work well them.

I don't think evidence exists to suggest they don't. From a burnout perspective alone, making people work in an environment they don't like will cause attrition. Especially now that there are plenty of WFH options. That's not even touching on how stress impacts creativity.

> Qualifying this with "good devs" somewhat begs the question. I would rather avoid judging the developers and just say, no, most developers will not typically write the appropriate amounts of tests by without some friendly reminders.

Our personal experiences are diametrically opposed to each other then. I've never seen lack of tests be an issue on any team I've worked with. I have however seen unproductive teams create tests in place of being productive.

There's a wide range between "burn out" and "had to do something I didn't want to at work today", just like there's a wide range between "my manager's bugging me every 30 seconds on slack" and "why can't I just write the whole feature from my one-sentence description heads-down for 3 weeks and then put up 5k lines at once for code review?" A lot of otherwise-competent developers will do the latter if you don't force them otherwise. (Way more common even among developers skilled at time management: Getting caught up in a bug for X days and not asking for help.)

One view is of course that these are not "good developers" and you should not hire them or work with them. Two better views are that these are developers that need to learn a new skill to be even more effective and this will take time and someone pushing to actively learn it; or that even if they don't ever learn it, they can still be effective at their job when supported by a more active manager. (And a critical piece of advice for managers - that doesn't mean you need to be more active for everyone else on the team at the same time.)

I have worked on teams closer to as you have described, but I would say that's on a separate axis from functional/dysfunctional - it's very easy to get a team of insular divas - or even sustainable/non-sustainable - developers can build the perfect thing on schedule which no one will want to pay for, which a heavier-handed product-focused manager might have prevented.

I do think people who can self-organize are also very good at self-selecting into similar groups. This can result in the illusion that developers are much more effective at this than they believe. Two decades of free money and easy job-hopping resulting in no consequences for bad decisions also helps maintain that illusion - for bad managers also.

I respect your opinion but have a different philosophy.

> why can't I just write the whole feature from my one-sentence description heads-down for 3 weeks and then put up 5k lines at once for code review?" A lot of otherwise-competent developers will do the latter if you don't force them otherwise. (Way more common even among developers skilled at time management: Getting caught up in a bug for X days and not asking for help.)

I’d argue that both of those are ok, and the former is even desirable. If you have a dev who wants to do that, they are usually quite good and you should embrace their creativity and productivity.

The vast majority of “deadlines” are completely artificial and don’t match the way great software is written (by inspired devs). So much value creation is the search for black swans. Great developers have the ability to make those if you optimize for it.

I could see an ad agency or something having deadlines, but personally I would never work in that environment as I prefer product work and maximizing creativity and individual contribution.

"Embracing their creativity and productivity" is hell for the rest of the team who now has to do 5k line code reviews or the feature is forever siloed to that one dev. Most work is not inspiring; when it is it's usually because someone else is spending their time eating shit to give you room to get inspired.

> The vast majority of “deadlines” are completely artificial

IDK, to me it sounds like you have worked in a half dozen B2C startups in a US urban region, all with plenty of money to burn and still seeking "product-market fit". Most development work doesn't go that way. If we don't have A, B, and C ready by the end of the year contracts get breached and people get laid off.

> "Embracing their creativity and productivity" is hell for the rest of the team who now has to do 5k line code reviews or the feature is forever siloed to that one dev. Most work is not inspiring; when it is it's usually because someone else is spending their time eating shit to give you room to get inspired.

I actually think it's ok to silo projects to a single dev if you design your architecture correctly so that their zone has well defined APIs. I've definitely seen this work better than design/dev by committee.

> IDK, to me it sounds like you have worked in a half dozen B2C startups in a US urban region, all with plenty of money to burn and still seeking "product-market fit".

It's true! (except for the seeking product market fit part, they have had it). I definitely enjoy this type of development better, I also think it leads to the best results and the highest quality software if done right (alongside open source).

> Most development work doesn't go that way. If we don't have A, B, and C ready by the end of the year contracts get breached and people get laid off.

I'm 100% sure you're correct, but I don't think this is developer friendly or a good thing. Part of making great software is having the proper business infrastructure around it. That includes sales, which definitely shouldn't have contract deadlines for unshipped features imho.

>I actually think it might be nice for a company to provide a therapist for people to to privately talk to. That's always been a weird roll that managers often play.

It would be interesting to break down what percentage of 1:1 time with employees is spent in therapy-like discussions. It feels like this role isn't recognized enough, except perhaps by the managers themselves.

Two great managers I've had both regarded this as one of their highest duties.

As an engineer, having someone above you in the chain of command who regularly asks things like "how are you feeling about work? Bad? Good? Are you stressed or content?" is a big deal. Even if the answer is a totally noncommittal "everything's fine" 99% of the time, that 1% is absolutely critical to be aware of.

Thank you for your message. I recognize myself in the "regarded this as one of their highest duties", but sometimes it's a lot, especially when you get your own thing going (covid and such).

So thank you. I feel appreciated for the effort I put in this, even though we don't know each other :)

Barking at the wrong tree. In my view, most experienced software engineers can self organise and self manage. Not saying everyone can or that everyone should do remote work but many that enjoy and prefer remote work can.

“This Viewpoint is intended for remote software engineers who are facing new challenges to thinking about routine, responsibility, and goal setting.”

This viewpoint should be intended for non technical managers as they are the ones who tend to clutter project delivery with time management tools and meetings. This applies to onsite work as well. I feel like there is a lot of effort put in educating devs on doing the right thing while management is educated in the opposite direction.

I think its pretty clear there are problems on both sides. Managers need to learn the correct approach to facilitate acclimating their team to remote work but each individual also could improve how they work so that remote settings are more optimal. Nothing is so black and white.

Most software engineers are not experienced software engineers.

Hmm, is that true? Just from a numbers perspective, it seems like there would be far more experienced software engineers than brand new ones.

There would be far more experienced software engineers than brand new ones if the field was stable, but it has been growing exponentially for years.

The answer to the original question depends on the rate of growth, how you define more experienced, etc. So it's not obviously true or false.

> it has been growing exponentially for years

Hardly. At best it can be described by a second-order differential equation. An experienced engineer would avoid the inappropriate term 'exponential' to describe the phenomenon. The rest is true.

You're missing one point though: experienced in team does not equate to experience in skills or being managed.

According to Robert Martin 50% of developers at any given time have less than 5 years of experience. [1]

[1] https://youtu.be/ecIWPzGEbFc?t=3055

From personal experience there is 1 "senior" person (>5 years ) that has to support ~6 freshers.

Most software engineers become experienced software engineers (enough to self-manage) very quickly in the right environment, I've found.

That's probably survivor's bias and not true at scale. "Right environment" is shaky - we should strive towards defining what makes an environment the "right" one and how can we increase the number of engineers that successfully acclimate to their new way of working.

Most software environments are not the right environment.

Excellent point. Small details about your working environment, or lack of a routine, can hugely throw off your workday, and thus your productivity. You should generally pay attention to the lighting, noise level, and comfort of a work space. If you find yourself distracted by anything, you might consider changing your environment. Habitual repetition by way of thinking about your environment or making explicit choices can lead to the establishment of longer-term habits.

Someone should write an article with that advice in it...

100%, but the fix, then, is the environment. Not the developer.

I disagree (my anecdotal estimate would be around 1/3 do quickly, and 1/3 do "slowly" i.e. within 3-5 years), but those who do can still accelerate the process by reading documents like this, no? People who can self-teach still benefit from learning materials.

I believe asynchronous communication is the key for remote work. It is super-hard to learn and requires a trust, however, I find it the most efficient style of work. Of course there will still be some regular meetings / synchronous communication, but more asynchronous you can do more focus time remains.

I've really had a difficult time trying to get other team members to rely on asynchronous coummunication as opposed to video chat. Frequently, there are issues with video chat where the video or audio freezes and what was said doesn't get transmitted. Then there are issues where people don't precisely remember what was said during the meeting and it having to be repeated in chat.

> Then there are issues where people don't precisely remember what was said during the meeting and it having to be repeated in chat.

In my experience that's crucial, after meetings there must be a short summary of what was discussed and decided, what are the next steps for everyone, and what they need to report on, and when are those expected.

There are times we ditch video too and go audio-only if it's really important, otherwise things are only discussed in chat. When working with people in other timezones that's where async chat communication really shows its value.

yes, it requires a change in the mindset. we were also fighting with it at the beginning. but i work in a small company, cca 30 people, i guess it would be harder in a big company.

Counterpoint: having a tricky conversation one. Jira. Comment. At. A. Time. can be comically slow and inefficient.

The first is the big one for me: Work on things you care about.

If I'm engaged with a project because it's intellectually stimulating and/or just plain "cool", I'm going to be 10x more productive working remotely than I ever would be in an office. In fact, unplugging and not overworking myself becomes an issue in such a situation.

OTOH, if I hate what I'm working on, remote work makes it way too easy to procrastinate and slack off. If I'm in the office, management would be able to identify me as being unhappy and target me for termination :D You can coast working remotely an hour a day on an easy but painfully dull project for a long time.

Lots of whiteboards. Clean, tidy desk. No visible cables. Sunlight. Fresh air. Caffeine

This is a common list. So common it makes me wonder how unusual it is that I have no trouble focusing with visual distractions.

I'm using the basement bar as a gigantic standing desk with tons of monitors, a desktop, and cables everywhere. Streaming setup stuff adds a lot well with the mic, lighting, camera stuff, etc... Its literally chaos.

I don't drink any caffeine.

I do have 2 whiteboards in the basement, plus another upstairs though, so I check that one at least.

I really do miss sunlight though. Need to go on lunch time runs to get a bare minimum daily dose.

Sounds like so much chaos just turns into background noise

> No visible cables

I've been looking into this for a while and I'm always kind of jealous of people who manage to hide all their cables. When looking at tutorials, even advanced, on cable management, the people's setups are often so minimal to start with... Do you have any resources on how to properly cable manage a setup that is not trivial?

From my experience doing desktop support at a large hospital: a bulk roll of self-gripping velcro tie, clips to mount the cables under the desk, cables that are long enough to run the route, some creativity, a headlamp and a good amount of patience and scuba gear so you can stay under the desk longer to do the job well.

* Shower first

* Put on clothes

* Deliver tangible things often

Midday showers are one of my favorite things about WFH.

I have also gotten into this habit, but I'm still on the fence about whether it is a net positive change…

Pros: Among various types of breaks one can take while WFH, showers feel particularly restorative. They also sometimes end up being surprisingly productive—diffuse thinking modes, shower thoughts, etc.

Cons: The "when" of showering was previously an automatic outcome, but now it is a conscious decision/obligation. I also find (as many people do) that showers give momentum to my morning, which is arguably more useful when just waking up than mid-day (although YMMV here).

I have to agree. Not just showers, but any type of personal cleansing. I've gotten in the habit of waiting until well after my wife is awake and out of bed before I shave and brush my teeth, and it's perfectly fine.

I've run the numbers, and unless the PVs are putting out above approximately 4KW, it's cheapest to take my shower before 8AM. Thankfully I live where it's sunny almost all the time and I often get 6KW between 1100 and 1300, but in the Winter and cloudy days, it's best to get that shower in early.

You can do this in the office too, assuming it has an office gym

Been there, done that. Not the same. Unless your company is fancy I guess? I just have a really cozy bathroom with everything I need =]

Clothes are overrated. I'm not joking.

I’m not letting you use my furniture.

Why should I change habits just because I work from home?

I prefer:

* Put on clothes

* Shower

* Deliver tangible things often

#0: a standing desk

#0': external monitors & desk mount

#0": an ergonomic keyboard

Do work on a laptop on your kitchen table, you're harming yourself!

Pomodoro Technique seems to work brilliantly. There are many desktop apps like "Be Focused", you can actually do a lot more in a short amount of time using it and don't really have to work that much all day.

I tried the pomodoro technique yesterday. I had one successful pomodoro on the morning when it was quiet, and then when I went to take five minutes to clear a few things away before starting the next pomodoro, those five minutes some how became the rest of the day and I never got a chance to start my second pomodoro

The most important thing is the whole team being in the same time zone. Even a 1 hour difference is too much. That may seem extreme, but I've had so many important discussions happen around 5pm near end of day when everyone's done with their main task and meetings and have time to think about something else. Then they realize it's really important and need to chat right now. If the team is not in the same time zone, this kind of communication simply can't happen. Asynchronous communication can only do so much. Sometimes you just need to talk to someone with a screenshare. Even during the day, different time zones means the lunch hour is mismatched which also affects communication and meetings. And it doesn't matter if those in the negatively impacted time zone say they're ok with super early mornings or late hours. No one wants to be the jerk who is making someone get up early or stay late. The time zone difference has a chilling effect in addition to adding friction.

You can still hire in other time zones, but each time zone team must be an independent unit. So you can have a team that has members in Vancouver, Bay Area, and Los Angeles. And another team in New York, DC, and Atlanta. But these teams should rarely need to communicate and work with each other.

I disagree, for the past 4 years, I've worked in remote teams that were across different timezones and different countries. There are days were half the team is offline because it's a holiday in their country, and it doesn't really impact our team. We know that some people will have a day off, and that's fine, we don't bother them, and nobody expects them to be online.

Same with timezone differences, it's generally understood we work 9-6. If it's after 6PM in someone's time, we don't bother them, because we expect them to do the same. Does it take some more planning? Sure it does, if I want to talk to someone on the same day, I just use Skype to find a time that works for the both of us. Otherwise I schedule a meeting for the next day.

> Then they realize it's really important and need to chat right now.

Having a "really important" issue where you need to chat with someone right now is usually just a matter of perception. Usually those issues can wait a couple of hours, or even a couple of days.

All in all, working across different timezones and countries works perfectly fine, I have plenty of time during the day to schedule calls with my colleagues.

In my last team we had some people in Israel which has a different weekend! And we managed fine. Totally agree about 'right now'.

I like to separate remote and work from home. Remote is mostly async, timezones aren't that important (I have worked with both +10 and -9 without a problem) etc. Work from home is to try to mimics the office environment but distributed (work hours, daily calls, etc).

And when you mention just one hour timezone difference is a problem, I really do wonder how you deal with flexible work times, or you just expect 9-13, one hour break, 14-18 for everyone? Myself, and many others I know would refuse to work like that (I don't do lunch breaks as I don't have lunch, I prefer to get in late and work late as my brain is mush before 10am, Others that work with me seem to like to start as 7am and leave early)

You seem to want work from home developers to work like part makers in a factory.

I strongly disagree. I spent years managing an all-remote team that was spread from Perth, WA to Seattle, WA (for different values of WA). It was a fantastically productive team.

It has been my experience that rarely do productive software developer depend on working with each other synchronously (is it the thinking that they share, or the typing?) and when they do, it's not hard to find a common time to meet between two timezones. It is also rarely necessary to meet together as a team on a very regular basis.

One catch is we would all meet face-to-face for a week two or more times per year. That was important for planning and socialization, but being apart was when 98% of the work was done.

Displeased to see the best comment at the bottom. This is spot on. People will always get the most work done when synchronicity is able to be maximized!

I’m a bit surprised at the downvoting and wondering if there’s misunderstanding. To be clear, I’ve been working remote for years and fully support it. Physical location doesn’t matter. A team could have someone in a Bay Area house, someone in Bakersfield with farming as a side project, another living in a Tahoe cabin with Starlink and hiking everyday, another in Oregon living in the small town they grew up in. Remote is the future and allows wonderful quality of life. But note that these examples are all the same time zone. My comments are from experience, I’ve been on teams with mixed time zones. And the issues from mixed time zones are hidden and silent because no one wants to upset anyone. No one wants to tell the manager that Bob is nice but hard to work with because he’s never online when we need him. But that doesn’t mean the issues don’t exist. The best way to handle this is to never let it happen in the first place. If it’s already happened, the next best option is to refactor the teams by time zone, for example hire more in Bob’s time zone and form a new independent team in that zone.

Async communication = email overload?

Now I’m the first to say I find synchronous communication (eg Slack) to cause massive productivity loss for an organization & can also cause employee burnout … but how do companies that have a culture of async communication not fall into a similar bad issue of email overload?

My gut feeling tells me that as of late I am not able to stay on top of my inbox.

The past 3 years I was able to leave for the day with no unread messages.

The last few months I am unable to keep up. ~20 unread messages and several unanswered Skype chats each day.

Other team members also noticed an increase in the amount of mails.

what makes you think that Slack must be synchronous and that asynchronous == email?

I’m curious now, what would you view then as examples of both synch and async communication?

I think async and sync is more about expectations, with the caveat that a non-recorded zoom meeting is sync, while a recorded zoom meeting can be async. That being said, I feel it's my responsibility to have my notifications tuned properly so I'm not interrupted.

So to me synchronous comms are comms that can't be consumed asynchronously. The only text version of that I can think of is an exploding Signal message or similar. Any non-recorded video message is synchronous.

A key example of async communication are tickets/issues and merge requests.

Slack can be both depending on the situation

Calls are definitely sync, although I guess voicemail is async

Since we're commenting a piece from the ACM: would you people recommend an ACM membership subscription and reading the communication of the ACM magazine?

What if you're not directly a software engineer but more like a system engineer / system administrator / DevOps engineer?

The Oreilly library access alone is totally worth the price of ACM membership.

Is the Oreilly access that comes with the ACM membership full access? The same level of access you'd get for $500/yr from Oreilly directly?

I think so, although I am not sure.

Nice tip!

What a great article! I specifically like the emphasis on the human touch, like showing empathy and trying to build a connection with the customer and the team, despite the remote aspect.

I also believe that correct use of communication media plays a huge role in the effectiveness of remote work. But personally, unlike the author, I believe that written communication is much better for remote teams. Shameless plug, I've wrote an article specifically on the topic of communication for remote work https://dragoshmocrii.com/remote-work-and-efficient-communic...

Good article, but I found it a bit disorienting that I knew it was supposed to be a list of 10, but the numbers on each step kept resetting to 1 after each pull-quote.

Surprisingly, what really helped me become more productive and able to focus... is a pair of headsets with noise cancelling and music.

It really sets my mood to "work".

Applications are open for YC Winter 2022

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