It's election day here in the United States. Perhaps it is in that spirit of change that I write this post. More likely it is a rant in frustration to developments I am seeing within the Flex community, but here it goes.
Here is my fundamental assertion: Anyone who thinks that every problem can be solved in the exact same way is someone you should ignore. Problems are unique and hence solutions need to be unique.
Within the Flex community it is popular to either be pro or anti Cairngorm. I myself have pointed out frustrations with it in the past, but I would like to take a broader point here as this post is not about technology, it is about people.
Cairngorm is a way to solve a problem. Actually, it is a good way to solve a very specific problem. The issue is that it is not the best way to solve every problem. I have no issue with Cairngorm but I do have a problem with Cairngorm evangelists.
I have worked on many projects where Cairngorm is an appropriate solution and I have found no desire to remove it, but I have also worked on a plethora of projects where it is the wrong solution. Unfortunately, many times this technology decision persists to the detriment of the project.
Since some of you aren't you going to believe that there is a project where Cairngorm isn't the right solution, let me provide an example.
We have a new client attempting to develop a component framework (effectively an extension of Flex). Those components will be reused by other customers in the field to build applications. They were trying to use Cairngorm to build their component framework, meaning they were calling Cairngorm events from inside of List controls, etc. This is not the right use for Cairngorm, yet they are adamant to continue. Why? Well, because Adobe said so.
<EDIT> When I say "Adobe said so" in the previous paragraph, I am not attempting to say that they declared to this customer a specific engineering solution. My point is more about how the collection of Adobe's offerings and words are perceived by people learning Flex. Sorry for any miscommunication on that point. </EDIT>
At WebDU earlier this year Robin Hilliard of Rocket Boots asked me, 'why is it the world versus Cairngorm.' I answered at the time that Adobe advocates it so strongly, but I didn't really have an eloquent answer. I do think the answer it correct. Right now, the only 'advanced' Flex curriculum from Adobe is about Cairngorm. The only framework I can find mentioned on Adobe's site is Cairngorm. Peter Martin of Adobe Consulting announced a Cairngorm plugin for Flex Builder, and Adobe consulting was kind enough to tell this client that every single Adobe consulting customer uses Cairngorm and given their wild success, it is clearly the right way to go.
Wrapped up in that final statement is my core issue: First, unless you truly understand the problem a customer is facing you can't possibly recommend a solution. At least you can't do so and still call yourself an engineer in my book. However, does anyone truly believe that Cairngorm was the perfect solution to every single problem ever encountered? That there was never a better approach to be had? I personally have trouble with that.
I have had this discussion with others in the Flex community and likely used this analogy but here it is again for good measure. Software is a strange version of reality. In the real world you might admire a beautiful piece of sculpture. It is unlikely that your opinion of it would change drastically when you learned the brand of chisel used to create it. In the software world, I hear this ridiculousness all the time. The tool used has become more important than the end result. That is sad.
I know this post sounds like a bashing of Cairngorm and the people who use it. This is not my intent. I have a lot of respect for a lot of these people. The point of this post is simple. Problems require solutions. Sometimes you can start with an existing framework and work from there. There are several valid ones in the Flex world, but if you close your mind to possibilities outside of a single choice, you are harming yourself and the project.
Rant complete,
Michael "MVC isn't always the right solution" Labriola