Update: I'm Teaching Software Design & Architecture Full-time @ khalilstemmler.com

Last updated Apr 6th, 2022
Focusing all my efforts to teaching software developers how to write testable, flexible, maintainable code.

Well, everybody. The time has come.

March 31st, 2022 was my last day at Apollo GraphQL. After about 3 years, countless blog posts, 4 talks, 3 trips, I'm stepping away from my Apollo fam to focus on teaching devs how to write testable, flexible, maintainable code.

I'm going to miss the team; and while I believe that the supergraph is seriously the future, duty calls. I'm returning to focus primarily on my book, courses, blog, videos, and open source work.

Why I started this blog

I started this blog in 2019 after having successfully tanked the quality of the code for my own startup company called Univjobs.

Freshly graduated from university, I was surprised at how ill-prepared I actually was in the craft of software design.

Not knowing how to organize business logic, write tests, or write code in a way that it gets better instead of worse after time, I sought out answers. I decided that I was going to study, practice, and master the craft of software design.

Best hits

The most popular articles I've written from 2019-2021 are:


Documenting my learnings here on the blog and within solidbook.io (a guide to software design and architecture), over 2500 developers have purchased the book!

I've been blown away by the feedback I've received even though it's only about halfway done (and only a first draft)! Not only that, but the open source project we build in the book, DDDForum, has over 1200 stars and 240 forks.

Thank you everyone for your support, feedback, and PATIENCE - especially you early book readers. I appreciate you tremendously.

To mastery

β€œRule of thumb: The more important a call or action is to our soul's evolution, the more Resistance we will feel toward pursuing it.” ― Steven Pressfield, The War of Art: Winning the Inner Creative Battle

Complexity is chief antagonist of well-crafted software. A naturally occuring phenomenon, if we do nothing about it, it will only get worse. To you, the reader:

  • who is learning how to write code that fans the flame of complexity
  • who is thinking strategically about feature-development because you know that "just making it work" once != good code
  • who is learning how to use tests to gain consistency and reliability in their work

To you developers - you who feel the pull...

... where are we going?

To mastery.


Liked this? Sing it loud and proud πŸ‘¨β€πŸŽ€.


Commenting has been disabled for now. To ask questions and discuss this post, join the community.

Peter Lazar
a year ago

I've bought the solidbook and love it. Eagerly awaiting for the rest of it!

a year ago

Thank you for everything, Khalil.

Loved the book.

a year ago

Congrats for what you did!

What you wrote (are writting) is GOLD and make so much sense even for non junior developers!

I wish you the best for your new full time position, and hope it will make you happy and meet your expectations ;)

Keep going, cheers

a year ago

Thank you for your hard work! It's priceless for everyone, who wants to become better at software engineering

Stay in touch!

About the author

Khalil Stemmler,
Software Essentialist ⚑

I'm Khalil. I turn code-first developers into confident crafters without having to buy, read & digest hundreds of complex programming books. Using Software Essentialism, my philosophy of software design, I coach developers through boredom, impostor syndrome, and a lack of direction to master software design and architecture. Mastery though, is not the end goal. It is merely a step towards your Inward Pull.

View more in Life

You may also enjoy...

A few more related articles

Object Stereotypes
The six object stereotypes act as building blocks - stereotypical elements - of any design.
Non-Functional Requirements (with Examples)
Non-functional requirements are quality attributes that describe how the system should be. They judge the system as a whole based ...
Responsibility-Driven Design
Responsibility-Driven Design is the influential object-oriented design method that presents an effective way to turn requirements ...
What are Dependencies, Composition, Delegation, and Aggregation in Object-Oriented Programming?
The four principles of object-oriented programming (abstraction, inheritance, encapsulation, and polymorphism) are features that -...

Want to be notified when new content comes out?

Join 15000+ other Software Essentialists learning how to master The Essentials of software design and architecture.

Get updates