✨ Live: Black Friday Sale for The Software Essentialist - Ends in 6 days.
When I was first starting out, I kept feeling like I was missing something fundamental. Even after university… even after working professionally… there was still this gap no one was talking about.
Everyone was teaching frameworks and libraries. But almost no one was teaching how to think — how to design systems from first principles, how to architect clean software, how to test intelligently, how to build something you're actually proud of.
So I spent the next several years trying to piece it all together. Books, papers, articles, endless experiments, breaking my own code, rebuilding it, seeking mentors, coaching developers 1 on 1, and eventually discovering the mental models that actually matter.
That's why I created The Software Essentialist. I wanted to build the last programming course you'll ever need — so you can stop hunting through random tutorials and finally master the craft.
For the first time since launching it, I'm doing something I rarely do:
I'm opening the doors with a Black Friday offer that won't return for at least another year.
This is the course I spent years building — the same one hundreds of developers have used to:
- break out of "expert junior developer" purgatory
- jump from junior → senior
- build cleaner, more scalable systems
- design with clarity instead of chaos
- and even start their own SaaS companies (seriously)
Inside, you'll go through a 12-week, self-paced, hands-on curriculum broken into 5 Phases, where you'll learn how to apply the 12 Essentials of testing, design, and architecture — the deeper patterns behind TDD, BDD, DDD, and clean design that stay relevant no matter what language or framework you use.
If you want to sharpen your thinking, level up your craft, and finally step into senior-level clarity… now's the time.
✨ Get 30% off before Dec 1st
(Black Friday — once a year.)
Learn more about the course here.
To your craftship,
Khalil
I'm Learning Everything GraphQL in 2020

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.
Defining success
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
This book by Eve Porcello and Alex Banks was recently recommended to me by my peers. Looks like a good starting point.
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 :)
Principled GraphQL
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 🎤.
✨ Live: Black Friday Sale for The Software Essentialist - Ends in 6 days.
When I was first starting out, I kept feeling like I was missing something fundamental. Even after university… even after working professionally… there was still this gap no one was talking about.
Everyone was teaching frameworks and libraries. But almost no one was teaching how to think — how to design systems from first principles, how to architect clean software, how to test intelligently, how to build something you're actually proud of.
So I spent the next several years trying to piece it all together. Books, papers, articles, endless experiments, breaking my own code, rebuilding it, seeking mentors, coaching developers 1 on 1, and eventually discovering the mental models that actually matter.
That's why I created The Software Essentialist. I wanted to build the last programming course you'll ever need — so you can stop hunting through random tutorials and finally master the craft.
For the first time since launching it, I'm doing something I rarely do:
I'm opening the doors with a Black Friday offer that won't return for at least another year.
This is the course I spent years building — the same one hundreds of developers have used to:
- break out of "expert junior developer" purgatory
- jump from junior → senior
- build cleaner, more scalable systems
- design with clarity instead of chaos
- and even start their own SaaS companies (seriously)
Inside, you'll go through a 12-week, self-paced, hands-on curriculum broken into 5 Phases, where you'll learn how to apply the 12 Essentials of testing, design, and architecture — the deeper patterns behind TDD, BDD, DDD, and clean design that stay relevant no matter what language or framework you use.
If you want to sharpen your thinking, level up your craft, and finally step into senior-level clarity… now's the time.
✨ Get 30% off before Dec 1st
(Black Friday — once a year.)
Learn more about the course here.
To your craftship,
Khalil
Stay in touch!
Join 20000+ value-creating Software Essentialists getting actionable advice on how to master what matters each week. 🖖
View more in GraphQL