Recently I've seen some debate over the best way to teach Scrum. The "traditional" approach is to teach the Scrum framework to the team, then let the forcing functions in Scrum lead the team to agile software development techniques. A second approach gaining support is to teach core agile development techniques (such as ATDD/BTDD, agile architecture, etc.) and then teach just enough Scrum to support those techniques.
Which is the best approach?
We need to first answer a predecessor question: Why are we teaching Scrum?
The typical answer is something like, "We want to be more agile." When I start poking on that question, I often find what they're really saying is, "I want to get the team to the current state-of-the-art software development practices as quickly and cheaply as possible." If this is your goal, I think it does make more sense to teach agile practices first. It will get you to this end state much quicker than forcing the team to figure it out one practice at a time, which is what a Scrum-first approach can lead to.
I answer the question differently, however: "I want people to think about how they work as something they can control, and something that should be studied and improved." My goal is to teach a new way of thinking. I want the team to consider how they work, and how they could work better. I want them to learn to constantly be looking for new techniques and how they might be integrated with how they currently work. I want them to learn to adapt what works and change what doesn't, even if the result looks different than the book answer.
With this view, the traditional Scrum approach holds a certain appeal. I'm not convinced it's the best approach, however. Just teaching the framework often leads to a state where the team simply gets stuck, frustrated with the framework but with no way forward. I am convinced, however, that the technique-led approach will work against this goal. That effectively does the research and implemention of best practices for them, which they will struggle to transcend.
So which is the best approach? What's your goal?