East Bay CFUG – Overcoming Objections to Using Frameworks
Just got back from our 2nd East Bay CFUG meeting at our new location (New Horizons Computer Learning Center in Pleasanton, CA), and couldn’t be happier with the way the meeting went.
My goal with the group is to break away from what I’ve seen to be the traditional model of people showing up, a speaker speaks for an hour or so (while most people are texting or surfing on their laptops), swag is given out, and everybody goes home.
What I’m shooting for is to engage the audience. To hold interactive, collaborative meetings. Some might be small code challenges where everybody takes a few minutes to solve a particular problem, then shares their solution with the group. Others might be an open discussion on a given topic. Yet others might be hands-on labs to teach a particular technology.
Tonight’s meeting was an open discussion on “Why Use a Framework?”. Similar to a presentation that Terry Ryan used to give (“Selling ColdFusion in a Hostile Environment”), the goal of tonight was to throw out a few common objections to using frameworks, and then discuss some possible responses.
I’m pleased to say that everybody in attendance seemed to be engaged, entertained, and genuinely interested in the topic. There was a lot of good discussion on all of the points that were introduced.
The nature of the meeting didn’t lend itself well to a Connect presentation, but we did capture the audio of the entire meeting in mp3 format. There were some slides that I used to introduce each individual discussion point, but they didn’t translate well from Keynote. The slides have been posted to SlideSix.com.
The main points from the slides were:
- Frameworks are unnecessary. I already write code without them. Why should I learn a new way to do what I already know how to do?
- Frameworks add an additional level of complexity. Why should I make my code more complicated?
- It’s hard enough to find a (good) ColdFusion developer. If I commit to “Framework X”, now in addition to finding a ColdFusion developer, I need to find one that knows “Framework X”.
- You can’t write good code without a framework. All code written in a framework is awesome.
Yes, the last one was a joke, but like the rest, it’s something I’ve heard enough that I wanted to dispel it as a myth.
In the audio you’ll hear commentary by Sean Corfield, James Morrow, Pat Santora, Jon Hirschi, and myself. Download the audio file as mp3 or zip (01:25:33 duration, 97.9MB)
Next month’s meeting will be Tuesday, September 1st. James Morrow will lead the group in a discussion on “Real World” Design Patterns. If you’d like to join us, please RSVP at http://groups.adobe.com/groups/0e009fe342/summary.
| 11 comments

