Let me start this entry with a clear statement.

I have no problem with frameworks, as a rule. If asked to use one for a project, I would do so without complaint. But if given a choice, I will use my own time-tested processes instead.

Okay, now onto the rest of the entry.

Last night I got into a twitter discussion with someone who is clearly an evangelist of CFML frameworks. His position is that anyone not using a framework is, in his exact words, "crazy". I greatly differ with that opinion, and it broke down pretty quickly when he was confronted with someone with a dissenting opinion. I offered him to contact me outside of Twitter to continue, but he has not responded. So consider this my response.

I have spent the majority of my 15 years using CFML not using frameworks. The last 8 years I have been part of a team that has put together a very solid set of coding standards for our development team, with a few rules (backend work in components, putting stored variables in the proper location for their intent, etc.) and with that we have turned out multiple applications for the Department of Education that are stable, fast, promote code reuse, and scalable. The biggest proof in our processes are that when new developers join our team, there is little in the way of a learning curve to do things "our way".

In my free time, I have tried out three different frameworks: FW/1, Fusebox, and Mach-II. All were fine. None of them wowed me in any way that made me think I should propose getting away from our processes and use a framework instead. A framework is an organization tool, nothing more and nothing less. It defines rules for how one must code. It sets up boundaries. It may even limit creative freedom (that's just a gut feeling on my part). They are useful, especially for a disorganized team or a junior level developer making their way into the CFML world.

It is not, however, the end-all, be all. I have seen both sides of this argument, and in the end I say what I have always said: It doesn't matter what tools you use to code, only one thing matters - the people developing the code. A great developer not only knows what can be done, they also must know when the right time to use it is. There are great developers that use frameworks religiously. There are also great developers that do not.

Now for the bigger issue at hand. Frameworks biggest problem right now is their supporters. These people range from supporters to evangelists to outright zealots. And the problem with them is that most of them get belligerent when you don't fall into complete agreement with them. Their weapon of choice is to attack or put down people once they realize the person they are talking to doesn't fall in line with them. And that's sad. It also builds a level of resentment that is unnecessary.

So here's a tip to them: if you want to convince people to come to your side of thinking, use logic instead of putdowns. And realize that what works well for you is not going to work well for everyone, and that's okay. In the end, there will always be a human element to software design and that means that there is no one right way to do things. That's a GOOD thing, too.