I would like to begin with the statement that I am not against the use of frameworks, if they work for you, that's great. However, I do get the feeling that there are people out there that think less of programmers that don't use frameworks. Admittedly, there are probably a significant number of ColdFusion programmers out there that don't use frameworks because perhaps they don't grasp the architecture of the framework, or they get scared off by all the big words that framework enthusiasts are so fond of, or they are just never have time to do the research to find out what the frameworks have to offer.
However, there are probably also a plenty of people like myself, who understand Object Oriented Programming (OOP), Aspect Oriented Programming (AOP), Model-view-controller (MVC) architecture, etc, and have spent time evaluating various frameworks, but still decided not to use them some reason or another. I personally have always employed a MVC architecture to any application that I build from scratch. I keep my code well organized, and anyone who understands MVC concepts would have very little trouble figuring out my code.
A couple years ago, I looked at Fusebox, and Model-Glue, and I decided that I liked certain aspects of them, but neither one was what I needed for the particular application I was developing. I decided instead to employ my own MVC architecture and it worked out great. The code runs super fast, it scales, is easily maintainable, and my client is happy.
Yesterday, in effort to be a "better" programmer, I re-evaluated Model-Glue. I installed ColdSpring and Mode-Glue on my test server, and I followed start up tutorials and developed the pig latin translator application.
I then decided to build the same Pig-Latin translator application using my normal MVC architecture.
In the attached zip file (click the download link below), you will find 2 folders. In the "translator" folder you will find the model-glue version of the application, in the "translator2" folder you will see how I programmed the same application using my normal architecture. Basically the way I do things is that all requests go to /index.cfm, then I use application.cfc onRequestStart and onRequest methods to run interference and determine the action/event that is occurring. It then calls the appropriate controller CFC. The controller interacts with the CFC's in the model folder as necessary, and determines which views need to be used to display the response to the user.
For this particular application everything is fairly simplistic but it can be built upon for more complicated applications. I have left several comments in my code to kind explain how I do things. In application.cfc, instead of just deleting all the unneeded functions, I commented them out with hints as to how I would use them in different situations.
Also, I updated the Pig-Latin translator CFC in the translator2 model folder so that it can actually translate phrases instead of just one word.
I think that frameworks definitely have a valid purpose, and are extremely useful when there are a lot of developers involved in a project. It is easier for everyone to work together when they all program the same way. I think that they can be helpful to people who may not have a good idea yet on how to organize their code on their own. It definitely makes the code easier for other developers to come along after your gone and maintain your code as long as they are familiar with the framework you employed.
However, I feel that my application architecture is just as organized and just as maintainable as it would be if I used a framework. I think that anyone who could maintain code written in any of the major frameworks, can just as easily maintain my code too. On the same token there is not a single framework out there that I could not figure out and start using within a few weeks. My application architecture follows the same basic principles as most of the popular frameworks use, but I don't have to have a bunch of processing that my application doesn't need.
So, I want to hear your thoughts... am I not as good as you because I choose not to use frameworks? If I choose to make my next three applications in Fusebox, Model-Glue, and Mach-II, despite the fact that it will probably take me a lot longer, will I be a better programmer in your opinion?
If I take my typical MVC application architecture, document it, create a website, start a steering committee, and write a book on how to do things my way, will I then be a better developer because I use a framework?