Saturday, October 24, 2020

Rethinking open-source priorities - what is my time worth to me?

One day into trying to fix an issue I wondered if I was using my time wisely. Two days after that, and when I'd finally found the solution, I'm certain I hadn't been using my time wisely.

⏰⏲⏱

Cliche
Photo by CharClarPhoto - https://www.flickr.com/photos/charclarphoto/42437342612/

One of the things I like about contributing to open-source projects is that I can choose my priorities.

My thinking goes or rather went, that if I'm giving my time for "free" I should get to choose what I work on. I'm starting to think this isn't the best for me, or the projects I'm contributing to.

Back to the scenario, I started with.

One day into debugging the issue (an automated UI test that would fail periodically for no obvious reason) and I considered giving up. There were two things that kept me going:

  • I was really keen to understand the underlying issue.
  • I'd committed to fixing the bug. 
The bug was reported by a member of the project's core team and I'd created the test originally. I felt a personal responsibility to get it working. The bug was also something I (originally) thought I could fix quickly. Having the core team (who are paid to work on the project) spend their time on this didn't feel like a good use of their time.

Reflecting back on this, I was making a few (common?) false assumptions:
  • My time was worth less than those people paid to work on the project.
  • My time doesn't matter as it's just an open-source contribution. (I'm not being forced to do this.)
  • Because I'd started it I need to finish it.
  • Any external contribution to an open-source project is valid.
If this had been paid work, I would have stopped before the end of the first day working on this and said it wasn't worth the effort. If this had been my own open-source project I would probably have stopped then too. It wasn't worth the effort to spend more time trying to fix the issue. Having to occasionally rerun a test because of a false negative wasn't worth spending multiple days of effort. That time could have been used on something much more productive.
I would have been appalled to hear of someone being paid to work on the problem keep going for so long. So, why did I think it was ok for me to keep spending my unpaid time on it?

If you've read this far and think I was foolish and should have known better and stopped sooner. I agree.
Clearly, I need to reflect on this and better prioritize what I work on.

However, I think this highlights some important questions for people who maintain, lead, manage. or otherwise, influence people who contribute to projects. I'm thinking particularly of open-source projects but I suspect the same applies to closed projects within an organization too.
  • How do you ensure that all contributors are making the best use of their time?
  • How do you ensure an external contributor is doing something that is a good use of their time?
  • How do you prevent external contributors from becoming demoralized when stuck on tricky problems?
  • If you want external contributors, what are you doing to attract and keep them?

I think these questions matter because:
  • For paid workers, you want to ensure that the money spent on their time is being used effectively and efficiently.
  • For volunteers, you want to value and respect the gift of their time and ensure it is being used wisely.
  • For everyone, you want to make sure that no-one is stuck on something they should re-evaluate, abandon, or ask for help with.
    Previously I would have relied on people to speak up when they're stuck but this experience demonstrates that I don't always do this. So I shouldn't expect this from others.
  • For everyone involved, you want them to feel valued, appreciated, and that they're making valuable useful contributions.
    Some paid contributors will be happy to turn up, do something, and get paid without thinking about what they're doing and the wider consequences. But I expect having such people on a project that seeks open-source contributions can be a turn-off for would-be volunteer contributors.

Managing projects with both paid and volunteer contributors can be very tricky. I wonder if there are lessons from charities or other organizations that have both paid staff and volunteers which would be useful for those creating software this way?

If you have any thoughts on this, I'd love to hear them.
They could be on how you prioritize and know when to stop, re-evaluate, and when to keep going. Or maybe you have some thoughts about how project leaders/maintainers/managers can ensure that all contributors (paid or not) are making the best use of their time. Both personally and with regards to contributing to a project.

For me, the lesson I'm going to try and take forward is to think about giving my time to an open-source project and then focusing on what the best thing is I can do with that time. I'm going to try and put that time decision before I commit to fixing a bug or adding a feature.

post-script.
Yes, I did finally solve the issue. It was a timing issue (as they often are) relating to a light-dismiss dialog not always being closed. It's interesting, to me, to know this but was it worth two days of my time to find this out? Probably not. Would I have felt bad charging for my time to fix this if I was being paid? Yes.

0 comments:

Post a comment