My journey into breaking my perceptions of frameworks as cumbersome, and my experience with the Ortus Solutions ColdBox training.
- The first part of this series will be my history and thoughts on frameworks in general.
- The second part will be my experience in attending Ortus Solutions “ColdBox, Zero to Hero” training as instructed by Gavin Pickin.
- The third part of the series will be written after the training itself as a follow up to changes in my impressions of ColdBox and frameworks in general.
My thoughts on Frameworks
I think it helps to understand where I’m coming from when I speak about development frameworks. Conceptually, I appreciate the idea of a framework; create a common set of standards and ways to build an application that make development easier and allow other developers working on it who understand the same framework to pick it up quickly. That makes sense. I recognize that a framework comes with a set of rules which, when followed, can streamline development further than ColdFusion already does.
In practice though, I have traditionally found a framework to be cumbersome. Forcing a user to develop an application in a certain way takes away some of the liberties that a developer may need to have available to them in order to make things work. There are sometimes layers and layers of obfuscation in the code and finding where the magic happens can seem like a chore. I’ve spent literally hours in discovery on a project simply trying to figure out how it’s working based on the abstraction that the framework imposes. On top of that, most of the applications I used to build in the early days were more along the lines of “adding functionality to a website” rather than developing an application. You don’t need a full-blown framework to build an action page for a form that <cfmail>’s the form to the business.
That being said, I have borrowed concepts from various frameworks throughout the years and, when building an application myself, tend to use my homegrown development methodologies instead of a framework. I know full well there are pros and cons to this approach. In an effort to grow, I recently signed up for Ortus Solutions “ColdBox, Zero to Hero” training. Clearly my homegrown framework is fine if I’m the only developer working on a project, but more and more often, I’m not the only developer. And I don’t want another developer to have to scratch their head wondering why I built things the way I built them. I’m going to give frameworks a college try and see if my impressions on them change.
Back in the Day…
I’ve been developing ColdFusion based applications since 1999 and I’ve come across applications built in almost every single ColdFusion framework since then. In the early 2000’s, the first widely popular framework for ColdFusion Development I used was Fusebox. Fusebox (1) was a nice, simple framework and had some interesting concepts built into it, like appending the form and URL variables into the request scope so that variables passed to a page could be found regardless of whether they were posted or as part of the query string. Great idea at the time… and one of the concepts I copied into my own homegrown methodology of building applications. Later versions of Fusebox became more and more complicated and cumbersome.
Then came some others, like Mach II and Model/Glue. These seemed overblown in comparison and very, very complex. I used to describe them as “sandblasting a soup cracker” when it comes to (over) building applications. The earlier versions of Coldbox came along, as well as CF Wheels and Framework One (FW/1) which all took similar, but unique approaches to applying a framework to an application. They all had strengths and weaknesses and, in my estimation, none stood head and shoulders above the others. Frameworks still seemed to be cumbersome ways to add convention to application development. Sometimes a little process is necessary depending on the size of the application, but more often than not, it seemed like overkill.
What’s Out There Now
Recently, I’ve come across three primary frameworks that are still active. By active, I mean that there are applications currently being developed using these frameworks. In order of popularity these are ColdBox, FW/1, and CF Wheels. (And frankly, CF Wheels applications are coming further and further apart.) I’m choosing ColdBox as my framework of choice to really take a run at framework based development.
I’ve gone to CF Summit in Las Vegas since it’s inception and I’ve attended several of Luis Majano’s presentations on ColdBox and other aspects of development.
I love and hate Luis. He’s brilliant. And he makes me feel stupid. He explains things so well. And he loses me every single time. He’s like a greyhound. Sure, you can run and you might keep pace with him for a few seconds, but when that dog wants to run, he’s going to leave you with a vapor trail. In fact here’s my lifecycle of every seminar I’ve attended that has been presented by Luis Majano:
- In the beginning I’m following along. I understand and have experience with the things he’s talking about.
- Now he’s jumping ahead a little… he’s talking about some things I’m not very familiar with, so I’m trying to catch up and process what he’s saying.
- Okay… now he’s very far out ahead of me, and assuming that what he’s talking about are things that everyone knows inside and out.
- I’m lost. I’m still trying to process something he said 10 minutes ago and I have no clue how he got from that point to where he is now.
- I give up. I’m just going to listen to him speak instead of trying to absorb what he’s saying.
And when I say this, I mean absolutely no offense to Luis! He is a good man and a brilliant developer. I think that when a person gets that close to the underpinnings of how a framework operates that it becomes difficult to talk to a layman without overpowering them with your technical prowess.
Now fortunately for me, this course is being presented by Gavin Pickin, so I feel like I have hope not to be blown away with the speed that the information is going to be presented. On top of that, this course takes place over two days, so the level of detail I am expecting is much greater than what a one-hour presentation at a conference could ever provide. I’m going to be very disappointed if I spent nine hundred bucks on training and I’m the slowest one in the class. Maybe I’m just stupid. We’ll see.
So there’s your preamble. I’ve documented how I feel about frameworks in order to see how things go and if my perceptions change.
Wish me luck… I’m going to go from ColdBox Zero to Hero!