Whether you've had a great 2018 or not, I think it's important to look back and reflect on your accomplishments for the year. You've probably done more than you think you have. In this post, I'm going to share with you some of my professional (and unprofessional) accomplishments of which I'm particularly proud and give a few hints as to what I'm planning for 2019 (which is actually mostly a secret and surprise 😃).
Note: I don't want to bother with trying to sort these in any particular order, so... they're not in any particular order...
React Testing Library
This year I created and introduced React Testing Library. It has grown a lot since then. The spectrum community has over 300 members now. We've really had a whole lot of love... like, a lot of sweet tweets of appreciation (Dan even called it "not bad"). Shout out to Ryan Florence for the name and Michał Pierzchała for making react-native-testing-library.
I'm super proud of what we've accomplished here. The React Testing Library all contributors table lists 63 awesome people, and the DOM Testing Library all contributors table lists 46 (many repeats, but not all). These people are amazing and I really appreciate what they've done. I don't want to leave anyone out, but I would like to give a special shout out to these folks: Giorgio, Alex Krolick, Ivan Babak, Ernesto García, and Łukasz Gandecki.
Creating this open source software and the community of awesome people that has been built around it is probably one of my finest accomplishments of 2019. If you'd like to hear more about how this software came to be, you can watch S05E12 Modern Web Podcast - Testing or listen to RRU 043: Testing React Apps Without Testing Implementation Details with Kent C. Dodds.
National Novel Writing Month
Of all non-professional things I've done this year, I'm most proud of this one. If you didn't know, I wrote a 50,000 word novel in the month of November for NaNoWriMo. This was the first year I tried and I WON!
Back in August, I decided I wanted to become better at storytelling because my kids are always asking me to tell them stories and I wasn't very good at it. Something reminded me of my friend in college who had written a novel in one month for NaNoWriMo. I had been listening to a LOT of Brandon Sanderson recently (more on this later) and decided to try writing my own Sanderson-style fantasy novel.
I spent the next few months preparing. I listened to the entire story grid podcast, four seasons of the writing excuses podcast (they have a lot of seasons), I talked through the story, characters, magic, and more with my wife and she gave me some brilliant ideas, I made an in depth outline and took notes (workflowy is awesome by the way), and helped inspire the creation of DevsWhoWrite discord where I joined several other awesome devs who... well... write 😉 (feel free to join us!).
The end result is Shurlan. I'm super proud of it and still working on editing to prepare it for publication! Here's a little summary:
The Immortal family has ruled Shurlan for thousands of years. Thanks to their wisdom, the perfect society has been formed and peace and plenty graces Shurlan. But when the food allotments start to dwindle, a rebellion begins, and only those with secret magic abilities can stop them.
Kyana, an extremely skilled gravity displacer (known as a drifter) is chosen by Lord Talmar of the Immortal family to do the impossible task of recruiting non-displacers and training them to learn a displacement skill. They need to find and stop the rebellion before they steal the harvest and their families starve.
This is a hard fantasy novel. That means that the magic system and world are intended to be rational and knowable (it's also really cool). It's also juvenile fantasy, which means it's an enjoyable read for adults and kids alike (think Harry Potter).
What I think makes this book special is the message I'm trying to communicate, the world I've created, the characters, and the magic system.
I've totally immersed myself in this world and the world of writing. I'm planning on attending writing conferences this year to do some networking and improving my craft. I'm looking forward to November 2019 when I'll write book 2 in the Shurlan series. I have the concept for 4 series (3 books each) in this world. Feeling determined :)
TestingJavaScript.com
This was a HUGE effort by me and the good folks at egghead.io. It's the equivalent of 7 full sized egghead.io courses + 9 podcast episodes. It was a TON of work and people LOVE it. So I'm really happy with this.
paypal-scripts
I started this project in August of 2017, but most of the work was done in 2018. It's basically a single tool that consolidates a bunch of other tools common to PayPal projects (both applications and reusable modules published to our internal npm registry). Think of it like create-react-app's react-scripts, or ember-cli, or angular-cli. But it does a lot more than just the build/tests. Here are all the available scripts as of today:
build
clean
dev
format
gh-pages
lint
pre-commit
release
remark
test
typecheck
validate
It would take another blog post to explain what these all do and how it does them. But suffice it to say, this was a herculean effort that took most of my time at work this year.
One huge accomplishment around paypal-scripts was in the last month I decided to
adopt TypeScript (that's a blog post for another time) and I was heads down
updating all the tools to work with .ts
and .tsx
files.
What makes this project such a big deal is that it's very soon to be the basis of the default template project at PayPal we have called the "sample-app." Every new app started at PayPal is basically a fork of this "sample-app." So because of the work that I and others have done, every new app at PayPal will be written in TypeScript, use Jest, React, React Testing Library, emotion, webpack, babel, prettier, and eslint. And what makes it better is those apps wont have to worry about keeping those tools up to date saving dozens of developer hours a year PER PROJECT. I'm really proud of this accomplishment.
(Before you ask, this will not be open sourced, it's too PayPal specific, but you might be interested in forking kcd-scripts).
PayPal.me rewrite
At the beginning of the year, PayPal decided to make some significant changes to parts of the experience and that had a big impact on how PayPal.me was supposed to work. The original implementation would be hard to upgrade incrementally and the app is pretty simple anyway, so we decided to do a complete rewrite. We used paypal-scripts for all the tooling (it was the first major production app to do so) and we were able to get the tooling side of things done without much configuration or wiring together tools of any kind (I had to make quite a few adjustments to paypal-scripts though 😅 but it's good now I promise). That was an awesome experience for paypal-scripts and I'm really excited to see the experience for everyone else at PayPal as adoption increases.
Building the app was great. We ended up using
unstated for state management and
we're pretty happy with it. We used
glamorous (decided that before deciding
to deprecate glamorous, we'll be moving to emotion eventually). The backend was
GraphQL (huge thanks to Arnab Banik who did
most of the work there). It's a pretty simple app, so we're not using Apollo or
anything, just
graphql-request
and that
worked well for our needs.
Anyway, really happy with how that turned out :)
Open Source
Aside from creating React Testing Library (and DOM Testing Library) this year, there are a few other accomplishments I had this year/useless numbers in the realm of Open Source that I'd like to mention. Here are a few numbers:
- Hit 500 repos (most of them are nonsense, I do have over 100 published npm packages though, so there's that).
- Added
babel-plugin-macros
tocreate-react-app
and it was added to gatsby. There are over 200 dependents published on npm! - I opened 134 issues
- I created 86 PRs (73 were merged)
- I reviewed 802 PRs... WOW. 🤯
- I deprecated glamorous in favor of emotion.sh
- Published v2 and v3 of downshift.
- There are now
over 2k
.all-contributorsrc
files on GitHub 😱 - All in all, I had 2,337 GitHub contributions in the last year.
My YouTube Channel
This was the year I decided to do week-daily livestreams on my YouTube channel: Dev Tips with Kent. I've got over 100 videos on the dev tips playlist. Some of them are longer than others, some of them are more coherent than others, but altogether they represent a great resource for people to learn things from JavaScript to testing to React to Babel to more and more :)
I also have a playlist called Talks and workshops from Kent C. Dodds with over 60 videos. More on this later.
Altogether, this year I've really been pushing content onto YouTube and hit over 10k subscribers. My videos got over 260k views this year (I am of course excluding my smiley face video which was stolen and has 3.7 million views now).
Conferences
I gave a lot of talks this year, you can find all the available recordings on my YouTube playlist. I spoke at 7 conferences and several meetups. I was especially proud to deliver my first keynote at Chain React which was awesome.
I gave a similar talk at React Rally which is my favorite conference and has been a dream of mine since year one.
I try to avoid traveling to conferences, so most of the conferences I spoke at were either local or remote. I did travel to San Antonio for Assert.js and Portland for Chain React. The only other travel I did this year was to PayPal offices to give workshops/trainings in San Jose and Austin, TX.
Other
Here are some other interesting facts/accomplishments from 2018:
- I read the Book of Mormon again.
- Twitter: I went from 25k followers to almost 50k.
- Newsletter: I went from less than 5k subscribers to over 10k.
- Brandon Sanderson: I listened to almost 30 DAYS worth of time of Brandon Sanderson fantasy novels in 2018. I listen at 2.9x speed, so it amounts to ~10 days of time, but still. I've filled my ears with his words this year!
- I posted 62 new blog posts on my blog on subjects around JavaScript, Testing, React, as well as career advice.
- In 2018, I spent most of my course time on testingjavascript.com, but I did manage to make a complete update to Advanced React Component Patterns and make Simplify React Apps with React Hooks as well as Hooks & Suspense Playlist. I don't have easy access to stats, but in last night's egghead stats email people watched ~26 hours of my content yesterday and that's pretty typical. I think that's pretty neat!
- Back in April, I made a trip to Minneapolis to record workshops for Frontend Masters. We made three (almost four) courses out of that trip: Advanced React Patterns, Testing React Applications, v2, and JavaScript Testing Practices and Principles. I'm really happy about how those turned out!
- For the first part of the year, Ryan Florence made Workshop.me. I gave 5 workshops (two on testing, two on advanced react, and one on beginning react) through workshop.me and it was awesome (though short-lived).
- I gave 4 other workshops this year all of which you can find on my YouTube playlist.
What's next in 2019
I'm really excited about plans I have for 2019. I'm not going to give away all my surprises, but here are a few things:
- I'm turning my 3 minutes with Kent podcast into a week-daily Q&A. Give it a look, subscribe, and ask your own question on my AMA: kcd.im/ama
- I'm revamping my website using Gatsby and a bunch of other cool tools. I'll definitely blog about it. I'm actually kinda excited about it :) I'll also be moving my blog from Medium to my website with gatsby and hopefully automate more parts of this newsletter stuff :)
- Remember TestingJavaScript.com? How would you like something like that for learning React? But even bigger? From total beginner to JS to total React professional? This is going to be enormous.
- I avoid traveling as much as possible, but I want to give more workshops this year than I gave last year. So I'm going to do online workshops. There are a lot of benefits to remote workshops. I've done it and I know how to make up for the difficulties of not being there in person. You're going to want to take advantage of these!
- At PayPal, I'm working on a component library. I imagine there are some opportunities to open source the generic stuff (HOOKS!)
- I'm scheduled to speak and give workshops at React Amsterdam in April! See you there? I have at least one other conference that I'll probably be speaking at soon as well. I expect I'll be speaking a lot around here in Utah as well.
- I have about 15 fantasy novels in mind for the Shurlan Universe. I'm definitely planning on writing one each year in November and working throughout the year to get each published. I'm feeling pretty optimistic and motivated about this whole novel writing stuff :)
Conclusion
I hope you take the opportunity to look back at your year and see what you've accomplished. Then make some goals to become even better than you are now.
"There is nothing noble in being superior to your fellow man; true nobility is being superior to your former self." ― Ernest Hemingway
I wish you the very best and happiest New Year!