It's no secret that I've been outspoken about not liking frameworks for quite some time now. The truth is, I believe that frameworks have a lot to offer. The most significant benefit that organizations stand to gain from using frameworks is a standardized way to code and an environment that is generally more conducive to allowing multiple developers to work on a project at the same time. If frameworks help to standardize how things are done and make it easier for many developers to work on a project, why have I been vocal about not liking them? Am I just trying to create controversy?
The truth is that by and large, yes, I am trying to cause controversy...but only because I want to make people think - a statement that I make for a very good reason. I don't like frameworks because I've met a lot of developers over the years who have maybe one or two years of experience building applications with a framework but who don't have a good grasp of the CFML programming fundamentals you'd expect from someone with a few years' experience. I've met many developers who aren't capable of developing anything outside the context of the framework they're used to. In these scenarios, the framework is a crutch.
I view poor developers as a symptom of frameworks. Is this the fault of frameworks? No, not at all. There's nothing about a framework that says you can't use it and still be a terrific programmer. It's the fault of the developers, for sure, and it is for that reason that I don't truly dislike frameworks. I don't think any one framework should be used to build every application, and I personally prefer to develop without them, but when it's appropriate I see nothing wrong with using them. If developers are really good at what they do, they should feel comfortable and be competent working without a framework and/or bouncing in and out of several frameworks. This is unfortunately not the case for the majority, though not all, of the people who use frameworks. It is especially true for developers who began their programming career working on projects that are built with frameworks and have never had the need to build an application without one.
You might be surprised to hear that I have a similar dislike of object-oriented programming and an even stronger distaste for design patterns. That's an extremely controversial statement to make and I'm sure that if my commentary on frameworks didn't upset or confuse the majority of our readers, talking poorly about OOP and design patterns will. Now that I've managed to get everyone worked up, let's talk about it.
What could I not like about object-oriented programming? Similar to frameworks, I actually do like OOP, but I don't like what it's done to ColdFusion developers. This is truer for design patterns, which I view as the buzzword of the day right now. The reasons behind these statements are simple to explain, but very difficult to do anything about. I spend a lot of my "free time" reading about object theory and various thoughts and approaches to software architecture. The vast majority of the reading is not specific to ColdFusion but is certainly applicable. Likewise, my statements about OOP and design patterns are not specific to CF but apply to developers in all environments. An overwhelming number of programmers, not just CF but Java, .NET, C++, etc., talk about object-oriented programming without really understanding it at all. The roots of OOP are grounded in ideas, radical at the time they came out, about how to think about software development. Most of the books, courses, and, therefore, developers today have completely missed the point when it comes to OOP. These misconceptions and misapplied ideas are magnified greatly when developers begin throwing around talk about design patterns, which is why I said that I don't like them. The truth is, I think design patterns are an excellent learning tool and I am an avid supporter of OOP...but only when they're approached the right way.
My definition of "the right way" is for developers to learn "Object Think." Object Think is an approach to thinking about the objects that make up an application and is used for object modeling solutions. The original OOP concepts were based on this line of thought but it was quickly lost among developers, as they tend to use sequential thought when formulating solutions. Sequential thought comes more naturally to most people with a background in traditional programming and, to be honest, tends to be a more natural line of thought when formulating machine solutions, as programmers do. I have spent the better part of my free time for the past five or six years studying the writings and interpretations of the architect Christopher Alexander, software architecture pioneer Dr. David Parnas, Kent Beck (best known as the founding father of XP), and a handful of other early thinkers in the realm of object thought and behavioral programming. To apply these philosophies and thoughts to ColdFusion development requires changing the way we plan and execute solutions. At the heart of this change is the need to be more object-centric, achievable via object-personification, in our approach to planning applications.
Describing a philosophy of how to model applications is obviously beyond the scope of this editorial. It's beyond the scope of an article and, in all fairness, is even difficult to achieve within the limitations of a book. My Sensible Assembly Methodology is based on these teachings, taken from Streamlined Object Modeling, Object Think, other thoughts and writings, and my architecture and development experience in the real world. Due to an extremely hectic schedule, I should have some documentation on that by the end of March at the latest, with a book to follow. My advocating a methodology (SAM) as opposed to a framework is driven by a personal belief that by doing so, I can offer developers something more valuable and transferable - a better way to think about development.
What is important to me, for the good of the community, is not whether developers choose to use one framework or another or choose to use my methodology or another; it is that we not only accept that the way we solve problems and develop software could be better, but examine every alternative approach in our attempts to find better ways to work. This idea has become more important with the recent buzz about Web 2.0 and next-generation Web applications. Simply throwing a Flex or AJAX front end on our application isn't good enough - in order to develop a true next-generation interface we have to change the way we think about our users and the experiences they should have when they interact with what we create. This is something that the XD (extreme design) group at Macromedia has been talking about for several years. As applied to software architecture, these ideas have been discussed for several decades. My hope is that now, with the vast amount of available information and the mature tools and technologies available to developers, the ColdFusion community can begin to put these ideas into practice.
About Simon Horwith Simon Horwith is the editor-in-chief of ColdFusion Developer's Journal and is the CIO at AboutWeb, LLC, a Washington, DC based company specializing in staff augmentation, consulting, and training. Simon is a Macromedia Certified Master Instructor and is a member of Team Macromedia. He has been using ColdFusion since version 1.5 and specializes in ColdFusion application architecture, including architecting applications that integrate with Java, Flash, Flex, and a myriad of other technologies. In addition to presenting at CFUGs and conferences around the world, he has also been a contributing author of several books and technical papers. You can read his blog at http://simon.coldfusionjournal.com.
Dennis Muzza wrote: You
shouldn't lose sight of
the ultimate goal, which
is producing good,
robust, scalable systems.
If this can be
successfully accomplished
by cheap, inexperienced
programmers relying on a
framework that does
pretty much everything
for them, more power to
the business that employs
them.
The problem I see with
frameworks is that few of
them are really good and
widely usable, and those
that are still call for a
lot of custom coding
which requires good
developers. Oftentimes
companies spend millions
to develop frameworks
loaded with every
possible feature, and
then it becomes the
proverbial hammer to
which everything looks
like a nail. People
begin using it because
it's there and a lot was
invested in creating it,
not because it really
solves a problem.
Serge Bureau wrote: Sorry
but I feel the opposite.
Framework is the reason
for bad programmers.
EJB's and Struts for
example are awful (I have
not look at EJB 3)
Companies are pushing
people to use those
framework that are big
and inflexible.
So while thre certainly
is bad programmer's, I
have still to see a good
framework ?
jim wrote: Poor
developers using
frameworks as a crutch is
a symptom of them being
poor developers in the
first place. IMO there
should be licensing for
software engineers just
like every other
engineering profession.
There are way to many
script kiddies out there
who have learned one
framework and call
themselves developers -
There should be a bare
minimum set of abilities
you can count on a
develper having, and so
many don't. I can't tell
you the number of
"developers" I've dealt
with who have degrees in
philosophy or english or
phys ed, who have no idea
what a data structure is,
but have mastered basic
cold fusion, so they're
now "senior programmers".
Until we set a baseline
bar that everyone has to
hurdle to call themselves
a software engineer, our
industry will continue to
be plauged by these
frauds.
Ananthalakshmi wrote: Hi,
Your view may be true in
the context of ColdFusion
Development. But, in real
application development
scenarios in languages
like Java, .NET, etc and
in building enterprise
applications where the
problem solving
methodoligies and the
implementation needs
reusable and prooved
strategies for recurring
problems(for ex, page
iteration, adopter, MVC
architectural patterns,
etc) instead of
developing the solution
from scratch for each
application that is being
developed in the
organization, instead to
reuse existing
components, build
reusable services, adopt
proven strategies(design
patterns, etc) will
certainly improve the
productivity of the
developer and also to
build quality, reliable
and scalable applications
which is the most need of
every application that we
develop.
Yes, it is the
responsi...
Jos Warmer wrote: You
want controverse? Ok, I
will help :-). I think
you are absolutely wrong.
The reality is that about
10% of the programmers is
good, 10% is bad and the
80% remaining is
somewhere in between (and
do not have it in them to
become good programmers).
As with many professions
my guess is that this
will have a normal
distribution.
Since the majority of the
programmer is not
excellent and never will
be, we need ways of
making mediocre
programmers productive.
Using a framework is one
approach (although I have
seen frameworks that are
too complex for this).
The main issue is that
these programmers need
less freedom and more
prefabicated stuff to
work with. This might
mean using frameworks,
using existing
components, using MDA or
DSL's, etc. etc. The
challenge for those that
are in the 10% good group
is to ...
Mark Walker wrote: It's
about time somebody said
it. The multitude of
frameworks, "evil"
wizards and other sugar
has led to a generation
of inept programmers. I'm
all in favour of good
tools, but not a
substitute for good
people.
Just some programmer
wrote: Any idiot can
write code a computer can
understand. Frameworks,
design patterns, OOP, and
high level languages are
all just strategies to
mitigate the problem size
/ complexity curve - a
primary goal of competent
programmers. Why has the
science of software
development continued to
inch forward when it
should have leapt? Why is
most "OO" software still
written procedurally (and
with less skill than
procedural code written
in 1979)? A lack of
competent programmers is
certainly at the heart of
it but you have to look
further than that. Most
business stakeholders
have no appreciation for
what we do. They simply
don't care how the work
gets done. In fact, doing
things 'right'
(refactoring, writing
automated tests, etc.)
can get you in hot water.
As a result, there's
little motivation to
improve...
Wayne Cannon wrote: While
I agree with your general
sentiments, reality is
that not every employer
can afford to spend
$100-150K for "good"
programmers with the
desired insight and depth
of understanding.
Looking at the market
right now, there are lots
of positions only willing
to pay $40-80K. For most
of them, it's this level
or none at all -- and I
would suggest that
customers and our economy
are better off with the
current situation, even
if some of the solutions
are a little rough under
the covers.
I've been developing
software professionally
for 40 years and have
been fortunate to have
been at the state of the
art almost that entire
time. The same issues
occur in many other
industries. Designers of
electronics used to
understand everything to
the component level, but
the sophistication,
speeds, and associated
...
Wayne Cannon wrote: While
I agree with your general
sentiments, reality is
that not every employer
can afford to spend
$100-150K for "good"
programmers with the
desired insight and depth
of understanding.
Looking at the market
right now, there are lots
of positions only willing
to pay $40-80K. For most
of them, it's this level
or none at all -- and I
would suggest that
customers and our economy
are better off with the
current situation, even
if some of the solutions
are a little rough under
the covers.
I've been developing
software professionally
for 40 years and have
been fortunate to have
been at the state of the
art almost that entire
time. The same issues
occur in many other
industries. Designers of
electronics used to
understand everything to
the component level, but
the sophistication,
speeds, and associated
...
Manjunath Kustagi wrote:
I absolutely agree, one
sees many sundry
god-knows who writing
programs in industry
nowadays
Ditto on Design Patterns
being an absolute
hogwash, but I disgree
with your dislike of
OOP.. I think it's based
on a sound basis if
comprehended and used
properly
Sys-Con Australia News
Desk wrote: It's no
secret that I've been
outspoken about not
liking frameworks for
quite some time now. The
truth is, I believe that
frameworks have a lot to
offer. The most
significant benefit that
organizations stand to
gain from using
frameworks is a
standardized way to code
and an environment that
is generally more
conducive to allowing
multiple developers to
work on a project at the
same time. If frameworks
help to standardize how
things are done and make
it easier for many
developers to work on a
project, why have I been
vocal about not liking
them? Am I just trying to
create controversy?
Kevin Roche wrote: Simon,
I know we will never
agree on this. What would
you do with all the guys
who are never going to be
able to develop a
sensible architechture
that will be suitable for
each application. Would
you ban them from
programming altogether?
Most people are not as
clever as you. Without
the help of a framework
their work would be much
less useful.
Brian Cassell wrote: I
agree with your bold and
controversial comments,
and will add a few as
well.
Frameworks provide a neat
way of chopping things
into millions of little
pieces with the
assumption of reusability
and granularity. Yes, you
can reuse an include file
that contains an HTML
open tag on every page
you create, but what is
the sense, what is saved?
There seems to be some
greater value achieved by
"simplifying" things to
the smallest element in a
framework based
implementation. I prefer
to open a page and be
able to read from top to
bottom to see what the
heck is happening, rather
than looking at the 10
included files that just
overly complicate what
probably could have been
right on one page.
Separation between
presentation and content
is another popular idea
that I disagree with.
Presentation is nothing
wi...
Edward Trudeau wrote: I
don't know, Simon...I
kind of want to say,
"Waah." Some developers
aren't where they "should
be" after two years of
development using
frameworks; some are
throwing around design
pattern names without
really "getting it." I'm
just not feeling the
pain. Are they forcing
salaries down? Are they
introducing security
risks? Are they devaluing
resumes with their
empty-calorie experience?
Are they giving CF a bad
name? Are you offended
on principle?
All of the above are
probably true to a
certain extent, but it
seems like exhorting
developers to grasp the
basics, explaining design
patterns more carefully,
and building an authentic
"Object Think" mentality
is the more profitable
route.
Historically, the
technocracy has enjoyed
privilege precisely
because of the difficulty
of grasping the
technol...
This is the story of a
Mac application developer
(okay - it's about two of
them) who set out on a
quest to find an
application development
tool based on Java so his
boss would let him
develop on the Mac
platform, which he loved.
There was only one catch
- he had to find a tool
th
SOA is mostly associated
with technologies such as
BPEL, SCA and Web
Services. But does SOA
really imply these
technologies? In this
session we will show how
you can use the service
oriented approach while
staying inside the Java
world. jBPM is a powerful
lightweight framework th
Any large Java source
base can have insidious
and subtle bugs. Every
experienced Java
programmer knows that
finding and fixing these
bugs can be difficult and
costly. Fortunately,
there are a large number
of free open source Java
tools available that can
be used to find and fix d
One of the things I
really enjoy at the
moment is the recognition
and adoption of agile
programming as a fully
fledged powerful way to
deliver quality software
projects. As its
figurehead is a group of
very talented individuals
who have created the
agile manifesto
(http://agilema
Sun Microsystems
announced it has entered
into a multi-year
agreement with On2
Technologies to add
comprehensive video
capabilities, using On2
Technologies TrueMotion
video codecs, to Sun's
JavaFX, a family of
products for creating
Rich Internet
Applications (RIAs) with
immersive
Conference in San
Francisco. Dvorak held
forth on a number of
topics, including the new
AMD/Intel lawsuit, the
viability of Java and
Sun, the value of (or
lack thereof) of
corporate PR, and whether
or not a new book about
Silicon Valley is really
worth reading.
SUBSCRIBE TO THE WORLD'S MOST POWERFUL NEWSLETTERS
SUBSCRIBE TO OUR RSS FEEDS & GET YOUR SYS-CON NEWS LIVE!
Click to Add our RSS Feeds to the Service of Your Choice: