First a little background on my experience learning to use Cairngorm. My first exposure to Cairngorm was at a local Flex user group meeting. I did not go there specifically to learn about Cairngorm; that just happened to be the topic. During the meeting there was lots of discussion about the strengths and weaknesses of the framework, which of course made no sense to me since that was the first time I had even heard of it. But from what I was hearing there seemed to be a lot of people who were not that wild about it.
Some time later, Yakov Fain (who is well known in the Flex world; you can read his blog at http://flexblog.faratasystems.com/) was giving a talk to that same user group comparing several Flex frameworks, one of which was Cairngorm. His presentation featured a lot of good diagrams and the comparison made things a bit clearer, but I still had never done a project using Cairngorm and after all the negative things I had heard, I shied away from learning it.
It was not until I had started using Cairngorm that the criticisms made sense. This is not to say that I necessarily agree with all of them, but I could at least see where they were coming from. For this reason I specifically left this chapter until after you had completed the sample project. Having even that little experience (assuming this has been your only experience with Cairngorm) gives you something through which to filter the issues that we will be discussing in this chapter.