You don't need to learn the whole dictionary to start writing a good story.
The more you understand a particular domain, the harder it becomes to understand what it feels like to not understand that domain. The nuances, corner cases, and exceptions of the domain you've struggled with in the past now seem obvious and intuitive.
Knowing all this, how should we teach a concept new to others? Perhaps you've found a new technology you'd like to share with other developers in your team. Or perhaps you're giving a talk for a local meetup group. Surely you need to cover all 100% of topic XYZ, alongside its edge cases from the start? Isn't it the intellectually honest thing to do?
XYZ can be any abstract concept - PAXOS, the actor model, monads, blockchain, etc.
Teaching 100% of most anything from the get-go is likely counterproductive to learning. This may be why experts don't automatically make great teachers. It's hard to empathize when we can't even remember how we were when we just started.
When we learn something new, a solid foundation of facts is what we look for. It doesn't matter that it's only a general rule, because they provide a base upon which we build our knowledge in the domain. Introduce too many exceptions, and everything falls apart.
It's really hard to process both the rules and the exceptions at the same time.
This idea is known as lies-to-children: the necessarily simplified stories we tell children and students as a foundation for understanding so that eventually they can discover that they are not, in fact, true.
Skip edge cases early on, if it makes your knowledge base more stable. When we distill a complex topic into a simpler subset of rules, it gives someone who is just starting out needed time to gradually piece together the whole story.
Teaching isn't just about parroting what we know. Start people on a happy path and they will embark on their own journeys.