19 May 25
Fascination Street #14
Writing for the week of May 19, 2025
Quote borrowed from James Clear’s newsletter:
“The person who learns the most in any classroom is the teacher. If you really want to learn a topic, then “teach” it. Write a book. Teach a class. Build a product. Start a company. The act of making something will force you to learn more deeply than reading ever will.“
The last two weeks I have been helping onboard an engineer onto our event-sourced CQRS system. In the process of “teaching” it, I broke down a similar task into the various parts of the system, identifying the boundaries. In this case, it was the API endpoint, the command, the command handler, the event, the event handler, etc….
Breaking it down resulted in small PRs that not only displayed the parts of the system to the new engineer but also helped me understand some boundaries that I didn’t know existed. Or at least didn’t know how they were implemented. Like the quote above, teaching it helped me learn the topic better.
In the process, I introduced two test patterns that leverage the idea of factories. We can now construct users with JWTs and associate them with organizations while testing API calls. This allows us to abstract away the foundational pieces of the API, like authentication and authorization, and focus on the task(s) at hand in the API endpoint.
This system is in Rust. Adding unit tests was relatively easy. The integration tests I mentioned above were more involved. Now that we have them, though, we should be able to add endpoints faster and with greater confidence. But the real reason was to teach the purpose of the API endpoint to the new engineer who was being onboarded.
Onboarding can be difficult, but it can also be a teachable moment. During those moments, I bet that the senior-most people can still learn something now. This experience has played out many times in my career. I’m a Maven according to the Sparketype test. I like to learn. I think most senior people miss this aspect of onboarding new engineers. It’s seen as a task, and we hurry through those tasks so we can get back to our other responsibilities. If you are reading this, hopefully, you can be mindful of the learning aspects next time. I will.
▧ ▧ ▧
Links
- https://martinfowler.com/tags/event architectures.html - I’ve been on multiple teams that pass these links around frequently. I specifically like the “what do you mean by event driven” post.
- https://www.youtube.com/watch?v=P62w53FP1JQ - good video on various AI plugins for Neovim. We limit what can be used at work, so I’m working through my Copilot setup.
▧ ▧ ▧
Music
- https://music.apple.com/us/album/get-ready/282971689 - in preparation of seeing Peter Hook play this album next week, I’ve been relistening. I’ve always liked this album, although some do not.
▧ ▧ ▧
A couple of promotions each week. First, use my invite link to try Warp as your terminal. It’s fast and has some great features. I’m not affiliated with them at all, just really like it. Also, check out my project–Schemabook, especially if you work in an organization that wants to get organized around defining data through contracts and collaboration. Lastly, I’m writing a book about learning Rust if you are familiar with Ruby. Stay tuned. As always, you can connect with me more at https://mikekrisher.com.