Best practices for remote software engineering
cacm.acm.org
cacm.acm.org
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?
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!
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.
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.
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'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?
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.
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.
> 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.
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.
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.
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.
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.
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.
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.
Maybe just bad luck and bad workplaces, but I am increasing skeptical that there are any true 'Agile' workplaces.
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.
It wasn't too hard a discipline to keep, I think it helped a lot to use physically different space and hardware.
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.
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!
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.
Sounds stupid, but it really tricks my brain into not procrastinating on the more important tasks.
https://aaron.blog/2016/03/25/how-working-remote-probably-sa... is a good place to start.
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.
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.
* 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.
Life is too short to spend on crappy screens.
Definitely agree with working using the best equipment money can buy, if you spend so much time with it.
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 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.
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.
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?
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.
I ask because I have often wondered if I am undiagnosed as something or other and this post hit me hard.
In my brief experience of SSRI drugs, they left me fuzzy and unable to concentrate. Like baby brain without the baby.
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.
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 :)
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.
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.
Red alert. You basically just wrote “I should quit tomorrow”.
Because otherwise you should quit yesterday, like the others say. You don't owe them nuthin'.
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.
Weeks? Months?
Why? Unit tests are our closest allies
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.
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 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.
If I can only find the energy and appropriate time to do this, I figure I can save my work and work ethic.
- 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.
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 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)
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.
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 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.
- 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)
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".
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.
> 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.
> 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.
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.
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.
> 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.
> 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.
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.
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.
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.
So thank you. I feel appreciated for the effort I put in this, even though we don't know each other :)
“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.
Someone should write an article with that advice in it...
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.
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.
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.
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.
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.
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?
* Put on clothes
* Deliver tangible things often
* Put on clothes
* Shower
* Deliver tangible things often
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).
#0': external monitors & desk mount
#0": an ergonomic keyboard
Do work on a laptop on your kitchen table, you're harming yourself!
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.
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.
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.
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.
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?
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.
Slack can be both depending on the situation
Calls are definitely sync, although I guess voicemail is async
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 if you're not directly a software engineer but more like a system engineer / system administrator / DevOps engineer?
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...
It really sets my mood to "work".