6

Occasionally, there arise small unpleasant tasks that anyone on the team could reasonably undertake, but which nobody wants to undertake.

One way to accomplish this "fairly" is via sortition. This is easy enough with, e.g., rock-paper-scissors when two team members are physically co-located, or with multiple rounds of rock-paper-scissors when multiple team members are involved. Or by drawing straws, if these are available, or flipping a coin.

However, when a team is hybrid these are more difficult to accomplish. Possibly, these same things could work over video, but it's not always appropriate to call an all-hands video chat just to settle a simple question of who gets to do something.

How can we accomplish sortition, fairly and transparently for a hybrid work team?

10
  • This presumes a definition of "fair" in terms of equality rather than equity. Dec 19, 2023 at 20:22
  • 3
    How often do these tasks arise, and how long do they tend to take? Are they frequent enough that it could make sense to establish a week-long rotation to be the task handler?
    – Milo P
    Dec 20, 2023 at 22:12
  • 1
    @Him Alternatively, and much much less of a hassle in practice than my previous comment, you can use an external source of "verifiable deterministic pseudo-randomness" to determine a random person. Something like this: xkcd's GeoHashing
    – Stef
    Dec 20, 2023 at 22:33
  • 1
    I always win at rock-paper-scissors due to my psychic ability (or my lightning fast reflexes if you want to be doubtful of my abilities), so if I was on your team I would vote for that method, but it wouldn't be fair. If I was in your situation I would just make an excel list and random sort then go down the list until the end, then re-sort.
    – RIanGillis
    Dec 21, 2023 at 2:23
  • 2
    This is the top result on Google for 'rock paper scissors online', I'm sure there are others, why won't one of them achieve what you're looking for? rpsgame.org Dec 21, 2023 at 7:38

11 Answers 11

66

Have a list with all the people that could be selected, next time one of these kind of tasks arise, select the first person on the list. The following time, go with the second in the list, then the third and so on. Wrap around when after selecting the last.

This is better than rock-paper-scissor or coin toss. While unlikely, one could be selected multiple times in a row and it may take some time before it would become fair.

12
  • 19
    This is the best answer if the team is self-managed. "Your turn" is always understood as a fair way to accomplish the undesirable work. Dec 19, 2023 at 19:29
  • 4
    I agree that its less fair to play RPS, but RPS has a little fun element of itself. And generally there is a sortof automatic acceptance when you loose, which might be more than "its your turn"
    – Martijn
    Dec 20, 2023 at 14:17
  • 1
    The problem is that the tasks may not be the same difficulty. It is possible that person A's turn always falls on the harder tasks, and person B's turn always falls on the easier tasks. Dec 20, 2023 at 17:55
  • 2
    @ErelSegal-Halevi then add those details into the "value" of the task. So that doing the even-less-desirable or more difficulat task will count as having done two rounds, skipping your next turn. Of course, this only works, if those values can be agreed upon.
    – Chieron
    Dec 20, 2023 at 19:01
  • 2
    this works reasonably well for a team with somewhat similarly skilled members. However, it becomes pretty inefficient if you have a sizeable amount of such tasks and a team that consists of a few very skilled seniors and a few not so skilled juniors... while I'm not saying that all the annoying stuff should be done by the intern, to a certain degree you want to shield your most experienced people from low level work cause that costs you money/productivity. Dec 20, 2023 at 19:45
17

That's what managers are for: they assign work to the team members. If they do it reasonably well (i.e. fair, transparent, etc) then there are no issues and grumblings.

5
  • 3
    I partially disagree; A manager should make sure a team works well and if needed helps resolve issues, but IMO a good manager should try to make a good self-managed team.
    – Martijn
    Dec 20, 2023 at 14:19
  • In reality, however, the manager will dump the grunt work on the newest and / or the least experienced member of the team and move on.
    – Ghos3t
    Dec 20, 2023 at 16:35
  • @Martijn That's true, however in the described situation nobody in the team is stepping up to do these unpleasant tasks - so a manager's input is needed, at least until the team is mature enough to allocate the tasks appropriately. A manager can make the decisions about who is skilled enough vs. busy enough vs. important/expensive enough to take on the busy work, from a managerial position where people are more likely to respect, or at least accept, the final decisions.
    – Kayndarr
    Dec 21, 2023 at 8:06
  • 2
    @Ghos3t That may be the behaviour of a grossly incompetent manager who does not know how to do their job properly. A manager who understands their role will recognise that such an approach will foster a toxic atmosphere within a team, and that the people assigned those tasks will end up being highly unproductive - most likely not staying around for long and leading to the junior positions being a "revolving door" of people who won't stay around for long in a job that quickly turns out to be deeply unsatisfying to them. Dec 22, 2023 at 9:20
  • @BenCottrell you nailed it perfectly, which is exactly why I will be leaving my current job soon lol
    – Ghos3t
    Jan 3 at 0:21
