ColdFusion is not Java.
Maybe I just didn’t have the balls to be the first to say it. Derek’s post has inspired me and at risk of being flamed and hated (again), I want to go on record with my opinion.
Little background. About 3 months ago I got a side gig to create a web site for my friend’s company. Now I had a while to do this job since there was really no rush. During this time I was really drinking the kool-aid with all of the kewl frameworks and design pattern ideas out there and wanted to try to incorporate at least one of them into this project. At the time I figured that if I could utilize these it would make my life easier when it was time to start maintaining the code and added features.
With that I started looking and planning. I already had an code generator to handle the CRUD crap, so all I really needed was something to tie all my logic together. With that I looked at using an MVC framework since most are very mature frameworks and widely used.
So I download the framework and start playing and playing and researching and reading and posting to the forums. There were a lot of hurdles to get over and thankfully the framework’s community was extremely helpful and they really did guide me through the many pitfalls I got myself into.
However something didn’t feel right. Here I was now a month into the project and I was still struggling with all the framework’s logic and design patterns. All this stuff was really slowing me down, way down. I knew that it would take sometime to get the feel for everything but here I was 4 weeks into the project and had yet to complete the administrative backend to it. Now granted, I can only work at night for about 3 hours, but still, I should have been done with this thing by now, well at least the backend (Side note: please don’t bring up scaffolding. Hate to break it to ya, but scaffolding doesn’t fit the bill for everything).
I got really frustrated and decided to scrap the whole thing and threw it out the door and didn’t touch the project for the next 2 months, it went completely out of my mind.
Last Thursday my friend calls me and tell me that the project needs to be up and running on Monday. I panicked, I had totally forgotten about the project and literally I was starting from scratch. On Friday I came home and stared at blank screen for about 15 minutes and then finally said, “Fuck It!”. I checked my own little custom built framework from SVN that I’ve been using for the past 3 years and started coding.
24 hours later I was done. Totally done… backend, frontend, members section, it was all finished and ready for the client to look at. The whole site took me less than a weekend to do.
What was the point of that story? The point was to demonstrate how I got caught up in the latest and greatest design pattern hype and paid for it.
For so long I’ve been reading posts by people about using all this crazy crap to try to build a web site and I’ve been biting my tongue, saying to myself, “Are these people fucking nuts?”. Why is it that ColdFusion programmers feel the need that if we’re not using a MVC framework, IOC, Service Layers, Transfer Objects, Business Objects or the 15 million other design pattern ideas that you could throw into the mix, we’re doing our projects wrong and they’re destine to fail and be hard to maintain.
Why do we put ColdFusion in the same area as Java? Further even, what makes us think that we need or even should use the design patterns written for Java? I’ll tell you why, because you and I feel that since ColdFusion sits on top of Java, that ColdFusion is Java. We’ve been fed that bullshit for so long that we can’t stop believing it.
The design patterns that we’re all going crazy trying to utilize were written for enterprise level languages for a good reason. A lot of these enterprise level languages interface with many different systems and grab data from a variety of different places. As such Service Layers, IOC, Business Objects and numerous other design patterns were implemented because it does make it easier to manage and maintain. However that doesn’t mean that the web sites we write warrant the use of all or any of these ideas into it, nor should we feel that we have to be implementing these ideas into our web sites.
In closing, remember that ColdFusion was built to hide the complexities of the Java language and make it faster and easier for us to work with. Why are we trying to bring those complexities back in is anyone’s guess.