Entropic Thoughts

Announcing Decision Drill

Announcing Decision Drill

If you need to decide on something with a group of friends, check out Decision Drill. Enter the name of your decision and then you’ll get a link to send to your friends. They will get to nominate alternatives and second existing alternatives. When nominations close, the seconded alternatives go on to a voting stage – refresh the page to get taken there. When voting closes, the top voted alternatives are shown. What you do with the top alternatives is up to you. I recommend sitting down together and discussing them futher to get into the nuances. Or just pick the highest voted one and get on with your life.

By default, each stage takes a week, but if you’re doing this on the go or in a conference call, the creator of the decision can advance to the next stage manually as soon as they think everyone is ready. If you have a sprint retro coming up, this might be a low-investment way to elicit discussion points!

Made in Haskell on top of SQLite

If you’re more interested in the making of, that’s an upcoming article. The headline is that it’s made in Haskell, and uses SQLite for storage.

For long time I couldn’t motivate spending spare time working with Haskell since it was so far from my actual day job (where F# was the closest I could get to Haskell for a long time). However, now that I’m in the incredibly luxurious position of working with Haskell as my day job I’m more than happy to pick it up for side projects again.

Motivating case: board game day!

I created Decision Drill to decide with a group of friends which board game to play. We only get together at best once a year so this decision is a big deal, and I wanted everyone to have an equal opportunity to chime in without being overpowered by the more influential people in the group.

Thus, I went looking for a tool that is

  • quick to use,
  • does not require registration,
  • does not have all the distracting bells and whistles.

I pictured “the Doodle of dot voting.” I couldn’t find anything from a quick web search, and I figured it was at most a night of work, so I made it.

Background and assumptions

A group decision can be performed as a three-stage process:

  1. Come up with a list of alternative actions to resolve the decision.1 There’s actually a subtle nuance here. People can argue themselves blue back and forth as to what has happened, or how to best interpret it. Surprisingly often, they would still agree to the same set of actions going forward. Focus debate on what to do, not what has been.
  2. Narrow down the list of alternatives to a smaller set.
  3. Discuss the remaining small set until a winner emerges.

The third step is often good to do in a live setting, but the first two sometimes get better if they’re done asynchronously, with every participant having ample time to come up with alternatives and evaluate them. However, doing so requires either

  • a person to manage the list of alternatives and keep other people updated, or
  • a central mechanism to share the list of alternatives, e.g. a group chat or shared document.

Having a coordinator takes time and effort, and the central mechanism usually kills anonymity. Anonymity is a great feature of decision making because it prevents influential members of the group from controlling the environment in which the decision is made.

Coming up with a list of alternatives

This corresponds to the nomination stage of Decision Drill. It’s important to let all participants submit alternatives without giving precedence to some. In Decision Drill, all nominations are anonymous, meaning the intern can submit an alternative that will be considered on the same footing as the one from the vp of engineering.

However, it’s also easy for this to devolve into a large set of alternatives that are really only good for one person. The traditional, Robert’s Rules of Order way to solve this is to require that an alternative is seconded by someone else before it is considered. Decision Drill adopts this approach.

Narrowing the list of alternatives

In a well-functioning decision process, there may still be many alternatives that are proposed and seconded. It would be infeasible to discuss all of them in equal depth. Fortunately, the wisdom of the crowd can help out. If everyone gets a few votes to distribute among the alternatives they like, a smaller set of clear favourites usually emerge. These can be discussed at greater depth.

Again, voting is anonymous and egalitarian: the intern has the same number of votes as the vp of engineering. Everyone is given only three votes to force them to focus on what’s really important, but still retain the ability to express a strong preference for one alternative.

Anticipated and asked questions

I have asked myself some questions as I built this, and I anticipate some questions from others.

Why not allow users to adjust parameters?

Mainly simplicity – I don’t want to maintain the business logic and ui around that! But also consistency of experience: I want someone returning to Decision Drill for another decision to be presented with exactly what they would expect based on the first one.

Why not quadratic voting?

I like the idea, but again, simplicity. Quadratic voting is harder to explain, and possibly harder to implement and design a ui for.

Why not select a Condorcet winner?

This would be equivalent to asking people to select the winner between all pairs of alternatives, and then presenting as the winner the alternative that beat all other alternatives. Such a Condorcet winner almost never exists in real life. People’s preferences are cyclic and incompatible in all sorts of funny ways.

Why not impose more structure on the process?

I want our computers tools to support the processes we desire. I don’t want us to shape our processes around what our computer tools are designed for.

Can I see how many others have seconded my proposal?

No. The decision creator can see how many seconds each proposal has, but anyone else sees only which proposals they have seconded themselves.

Can I see how many votes my proposal has?

No. The decision creator can see how many votes all proposals have, but anyone else sees only their own votes – until the results are in.

How does this seconding business work?

By pressing (+1) you are counted as supporting the proposal. If you press (+1) again, you withdraw your support and no longer count as supporting that proposal. At least two people need to support a proposal for it to pass to the next stage. The person who submits a proposal is automatically registered as supporting it – hence needing “a second” to support the proposal.

However, the person who submitted a proposal can withdraw their support, which would then mean two other people (rather than just one other person) would need to support it for it to pass to the next stage.

If I change my mind, can I remove my proposal?

No. You can withdraw your support from it, but if others support it, it stays in there. In Decision Drill, proposals belong to the group, not to the person. (This is not entirely obvious: one could argue that all proposals need a champion, and the person submitting a proposal is a natural champion. My standpoint is that a sensible group can work out a new champion for a proposal they really like.)