7
  • A Roster

Think of it like an On-Call Roster 'Oh look, Dave is on the Crappy jobs roster for today'

  • Alphabetically

Dave did the crappy job last week, so it's Jane's turn this time.

  • Via a redefined set of responsibilities.

Demarcate every member of the team with a new set of responsibilities - e.g. Bob is responsible for System A, Dave for System B etc. and if there's a crappy job that touches one of their systems, then it's them that has to do it.

  • Via technical expertise.

Jane has the most experience with this - so Jane has to do it.

8
  • 3
    Re "roster": Round-robin assignment, whether by issue or by week, is a traditional way to handle bug reports if you don't have a dedicated support team... or if you do but some issues are ones that need more expertise. But note that this is assignment of responsibility for analysis; the person who catches the initial report can ask others to help in resolving it, and some will result in the customer being given a workaround while the issue goes onto the backlog of technical debt.
    – keshlam
    Dec 19, 2023 at 22:14
  • 3
    Poor Jane. She's just so damned smart. Competence is a curse in this way, I guess.
    – Him
    Dec 20, 2023 at 14:33
  • 15
    "Jane has the most experience with this - so Jane has to do it." becomes self-perpetuating. Each time she touches it, she gains even more experience, quickly out stripping her colleagues, meaning nobody else will ever have to deal with it. Doesn't seem "fair" to me...
    – FreeMan
    Dec 20, 2023 at 14:38
  • 1
    @FreeMan well, maybe Jane gets so good at it, it stops being annoying,because she automates it away... or becomes the domain expert. it depends a bit also on what level Jane is; if she's a junior then perhaps automating the tasks instead of doing them manually every time is even a challenging interesting task. on the downside, of course the approach means that tasks may lie around for a while if Jane is on holiday^^ Dec 20, 2023 at 19:49
  • One more crazy alternative: use an accounting sheet (or something like tricount) and assign a virtual cost to these tasks depending on how time-consuming or unpleasant they are. When a task that costs K must be done by any of Alice,Bob,Charlie and Alice is the one who does it, enter it as "Alice paid K for Alice,Bob,Charlie" in the accounting sheet. At the bottom of the sheet you have everyone's balance. If possible, the person who is the more "in debt" should take the next task; and if they don't, that's okay, but it will be reflected in the balances.
    – Stef
    Dec 20, 2023 at 19:49
3

If you're asking the best way to do a random assignment, then the easiest way is a random number generator, easily found online. Assign each team-member in the selection pool a number #1-x, generate a random number between 1 and x. Done.

That being said, as actual workplace advice, I agree with Hilmar's answer that this is really something that a manager should assign. In the case that there is not a clear team manager to assign these sort of tasks - or there is an incompetent one - then 2HDS1X8B's answer is also an improvement on the current system. Everyone on the team should be rotating through these tasks evenly.

3
  • 1
    Who generates the random number? Since the job is undesirable, this creates an incentive for the person generating the number to "generate" the random number in such a way that their number isn't picked. Not that my teammates can't be trusted, but it would be better to have a system where trust wasn't necessary.
    – Him
    Dec 19, 2023 at 20:38
  • 5
    @Him if you cannot trust your coworkers to do a random number generator, thats... a problem. But there are plugins for Slack or Teams or whatever your job uses to communicate that will generate a random number in the channel, so everyone can see it and no one can cheat.
    – InBedded16
    Dec 20, 2023 at 15:14
  • 1
    I agree with @Him . Whether or not you trust your coworkers, you shouldn't implement a system that incentivizes dishonest behaviour when it's easy to implement a system that doesn't.
    – Stef
    Dec 20, 2023 at 19:23
1

A hybrid approach sometimes works well: have a weekly rotation of "small unpleasant task" dispatcher. This week's dispatcher might be expected to usually handle such tasks, but is empowered to delegate them, either because they don't have the bandwidth or to call on subject matter experts. In this case the role of the manager is simply to monitor the overall efficiency and fairness of the system.

Obviously this required a team with a higher level of autonomy than simply handling routine tasks as they arise, and may require relaxing performance standards for the dispatcher's main role.

I've seen this work well in both ticket-based and monitoring-based systems, and in in-person, full-remote, and hybrid teams.

A possible adjunct, depending on the nature of the team and the tasks, is regular meetings where a list is presented and the dispatcher assigns those for which there are no volunteers, using some mix of fairness and expertise.

Note that any such system can be gamed, with people selectively taking on the easiest tasks from the pool.

1

If the existing answers (essentially “use a simple rota” or “use a more complicated rota that takes skillsets and job difficulty into consideration”) do not work for you, perhaps automate the RPS or straw-picking solution that you already do.

