Thursday, March 16, 2006

More thoughts on frameworks

There have been a lot interesting blog posts back and forth about frameworks, java integration.

I don't want to bring up the huge framework flamewars, I just want to ask a few questions, and postulate a few answers..

Frameworks in all honesty, are our attempt as cfers, to finally deploy some computer science concepts into coldfusion. Being that the huge majority of cfer's did not go thru any computer science training.

Being as that may be, we each thru our own experiences, and needs we have developed. We have our own set of ideas what we need from a coldfusion development environment..

And it is that development that enables us to deliver good applications...

And that's half the problem, we don't know which com sci concepts to put within coldfusion coding methods. Do we use OO, do we use scaffolding, rails, beans, etc.

Now when I personnally saw that CFML was on a java platform, my thought wasn't how can i code my cfml in java syntax.

My thought was, oh nice, now i can use some java functions/modules, that can do more things that what cfml has built in to it.

I can remember some image manipulation tag I had to use in the 1990's to resize images, and that if it had been java based it would have been much smoother, more options, etc.

Each has it's strength, so let's maximize what each can do, to create the best applications...

But each person on the chain of development to production, has different needs.

Manager Needs
1. Documentation of Applications
2. Documentation of Databases
3. Project Management System
4. Source Control
5. Coding Standards - How do we want our company/department to code, so that we know how to train and read code.
6. Disaster Recovery Plan - If any one on team dies or leaves, what information do I need to have to make it easy for the replacement to more easily take up from them.
7. Training Plan - How to track the training levels of different personnel, what books, classes, budget etc.
8. Code Review Process - To help developers identify bad applications, so they can improve both app and themselves..
9. Deployment Process - To move applications from development to production environments.

Developer/Coder Needs
1. My favorite editing/ide tool
2. My favorite db tool or standard db tools
3. Source Control Tool
4. Bookshelves for all my books
5. A copy of the coding standards
6. Constant Training/Reading
7. Code Reviewing
8. My collection of misc tools
9. Browser Testing - if your applications are possibly for multiple browsers
10. How can i build a good application, that can be easily fixed, repaired or modified?


End User Needs
1. Usability
2. Scalability
3. Error Catching & Reporting

I mean the lists could go on, there are probably things I missed...

Frameworks I feel is a misleading term, I prefer to call it architechture..

Your creating a coding architecture plan, based on that architecture, applications should be both created and used in a certain way.

But you see there is a difference between coding in a certain way, and how you deliver that application to an end user.

So where this is leading to, is some kind of checklist of asking certain questions to determine what kind of framework do you need.

Here are some of my questions, I'd Ask:

1. Are developers working as a team or as individuals?
2. Do you have different people doing, design, database, logic?
3. What level of learning curve do you want form a framework?
4. What are the skill level of your developers?
5. Are you coding in other languages?

I mean each has their strengths's and weaknesses.

So then the big question is what goals do you want to accomplish by adhering to a specific framework...

And in choosing a framework, go by what's best for you and your developers, not just because what your peer or industry uses.