Jose Galdamez
And I thought my CFUG was the only one with ADD! J/K
Regarding your third bullet point, recently did I look at some job postings on House of Fusion to get a feel for what the current job market is like. I find it kind of scary to see what employers expect from CF programmers these days. Gone are the times when maybe you could just get by with just ColdFusion, HTML, and a little bit of JavaScript. Now it’s AJAX this, Flex that, Java this, .NET that. Yikes man.
I noticed that a relatively small fraction of employers require knowledge of a specific framework or two (not counting ColdFusion if you consider that a framework). Two that I saw come up were Fusebox and Mach-II. I’m sure there are jobs that require others.
That sort of sucks for someone (like me) who is not on any framework and is trying to decide which one to go with. In terms of job security, picking the "right" framework might almost seem like a game of roulette. I know it really isn’t, but it just seems that way.
I’ve heard, "it’s not so much about learning a framework as opposed to learning TO framework." That’s true too I guess. If you get good with XML configurations in Fusebox and want to take it a step higher, then working with configurations in Model-Glue or Mach-II won’t entirely be such a new experience to you. I’m sure there are many other areas where certain framework concepts are easily portable to other frameworks.
Me personally, I learn by going through a book on the way to work and then going through examples when I’m in front of a computer. Fusebox has a book you can buy online. I find that just about all the rest have Wikis that you can choose to print out if you so desire.
Classes on ColdBox drop about 20 lbs of literature on you I hear.
@Charlie
Got any thoughts on how frameworks and job searching mix together?
Thanks for the MP3 recording. Checking it out now.
Charlie Griefer
@Jose: re Frameworks and job searching… I think having "frameworks" in your arsenal (any framework), is akin to having another tool in your toolbox.
It won’t hurt your job search, as if you’ve got that, and an employer isn’t asking for it, no problem. If you’ve got that, and an employer *is* asking for it, great. You’re qualified.
Even if a potential employer isn’t currently using frameworks, that employer might look to you as someone who can come in and help implement them and possibly improve the structure of the existing code.
The only way it could hurt that I could see, is if an employer was looking for somebody with framework experience, and you didn’t have any.
As far as picking the "right" framework, this was something that came up during the meeting, and you’ll hear on the audio. If you know "Framework X", and a potential employer is looking for somebody who knows "Framework Y", you’ll likely be able to pick up "Framework Y" fairly quickly. While there are certainly differences in certain syntaxes (Fusebox uses ‘XFA’ for ‘exit fuseaction’ while ModelGlue uses ‘XE’ for ‘exit event’) or even in structure (Model-Glue uses XML configuration files while ColdBox uses convention for event handlers), most are really just MVC frameworks at their core. You’ve got your view (what the user sees), your model (business logic), and the controller to facilitate communication between the two.
I don’t think you can make a "wrong" decision as far as which framework to learn. Once you’ve got a fairly solid grasp of one, learning any of the others will be much, much easier.
Sorry if that’s kind of a "waffling" answer, but I believe it 100%. Pick one, learn how "TO framework", as you put it. The rest will fall into place.
Pablo Varando
First off, congrats on the new group… Next time I am in San Fran, will stop by and check it out (maybe even speak, if you guys are interested… hehe)
Anyways, I applaud the attempt to move to a more interactive approach. My view is that a group should be a place where you not only have speakers, etc… but more of an interactive forum where individuals can talk freely, ask questions, learn new tricks and techniques from their peers who are overcoming challenges daily at work. More of a "live" in-person discussion forum where everyone can talk through things and walk out with not only new ways to fix and build things, but more importantly ideas on how to make new things.
My 2 cents.
P
Sarah Kelly
I have listened thru the mp3 several times (in short chunks). I enjoyed the format. There is no user group where I live and I’m not sure if there are enuf CF’ers to start one. (It’s on my mind.) Introductions at the beginning would have been really helpful just to have some idea who was speaking at any particular time.
I have started looking at Flex based one someone’s comment that Flex seemed to be helpful at getting him thinking in OO ‘style’ and language. I’ve used Fusebox (w/ XML), but feel like I’m doing a poor job of it. Mine’s not MVC, but there are times when I ‘feel’ the problems that my code has because I haven’t done MVC. Another way to say that might be… I run into problems in my code that intuitively seem like they would be solved by MVC, but I haven’t ‘gotten’ those MVC solutions yet.
Does anyone have suggestions about where to go next? I started looking at Coldbox, but it sorta blew my mind. (I think I need the _Coldbox for Fusebox Dummies_ book.) I also took a look at Coldspring and Aspect-Oriented programming. AOP also discusses a lot that intuitively seems to address some of the difficulties I’m having (permissions, session timeout).
I’ve been sorta limping along, just managing with ColdFusion for years, and I’m getting tired of that style–I want to learn to do things right!
Thanks for the ‘cast.
Charlie Griefer
@Sarah – I agree that short introductions might have enhanced the recording a bit. I thought about it, but there were only 4 in attendance (5 counting me), and we all pretty much knew one another… so introductions for the group’s sake didn’t seem necessary. For the sake of the recording… I’m afraid that asking people to identify themselves prior to speaking might have interrupted the natural flow of the conversation. This wasn’t meant to be a panel, as much as simply capturing the discussion between 5 developers in hopes that there might be some nuggets of information that others might find useful. I feel like the distraction of the "Hi, it’s ______ speaking now" wouldn’t justify any perceived advantage.
As far as frameworks, I’m a big fan of Model-Glue. It’s simple, and it doesn’t force you to try and learn too much at once. You can easily implement an MVC application without worrying about ColdSpring or AOP or OO (my "model" layer in MG is not at all OO).
I can try to throw together a quick post showing a very basic "Hello World" Model-Glue app, which I’d be happy to do. If there’s something lacking in the current documentation, or some specific area that you’re getting hung up on, please let me know so that I can try to address it. Otherwise, you’d likely just run into the same issue with my post that you’re running into with other examples and docs.
Sarah Kelly
I’ll take a look at Model-Glue.
As for intros, I just meant a simple "this is Sarah" the first time the speaker spoke. Or you could say "that was Sarah" after the speaker spoke. I agree that you want to keep it as natural as possible or people don’t like to speak "on camera." It did have lots of nuggets of info and I think it will help anyone at the same general level as me. I’m not sure about real beginners or real advanced CF’ers. I hope you’ll continue to share your meetings like this.
I’ll let you know what I find with Model-Glue.
Sarah Kelly
Hey, Charlie, I read through some intro Model-Glue docs. It makes sense to me, right off the bat. So I d/l’d it and installed it and started going through the Quickstart steps. I screwed that up at some point, then screwed up CF trying to fix it. I need a strong drink, but I’m hanging in there…and actually still trying to get the Model-Glue working. (I always have the most trouble getting to the "hello world" stage.)
So, the most recent problem I’m having isn’t really w/ MG at all. It’s the @#%$ Eclipse and projects issue. I copied the modelglueapplicationtemplate to wwwroot. Then I made a project called translator in wwwroot from within Eclipse. Then I chose Project::Import and chose the modelglueapplicationtemplate folder. I made the necessary changes…big fat error. So further exploration reveals that the files that are in the translator folder are not actually changed. WTF? The Eclipse documentation I’ve looked at is so Java-centric; I can’t stand to wade through all that stuff. A Google search suggests that ‘import’ is only for an existing project. So what am I supposed to use to make a project from a directory of existing files?
Really hating Eclipse right this minute!
Charlie Griefer
@SarahK:
To create a new project in Eclipse (one that points to an existing directory), I generally just do New -> Project, which pops up a window looking for 2 pieces of info:
1) Project Name – whatever you want it to be
2) Project Location – If you uncheck the "Use Default Location" checkbox, this will become enabled. At this point, I browse to the existing directory and use that.
With that, you have a new project pointing to your existing files.
The best advice that I think I can give you is not to try to learn too much at once. I think Eclipse is great, but for the time being, you can get by just using it as a "glorified text editor". You’ll learn how to do different things in Eclipse as the needs arise. But for now, the need, and the focus, should be on Model-Glue.
Once you’re comfortable working in MG, I might start looking at how to use various aspects of Eclipse that will help streamline your development process. But for now, K.I.S.S. Keep it simple, Sarah
Ping me tomorrow on IRC if you want, and we’ll get you up and running with your MG app in Eclipse.
Sarah Kelly
"Keep it Simple, *Sarah*" how polite! That’s not how I’ve heard it worded before:-)
I’ve been using Eclipse for a year, but the whole project thing is @#$%ing me off. The concept is great, but how to actually accomplish it is another matter. How do you treat Eclipse as a dumb text editor? When I tried creating a new project the way you describe, I get this "..wwwroot/[dir] overlaps the location of another project: [dir]". It doesn’t matter what the project name or dir name is–if the dir already exists, it gives me that error. I googled it and found some info about deleting obsolete workspaces, but I don’t have the files and folders that are referenced (and my hidden files are showing).
I temporarily gave up on Eclipse and edited the files in TextWrangler. I have the MG app up and running and am ready to start going through the quickstart steps again to make sure I’m getting everything.
Understanding Eclipse is really a higher priority for me though unless maybe I should just get CFBuilder. I feel like my tools keep interfering with my job instead of being invisible helpers.
Thanks for any insight you might have.
Sarah Kelly
(getting the right e-mail address in here so the form will remember me)
Jose Galdamez
@Sarah
I ran into a bug with CF Builder a few days ago where I wanted to create a new project from a folder that had already been made as a project in Eclipse. CF Builder wouldn’t let me, so what I did was go into that folder, turn on viewing of invisible files, and then trashed the .project file. That fixed it right away. If you’re having problems with projects, then deleting the .project file within a project folder may help.
As for the bug I ran into, it looks like the .project file created by Eclipse/CFEclipse is unreadable by CF Builder.
As for treating Eclipse like a dumb text editor, going to the File menu and then choosing Open File works for me. Getting Eclipse to be recognized as the default editor within the OS is another story though. I’m not really sure how you’d do that (i.e. double clicking a file on your desktop and having Eclipse be the first to try it out).
@Charlie,
I like the new styling on the blog. Just noticed it today.