There are a large number of anonymous polling tools that could perhaps be bent into this shape, or it would be simple enough to have one written. This would work for non-urgent tasks: each “straw” is assigned a length (only known at the server-side), each person picks a straw, only once every one has picked are the lengths revealed and the task assigned. Arranging this may be seen as a waste of time by your management though! And you need to decide a rule for those who do not pick in time – do they automatically get the task?, if there are multiple do you fall-back to the rota (but skip down until you hit someone who has not taken part) or pick at random? (for fall back to random: use one of the pickers at a trusted site like https://www.random.org/ if people don't trust you to toss a coin or roll a die fairly)

Possibly, these same things could work over video, but it's not always appropriate to call an all-hands video chat just to settle a simple question of who gets to do something.

Perhaps taking a hybrid approach to match you hybrid environment:

  1. For tasks important enough for such an all-hands call to be arranged, do it that way.
  2. For other tasks, if there are other all-hands calls happening real soon now, add the choice to the “any other business” at the end of that call.
  3. For everything else: pick the person who has least recently taken on one of those tasks (essentially a rota, but it accounts for tasks assigned by one of the other methods).

This keeps the “but RPS has a little fun element of itself” part mentioned in commends to another answer where practical, as a “team togetherness” thing, but gives you a fallback.


How practical any of this is depends on how often the issue occurs, amongst other factors, of course. This entire question and its answers might be massively overthinking the matter!

1

We use a site called Plouf Plouf -- https://plouf-plouf.fr/

You type in (or import) a list of names, and it picks one at random.

1

For a zero-trust random number generator, there are various methods. For instance, each person can choose a random number, then post the hash of the number, then once all the hashes have been posted, everyone posts their number, and then the numbers are combined, e.g. added together and the modulus taken. This does require high-entropy numbers, and participants having hashing set up. Another method is to use a common sort of entropy. For instance, take the last digit from the prices of a pre-selected set of stocks.

However, if you're having to set up a zero-trust system, that suggests that there's something wrong with your team. As others have said, companies are generally built around a hierarchy, and your manager has the responsibility of deciding who does what.

If the people on your team really don't want decisions coming down from the top, another strategy is some sort of bidding system. For instance, everyone could be assigned some starting number of points. Whenever a task comes up, everyone posts a bid of how many points they're willing to pay to avoid it. Whoever posts the lowest bid has to do the task, and everyone else pays that employee a number of points equal to the second lowest bid. If you run out of points, you can't make a bid, so you have to do the next task. You'd probably need some further mechanism such as a minimum point value. And in the case of a tie, you'd be back to needing to choose random numbers.

0

Time and Task

Let's say there are 4 people - Alice, Bob, Carol and Ted - and 3 tasks and/or categories of tasks - A, B, C:

  • Week 1: Alice - A Bob - B Carol - C

  • Week 2: Ted - A Alice - B Bob - C

  • Week 3: Carol - A Ted - B Alice - C

  • Week 4: Bob - A Carol - B Ted - C

and then repeat. If the number of people is the same then mix it up:

  • Week 1: Alice - A Bob - B Carol - C

  • Week 2: Bob - A Carol - B Alice - C

  • Week 3: Carol - A Alice - B Bob - C

The timing could be by Day or Week or Month depending on the situation. But this way everyone knows who gets each task in advance, and over time it should be very fair.

0

Here's a possible solution that I came up with that implements a simplified multi-agent distributed RPS, but I would very much be open to simplifications or ways to make it more secure.

  1. Assign each team member an integer ${1,2,...n}$ where $n > 2$ is the number of team members (moderator task, 1 message read per team member).
  2. Each team member picks a number ${1,2,...n}$ and messages that number to the team member assigned the number after theirs modulo n, i.e. team member 1 sends their selection to team member 2, 2 to 3 and so on... team member n should send theirs to 1 (1 message read and 1 write per team member).
  3. Each team member posts a confirmation that they have sent and received a number (1 message write per team member)
  4. When everyone has confirmed, the moderator signals for everyone to submit both theirs selection and the teammate whose number they know to the group chat (1 message read and 1 write per team member)
  5. The moderator adds up all of the selections modulo n. The result of this calculation will be a number ${1,2,...n}$ and that number is the number of the teammate who gets to do the task. (1 message read per team member)

This results in 4 reads and 3 writes per team member, which is maybe a lot. If any one team member selects their value ${1,2,...n}$ uniformly at random, then the solution at the end will also be a value ${1,2,...n}$ uniformly at random, even if the other $n-1$ team members select their numbers even non-randomly, but independently (this is also a feature of RPS). Collusion is a problem, however. If there are 3 team members A,B and C, and A and B collude then they can ensure that C gets the task. Viz. A knows C's choice and C knows B's choice. The "team" of A and B therefore know B's and C's choice and can pick A's choice in such a way that the result at the end is "3", and the third team member (C) would therefore receive the task. Indeed, a conspiracy of $n/2$ team members could suffice to determine the outcome, if they are "every other" member in the numbering.

0

Spin a wheel with everyone's name on it:

https://wheelofnames.com/

Or just assign the jobs...

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .