How I Got Here: My Journey Into the World of Redux and Open Source
This is a post in the Blogged Answers series.
TL;DR: Programmer who hates writing documentation for work projects finds himself writing open-source documentation for "fun". And so can you!
I've been a professional software developer for about 8 years, with several years of side projects before that. I've always been strong on information gathering and research. (In other words, my Google-Fu is pretty strong, I spend way too much time reading Reddit and HN, and I abuse Github's search function). That's been a huge help for me in my programming career, as it's enabled me to come up to speed quickly on new technologies, as well as find OSS tools and technologies that can help the projects I've worked on. I've also made a habit of collecting useful info and passing it on to teammates.
Over the years I've mostly just lurked within the development community online, content to read blog posts, absorb info, and make use of it. I've never felt like I had anything really useful or original to say, especially since almost all of what I know is just stuff I read elsewhere.
About a year ago, I started learning React and Redux, in preparation for a potential rewrite of an existing app. Following my usual pattern, I obsessively read every tutorial and article I could find, and tried to soak up the knowledge. I also ran across the Reactiflux community, a collection of chat channels dedicated to discussing React, Javascript, and related technologies. I started hanging out there in the evening, still content to just lurk, read, and learn.
As the weeks went on, I started seeing questions I knew the answer to, and began tossing out answers in the channels. This continued, and I found myself answering questions on a routine basis. Amusingly, I had yet to actually write any meaningful React or Redux code :) But, between blog posts, Github issues, SO questions, and chat discussions, I'd read enough that I frequently had enough info to help people out. Eventually, one of the Reactiflux admins actually asked me if I was interested in being a mod, since I spent so much time answering questions.
I began seeing a lot of the same questions popping up in various places. Many times, there were answers out there already, in specific places on Github or SO, and I began accumulating links to point people to. I'd also bookmarked numerous articles during my own initial learning process. I finally decided that someone needed to centralize some of this information, and filed an issue asking about writing an official FAQ. Dan Abramov encouraged me to tackle it myself as an addition to the Redux docs. I spent a couple months compiling a list of questions, digging up relevant discussions, and writing up FAQ entries. I finally submitted a PR for my work. Dan made a few comments, I tweaked things, and it finally got published.
Shortly after the FAQ was added, Dan added me to the ReactJS/Redux team on Github, giving me contributor permissions to the Redux-related repos. My Github Notifications page came alive with a steady stream of notices, and I quickly found myself playing housekeeper on incoming issues and comments. Since my existing contributions were doc-related, I tried to stay away from anything that involved making decisions on code changes, and focused on responding to incoming questions so Dan wouldn't have to worry about them. I also eventually helped set up an issue template for the Redux repos, to help redirect usage questions to Stack Overflow.
Meanwhile, I'd been at work on my own resources. As I kept answering questions, particularly in Reactiflux, I found myself wanting to point people to specific tutorials or articles on React and Redux that I'd read and found to be particularly good. I started pulling together a list of useful articles on various topics, and finally published my React/Redux links list as a Github repo. I began pasting the repo link everywhere in response to questions, and it started getting attention as a helpful resource. I also saw that numerous Redux-related libraries were popping up everywhere, and created a Redux addons catalog to try to list all of them in one place.
The only social media I'd ever seriously participated in was Reddit. Never had an interest in Twitter, and never did much with Facebook. However, I saw that Dan was very active on Twitter, and subscribed to an RSS feed of React devs on Twitter to follow some of their conversations. From there, I kept seeing discussions that I wanted to reply to (mostly cases where I wanted to throw in a link to one of my links lists). I finally gave in, joined Twitter, and sent out my first few reply tweets. Dan noticed I had joined, and sent out a tweet saying he was excited to see me on Twitter. Within half an hour, I had at least 100 followers - my first taste of the power of a tweet from Dan :)
One of the issues that popped up on the React Redux repo was a guy asking about some advanced use cases for the connect
function. After some discussion, he said something about "going off to write his own version of connect
", and I sort of dismissed him as another person who didn't really want to work with Redux's philosophy. But, he came back later saying he'd actually done the rewrite, and filed an issue to discuss the possibility of merging his version into the main library. I asked some questions, pushed him to add documentation and make some improvements, and eventually his persistence and hard work won me over as a cheerleader for his rewrite effort. The discussion turned into a pull request, and that PR is now the basis for a much-improved React-Redux@5.0-beta version. The credit completely goes to @jimbolla for the huge amount of time and effort he's put into this rewrite, but I'm happy to have played a part in shaping and improving the rewrite.
Finally, I've been working on a new addition to the Redux docs, on the topic of "Structuring Reducers". It's been intermittent progress over the last few months, but the first draft is done, and feedback so far on the issue and the PR have been encouraging. I'm hopeful it'll be another useful resource for Redux users.
As things stand at the moment: I'm certainly never going to be a widely-known name, like Dan Abramov, Kent C. Dodds, or Ryan Florence. But, I can definitely say that I've found my niche in the React/Redux community. I've helped hundreds of people on Reactiflux (and actually had the most messages there over the last year, by a wide margin); my React/Redux links list is closing in on 4K stars, and my Redux addons catalog has over 1K; and the documentation improvements I've made have helped answer numerous questions.
So, it's been a pretty crazy last year. I certainly never anticipated any of this stuff happening, but I'm glad it has.
That was obviously a pretty long and "me"-centric recap of things there, and I imagine anyone reading this is pretty bored by now (and if you actually got this far, congratulations, I guess?). If I had to make a point out of all this, it's that there's a lot of ways you can help answer questions in the programming world, and you don't have to be a complete expert to go answer someone's question.
I'd also like to thank everyone who's encouraged me in contributing. Dan Abramov, obviously, but a number of others as well. In particular, Max Stoiber has been a big encouragement and cheerleader for my efforts. Thanks!
This is a post in the Blogged Answers series. Other posts in this series:
- Aug 08, 2023 - Blogged Answers: My Experience Modernizing Packages to ESM
- Jul 06, 2022 - Blogged Answers: How I Estimate NPM Package Market Share (and how Redux usage compares to other libraries)
- Jun 22, 2021 - Blogged Answers: The Evolution of Redux Testing Approaches
- Jan 18, 2021 - Blogged Answers: Why React Context is Not a "State Management" Tool (and Why It Doesn't Replace Redux)
- Jun 21, 2020 - Blogged Answers: React Components, Reusability, and Abstraction
- May 17, 2020 - Blogged Answers: A (Mostly) Complete Guide to React Rendering Behavior
- May 12, 2020 - Blogged Answers: Why I Write
- Feb 22, 2020 - Blogged Answers: Why Redux Toolkit Uses Thunks for Async Logic
- Feb 22, 2020 - Blogged Answers: Coder vs Tech Lead - Balancing Roles
- Jan 19, 2020 - Blogged Answers: React, Redux, and Context Behavior
- Jan 01, 2020 - Blogged Answers: Years in Review, 2018-2019
- Jan 01, 2020 - Blogged Answers: Reasons to Use Thunks
- Jan 01, 2020 - Blogged Answers: A Comparison of Redux Batching Techniques
- Nov 26, 2019 - Blogged Answers: Learning and Using TypeScript as an App Dev and a Library Maintainer
- Jul 10, 2019 - Blogged Answers: Thoughts on React Hooks, Redux, and Separation of Concerns
- Jan 19, 2019 - Blogged Answers: Debugging Tips
- Mar 29, 2018 - Blogged Answers: Redux - Not Dead Yet!
- Dec 18, 2017 - Blogged Answers: Resources for Learning Redux
- Dec 18, 2017 - Blogged Answers: Resources for Learning React
- Aug 02, 2017 - Blogged Answers: Webpack HMR vs React-Hot-Loader
- Sep 14, 2016 - How I Got Here: My Journey Into the World of Redux and Open Source