I'm Learning Everything GraphQL in 2020
GraphQL is the latest API style on the block. It's a modern way for us to pull data out of your system (queries) and make changes to your system (mutations). I'm finally committing to learning everything GraphQL in 2020. In this article, I'll break down my personal learning roadmap.
If you've been writing code for at least 15 minutes, you've probably realized that the ability to learn is one of the most important skills you can possess as a developer.
Things change super quickly in our industry.
For example, I heard about this thing called GraphQL a couple of years ago when I built my first GatsbyJS site, I blinked (maybe two or three times), realized it was everywhere, and witnessed my friends building front-end applications faster than me (and apparently having more fun doing it as well).
This year, I joined Apollo, the company that builds the best tools for GraphQL developers, as a Developer Advocate.
I'm really excited about it because I've already been having a lot of fun creating helpful content on advanced TypeScript and Node.js for y'all over the past year.
To me, helping you learn and improve your skills is the most fulfilling and meaningful work I've ever done.
As an Apollo Developer Advocate, I'll be able to spend a lot more time interacting with community by creating apps, contributing to open source Apollo projects, making videos, blog posts, meeting with you in person and online in addition to rallying for you and being a direct line to our Apollo team.
That being said, I have a lot to learn.
I'm pretty much an Apollo noob. So this should be a TON of fun.
The first thing I always do whenever I start learning something new is to define what success looks like. After that, I work backwards.
What would I like to be able to comfortably do? What do I want to know?
- Minimize the total number of unknown unknowns about GraphQL and the developer ecosystem.
- Understand the timeline of major events related to GraphQL, tooling, trends, and adoption.
- Identify the major players in the GraphQL universe.
- Learn the Apollo platform and know it like the back of my hand.
- Understand the biggest pain points for developers using GraphQL today.
- Understand the current trends and where GraphQL is going in the future.
- Learn best practices in the following categories: Federation, Running GraphQL in Production (Apollo Server, Caching, Architecture), GraphQL Development Tools (Graph Manager), Apollo Client, Schema Design.
- Develop my own opinions on GraphQL project architectures and when is the most and least appropriate times to develop products with it.
What would I like to build?
When learning new programming concepts, I like to dive in by getting my hands dirty building real world applications with it.
I really like this approach because it forces me to run into errors and problems that you don't get simply watching videos or reading books, and debugging is where I have some of my biggest mental breakthroughs.
- Several smaller React (with Hooks) + Apollo applications in order to try out tooling (something fun and music-related).
- Incrementally migrate a large RESTful project to Apollo GraphQL. Perhaps DDDForum.com.
- Build an ambitious Domain-Driven Design-based GraphQL project with React, TypeScript, MySQL, and Sequelize using Apollo Federation.
- Deploy large and small GraphQL applications on various platforms like Heroku, AWS Lambda, Zeit Now, and Netlify.
- Try out different architectures, like Serverless GraphQL.
What would I like to teach/write about?
The last part of my learning is usually to teach it to someone else. If I can't comfortably explain it to a friend or write about it in a blog post, I probably don't know it well enough yet. That's how I like to force myself to retain concepts- by testing that I can teach it.
I'd love to write/speak/train about the following running list of topics:
- Best practices towards Enterprise GraphQL Architectures (Apollo GraphQL, Federation, Caching, and CQRS)
- Serverless GraphQL
- Comparisons between DDD and GraphQL
Choosing Learning Resources
In order to learn, I just pick a couple of resources that will be enough to get me started, and then piece things together by Googling when I get stuck. Here's where I'm thinking of starting.
Learning GraphQL: Declarative Data Fetching for Modern Web Apps
Apollo Fullstack Tutorial
Apollo has a pretty cool full stack tutorial that I plan on walking through to get familiar with how devs are building apps on the Apollo platform.
I'm also planning on helping migrate this to TypeScript :)
You know me. I like a set build a set of principles early on to decide if I'm going the direction that I believe I should be with my code.
Principled GraphQL is a neat little resource of principles on GraphQL usage.
Shopify's GraphQL Design Guide
I'm also planning on checking this one out. It seems to be a bit more low-level than Principled GraphQL, and it was recommended to me by a community member at GraphQL Summit 2019.
Read Shopify's GraphQL API Design Guide.
More free and paid stuff?
I recently asked Twitter to help me identify the best free and paid resources.
If I need anything else, I'll go to this thread :)
Should be fun!
Stay tuned for more content and subscribe to the newsletter if you want to get notifed when new stuff drops