Barack Obama - Change We Can Believe In

Viewing By Entry / Main
September 2, 2006
I was reading the Flash Coder blog about the lack of value of frameworks and it made me think of Simon Horwith's comments about frameworks in ColdFusion.

In particular, I was taken by this comment from the Flash Coder:

A development framework is useful when your workforce is disperately or poorly skilled. Perhaps 'poorly' is the wrong word - maybe 'intermediate and below' is a better description.

To be fair (to both Simon and to the Flash Coder), the blog entry is mostly focused on code size and performance in regards to frameworks and is specific to Flash (therefore the context is more about cell phones and set top boxes).

However, the underlying sentiments expressed by the Flash Coder threw up much the same "red flag" that some of Simon's comments have: namely that frameworks are not appropriate for "good" developers and that if you're really good and really know OO and patterns, you just don't need frameworks.

Here's another quote from that entry that is almost exactly what Simon has said when justifying his Sensible Assembly Methodology over using a standardized framework:

The best solution of course, is to have skilled developers creating good pattern based OO code in a more project bespoke manner and adhering to accepted best practices.

I don't really want to start up the whole framework vs no-framework debate again but I thought it was interesting to see this message - and the subsequent pushback in the comments - coming up in Flash. I would bet we could go look in the PHP or Java community and see the same thing.

Comments

Hi Sean,

I see this debate all over the place - PHP, .Net, Java and Ruby communities in particular. I don't think it is surprising that as Flash matures as a programming environment (especially with the release of Flex 2.0), the same discussions will arise.

I think the real problem with frameworks is that they require a certain amount of learning and demand a certain amout of trust in other peoples code. For me, the answer is to learn about the frameworks without necessarily committing to using them, so you get the best of both worlds.

To consider frameworks the perfect solution is all cases is as arrogant as to believe you can learn nothing from deconstructing the some of the best proven solutions to common problems.

By the time you've learned the frameworks, the learning cost is a sunk cost and you have a better sense of the trsutworthiness of the platform, and it is pretty easy to either build your own bespoke frameowkr taking advantage of what you learned or to confidently use a framework that fits well with you rproblem domain.


Hi Sean,

Hijacking the comments here for an unrelated purpose, but thought you'd get a kick out of this link after our discussions about Haskell. Feel free to just delete the comment . . .

http://lukeplant.me.uk/blog.php?id=1107301645


Sean,

Just curious if you have any thoughts on the code architecture output by Flex Builder 2's "ColdFusion/Flex Application Wizard"? Would you know if it is closely aligned with any existing ColdFusion oriented frameworks?

In particular the RDS Wizard that generates CFCs based on table schemas?

Following summarizes the types of CFCs generated by the RDS Wizard (abridged from the Wizard's docs):

-- ActiveRecord style CFC, which includes all of the properties, get and set methods, and SQL methods in one CFC. -- Bean/DAO style CFCs, which creates two related CFCs: 1) A Bean CFC, also called a Value Object, which contains the property definitions and get and set methods; 2) The DAO CFC, which contains the following methods: read, create, update, delete. -- Data Service assembler CFC, which includes a Bean (also referred to as a Value Object), a DAO CFC, and an assembler CFC. The assembler CFC is required to take advantage of the Flex Data Services feature

Also, there are some Captivate demos made by Dean Harmon up on Damon Cooper's blog here: www.dcooper.org/blog/client/index.cfm?mode=day&day=22&month=6&year=2006

g


Greg, yes, I spent quite a bit of time discussing those models with Mike Nimer (author of the wizards).

You summarized exactly the design patterns that are in the wizards so I'm not sure what your question actually is?


I know that most people face frameworks as a way to reduce the workload... wrong approach.

I don't intend to explain why I think that frameworks are the right path... for everything.

"A development framework is useful when your workforce is disperately or poorly skilled."

If this is what you think, maybe you should forget about frameworks alltogether.

A framework thould not be a looked at has a just another tool... it is much more.


I think most of Simon's arguments are against MVC frameworks that (1) aren't feature rich in a way that saves time coding, and (2) force you into a very rigid or invasive programming model. I think it's very rational to say that's not high desirable. But even with those negatives, I think there is still some value in standardizing on frameworks so that new developers on a team can get up to speed faster without learning "my way of doing things" or "Bob's way of doing things."

Unfortunately I can't see any sane argument against using tools like ColdSpring or Reactor/Transfer, which really give you a lot of bang for your buck. In that situation they provide good functionality and help organize your application. If they offer a non-invasive programming model that allows you to port parts of your application down the road, that's even better.


Sean,

Thanks. My apology for initially being unclear.

I guess I am trying to figure out where the code generated by Mike's wizard fits into the existing universe of application frameworks being employed by fellow COldFusion

developers.

I know that you have presented to ColdFusion developer conferences and user groups on "Comparing Application Frameworks". You now mention that you have discussed with Mike

Nimer the models that the wizard implements. I would be most appreciative if you can help me put this in context :-)

To restate my question: -- Does the code generated by Mike's wizard conform with any of the existing application frameworks used with ColdFusion? -- If not, is the code generated similar in any way to the coding practices implemented in any existing application frameworks used with ColdFusion? -- And if no on both of the above, would you consider the code generated by the wizard as potentially providing the basis for a new application framework that ColdFusion

developers might want to consider?

Best regards,

g


Of course, I've got to comment on this one... First - I never said that frameworks are not appropriate for 'good' developers. Plenty of good developers use frameworks... but I have been known to say that a good developer doesn't need a framework and that I have met plenty of developers that have solely used a framework for development and that don't have a grasp on some fundamentals. Make of that what you will - there's no reason for a developer, whether they use a framework or not, to become a better developer over time or to have a solid grasp of the fundamentals.

With regards to good developers - I do completely feel that good tools will never replace good developers - whether we're talking about IDEs, Frameworks, or anything else.

Regarding Flash - I'm not a huge Flash guy, but I do a lot of Flex development (in Flash I pretty much only do AS development). I like developing apps using an 'object think' approach in Flex and I don't use a framework in that environment either, typically... but, given the nature of Flex development, I'd be more inclined to use a framework for a Flex app than with a CF app for sure.


@Greg, the wizards let you generate code in two primary patterns: active record and dao/gateway. The generated code can be used by any of the popular MVC frameworks (Fusebox, Model-Glue, Mach II). Some people are figuring out ways to use Reactor and other ORMs with Flex (effectively in place of using the wizard-generated code). And of course Reactor and Transfer can easily be used with any of the MVC frameworks.

Again, I'm not really sure what your question is...

I, personally, use ORMs (Reactor and Transfer, specifically) so the wizard-generated code isn't useful to me. However, if I wasn't using an ORM, I could use the wizard-generated code with any of the (other) frameworks I use - and I could use either style.

I think you're confusing frameworks and patterns...?


Post Your Comments
Name:
Email Address:
Comments
*** Please note that all comments require moderation so it may be some time before your comment posts to this blog! ***
Remember My Information:
 



Hosting provided by