I’m at a bit of a juncture. I’ve been teaching high school science and programming for a few years, and now am switching to development and training. I’m trying to capture how what I know about teaching children translates to teaching adults, especially about programming.
I’ve been a big fan of what in education circles is called ‘backward design’. This is the idea of having an end goal in mind as you design your instruction. Having a clear concrete goal is extremely helpful in clarifying all the other parts. If the end goal doesn’t involve all 37 methods in a given class, then maybe that isn’t important enough to explain. Occasional detours are good and fun, but everything should really drive to your end goal.
Another technique I think is helpful is the idea of ‘learning objectives’. This is the idea of trying to state what you want students to be able to do at the end of the lesson or course. Do you want them to know when to use A vs B? How to scaffold a new project? Implement some technique? Again, the point here is clarity. This helps you think about what is and is not important. Then, as you go forward, teach what is important.