Thoughts on taking on too much responsibility, and a request for help from the community
Time for some long, rambling, stream-of-consciousness-ish thoughts on self-imposed responsibilities and burnout.
TL;DR: I've tried to tackle too much, and I'm somewhat burned out. I'm asking for help from the community so I can offload some of these tasks and better focus my attention.
I've established a reputation as an expert on React and Redux, based on several factors:
- Answering questions everywhere, including Reactiflux, Stack Overflow, Reddit, Twitter, and HN
- Creating and maintaining my React/Redux links list
- Writing tutorials here on my blog
- Being a Redux maintainer
- Having a few chances to speak about React and Redux
I've really enjoyed doing all this, but over time I've added more and more stuff to my list of things I feel I "need" to be doing. Here's a rough sketch of what my mental todo list looks like right now:
- Dozens of blog posts I'd like to write at some point
- Almost 500 bookmarks sitting in my "to review" queue, waiting to be catalogued and potentially added to my links list or my Redux addons catalog
- The links list itself is in need of maintenance, as there's a bunch of links in there that are probably now outdated
- Some of the sections are very large and probably need to be organized better
- Keep an eye on new React-related posts on Reddit and HN, read them, and add them to the queue
- Read through discussions and answer questions that I see, especially in the "beginner's thread" in /r/reactjs
- Also do occasional moderation of /r/reactjs
- Try to stay on top of discussions in the Reactiflux chat channels, especially #redux and #need-help, and answer whatever questions I see there
- Consider putting together talk proposals for a conference or two
- The Redux starter kit lib I threw together is sitting there waiting for me to give it attention and push it forwards towards being something we could officially recommend for Redux users
- React-Redux has multiple outstanding PRs and issues that need my attention as a maintainer, including updates to work with async React and a long-open PR to add a selector shorthand
- Multiple issues I've opened with suggested improvements to the Redux docs, plus a bunch more ideas I have floating around in my head
- Ideas to completely revamp the React-Redux docs
- A couple ideas for side projects I'd like to work on someday
Part of the reason this has piled up is because the last few months have been really busy. I spoke at a local meetup and the Reactathon conference in March, prepared and taught my first Redux workshop in April, and had two long business trips sandwiched around all that. I also experimented with trying to send out a weekly email newsletter during that same time period.
That combination has basically sucked up all my mental energy for the last few months, so after I got back from my last business trip, I figured I'd take a bit of a break and relax. It's summer, I've been trying to play golf whenever possible, and I'm enjoying the new Battletech computer game.
Unfortunately, in the meantime, I've been finding myself feeling mentally burned out in a lot of ways. The list of stuff that I feel I "need" to be working on has gotten too big, and I can't bring myself to actually sit down and work on anything specific. In particular, the links list backlog, which I'd gotten down to less than 50 at one point, is now at almost 500. Keeping up with that had basically become its own weekly job that was eating up large portions of every weekend. (And trying to write a newsletter was making that even worse, which is why I gave up on doing that a few weeks ago.) Having that huge backlog of links to review has become a mental weight.
I take it rather personally whenever I see someone struggle getting started with Redux (and to some extent React), whenever someone complains about Redux having too much "boilerplate", or someone inevitably replies to a Redux discussion thread with "Why not just use MobX/GraphQL/Context/whatever". I also find myself almost unable to pass by a question that I know the answer to without writing up a comment that tries to answer them.
The last couple weeks in particular, I feel like I've been unable to sit down and focus on anything "productive" because there's just too many things I "need" to do, and I don't know how to prioritize them. Should I write another Redux tutorial post? Fill in missing pages in the docs? Try to work on async-compatible React-Redux? Figure out how to make
redux-starter-kit ready for people to use? Hang out in Reactiflux and answer questions? Clearing out some of the links list backlog? Or should I be taking more time to myself so I can keep myself mentally relaxed? What's the line between "relaxing" and "wasting time / avoiding doing anything useful" ?
That task list is all things I want to do, mostly. I want the Redux docs to be a better resource for people to learn from. Ditto for my blog posts and the links list. I feel a huge responsibility to the community as a Redux maintainer, and I feel bad that there's issues and PRs that are lying around open without any work being actively done on them (including ones that I opened up myself). I think
redux-starter-kit could help simplify using Redux, and I want it to be something we can encourage people to use.
I used to have some side projects I worked on in my free time, back before I got involved with the React+Redux community. I'd kinda stopped doing any a while back because I enjoy my project at work and that mostly "scratches the itch" of coding something interesting. But, I've spent so much time doing docs work and articles and answering questions that I'm missing just sitting down and hacking on a project for fun, yet I think if I did spend time on a side project I'd feel guilty over not doing something "productive". (And then I spend another evening watching whatever baseball/football game is on TV and playing a game, and feel the same anyway.)
It's also kind of frustrating for me in a way to see the time and energy other libraries and communities have behind them. Michel Weststrate is cranking out some great improvements to MobX, like the new MobX v5 and the Immer library that both use Proxies. Peggy Rayzis and the Apollo team are building a fantastic ecosystem of tools, and it seems like everyone's switching from Redux to GraphQL+Apollo. The Vue community is growing rapidly, Sarah Drasner and Sean Larkin are helping push it forward, and it seems like they've got a whole team of people improving the already excellent docs. Meanwhile, Tim Dorr and I are sort of over here poking around at Redux rather quietly by ourselves, and most of the PRs we get are sorta "useless" edits to the examples and docs (stuff like changing a reducer in an example from
function to an arrow function, etc). I feel like it's a competition, and we're like a couple amateurs standing still while everyone else is running laps around us. (A friendly competition, to be sure, but it feels like a competition nonetheless.)
A Plea for Help
Ultimately, the issue is that I've simply taken on far too much, and I can't keep up with everything, no matter how much I want to do so.
The links list is probably the biggest culprit. The majority of my free time is on weekends, and I was routinely spending anywhere from 6-10 hours a weekend trying to sort through all the articles and libraries I'd been bookmarking. That continual recurring task sucked up time and meant I didn't have much time to devote to any of the larger individual tasks I've been wanting to work on.
The Reactiflux chat channels are the other big time sink. I'm extremely proud that we've built a large, active, friendly, helpful community there. But, this also means there's a never-ending stream of questions being asked. I used to get home every evening and scroll back through the day's questions in #need-help and answer stuff that had been asked hours before, and now I find myself mostly avoiding that channel. The good news here is that we've got many other people who have been active answering questions, and we've been able to highlight a lot of them as our "MVPs" (shoutouts to @connor, @slightlytyler, @NickServe, @ghardin137, the ever-present @BTM, and so many others). So, that at least is something that's being handled well even if I'm not around answering questions all the time.
I think what would really help the most right now is if I could hand over maintenance of my links list and Redux addons list to some other people. At a minimum, what I'm thinking is if I could take the bookmarks that I'm adding to my backlog queue, and have someone else look at them for evaluation and add them to the list as appropriate. That would let me focus my attention on other specific tasks, without feeling like I'm on a treadmill trying to keep up with those every week.
I'd also really appreciate more community contributions to the Redux docs. We've got a ton of gaps I feel need to be filled in, and as much as I'd like to work on those myself, those are the parts the community could help with the most. I'm extremely happy to provide guidance, but I'd love to see the community step up and help make the docs better.
I'm still not exactly sure how I should be focusing my own time. It's tough to decide what has the most benefit to the community - docs, tutorials, directly answering questions, or working on actual maintenance tasks. Frankly, I'd appreciate some suggestions for how I should be spending my "productive" time, and I'm still trying to figure out what the balance should be between "productive" free time and goofing off.
Please contact me if you're interested in helping out! If you know what you'd like to work on, great. If not, we can talk and figure out where you can contribute.
I do have a vacation coming up in a few weeks. Hopefully that time off will help clear my head some and let me get back on track. I'm also going to be at React Rally and React Boston this year. I'd love to talk to people in general, but especially to anyone who'd like to help the community through docs and resources.
I guess I also need to start learning how to accept that I can't do everything / be everywhere / answer every question, and that the world won't end if I'm not out there keeping up with everything.