News for hackers. Stuff that matters.
Re:Best practices for remote software engineering by PragmaticPulp on Monday April 26, 2021 @01:43PM (#26945480)
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.

Re:Best practices for remote software engineering by David on Monday April 26, 2021 @05:30PM (#26948423)
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.

Re:Best practices for remote software engineering by lostcolony on Monday April 26, 2021 @03:17PM (#26946762)
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?")
Re:Best practices for remote software engineering by tikhonj on Monday April 26, 2021 @06:42PM (#26949242)
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".
Re:Best practices for remote software engineering by cdogl on Monday April 26, 2021 @06:55PM (#26949370)
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.
Re:Best practices for remote software engineering by tgaj on Tuesday April 27, 2021 @04:35AM (#26953476)
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.
Re:Best practices for remote software engineering by lostcolony on Monday April 26, 2021 @07:07PM (#26949471)
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.

Re:Best practices for remote software engineering by tikhonj on Monday April 26, 2021 @07:36PM (#26949702)
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.

Re:Best practices for remote software engineering by lostcolony on Monday April 26, 2021 @08:14PM (#26950037)
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.

Re:Best practices for remote software engineering by msingle on Tuesday April 27, 2021 @08:36AM (#26955028)
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.

Re:Best practices for remote software engineering by beckingz on Tuesday April 27, 2021 @10:46AM (#26956617)
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.

Re:Best practices for remote software engineering by lostcolony on Tuesday April 27, 2021 @11:11AM (#26956999)
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.

Re:Best practices for remote software engineering by beckingz on Tuesday April 27, 2021 @12:51PM (#26958457)
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.

Re:Best practices for remote software engineering by lostcolony on Tuesday April 27, 2021 @03:19PM (#26960244)
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.

Re:Best practices for remote software engineering by jimmySixDOF on Tuesday April 27, 2021 @04:00AM (#26953259)
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.
Re:Best practices for remote software engineering by deckard1 on Monday April 26, 2021 @03:50PM (#26947167)
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.

Re:Best practices for remote software engineering by PragmaticPulp on Monday April 26, 2021 @05:29PM (#26948416)
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.

Re:Best practices for remote software engineering by fartcannon on Monday April 26, 2021 @03:35PM (#26946977)
"Yes, I can't stop worrying about tomorrows standup and, as a result, I'm incredibly inefficient."
Re:Best practices for remote software engineering by kingsuper20 on Monday April 26, 2021 @03:57PM (#26947249)
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.

Re:Best practices for remote software engineering by danielvinson on Monday April 26, 2021 @02:03PM (#26945770)
This is amazing advice. Thank you.