Wednesday, December 9, 2009

ColdFusion Comes of Age - Community to Follow?

About a month ago my fellow CF'er Mike Chandler showed me this article. The initial once over was quick with only a handful of comments that made me chuckle then I moved on. As I was sifting through old email I found the link and decided to see where the conversation went, if anywhere. That, my friends, is what inspired this blog post.

Basically a CEO announced a launch of their new site which was rebuilt in Java and somewhere in the post called ColdFusion outmoded. I’m writing this entry not because I’m miffed that he called ColdFusion outmoded, I’m writing this because of some, not all, of the responses that ensued. People are entitled to their opinion both the CEO of MFG and the responders alike but I really couldn’t believe the level of back and forth going on between commenters. Some responses reminded me of elementary school where kids are cracking “your momma” jokes back and forth, getting heated over well, nothing. Sarcastic banter and throwing out stats is not going to make your point, especially in a forum. And seriously, all the CEO said was that it was "outmoded". Give me a break, that is not a big deal people.

So this got me thinking, “What do we as a community need to do to be taken seriously?”. Here's my $.02.

First, let’s stop bashing other languages. There's something to learn in every language regardless of what side of the fence you are on and whether you care to admit it or not, its true. There is always something to learn. AlwaysSecondly, let's stop responding immaturely when someone says “ColdFusion {insert derogatory verb here}”. Let it go. Breathe. Do a 10 count. I get it, we are all passionate about ColdFusion. But we should be even more passionate about what ColdFusion is used for - software engineering. More passionate about solving complex problems that completely kick our ass. The kind of problems that you find yourself solving when you're dozing in and out of consciousness in the middle of the night cause you can't sleep, just to wake up still trying to solve it and can't get that computer on fast enough. And hey, in my experience ColdFusion allows you to solution those types of problems and solution them pretty damn well - thats why I love it just as do you.

Adobe and the ColdFusion team hit the nail on the head with CF9. They’ve armed us with the capabilities to enter the arena and stand and bang like the big boys. It gives us the ability to execute the core tenets of object oriented programming - encapsulation, inheritance and polymorphism. It makes OO feel natural just like C++, Java and C# with its new and improved script syntax and quick object creation. It feels grown up. It feels like it has come of age. It demands to be taken seriously. But there’s one critical piece missing. We as a development community need to come of age with it. We need to mature. We need to start designing before we write code. We need to really understand object orientation and design patterns. Strive to be software engineers, not just complacent code monkeys. We need to advocate designing before we develop because identifying problems with our architecture while it’s in design is much better than discovering them hundreds of hours into development and hundreds of $'s in the hole. We need to design, poke holes, re-design, poke more holes, then lastly start coding (this should be the easy part). But hey even if you need to rework design during development, your design should be such that its easy to maintain and modify. We need to architect applications that scale. That are flexible. We need to understand why to use Framework A, B, and C and more importantly how they work under the hood. We need to fully understand the problems these frameworks were created to solve.

Lastly and most important, we need to solve problems just like the big boys and be sure to share the solutions amongst each other. Problems whose solutions cannot be summed up with “check out how I used this really cool CF feature to create a pdf or make an ajax request”. Other languages and developers don’t care about that. They’ve got their own cool features that they'll argue it puts yours to shame and vice versa. We need to solve problems that transcend languages. Problems that only sound design, architecture, design patterns and well written, efficient algorithms can solve. Once you solved it, share your solution. Get involved. Publish it. It’s only then that we can be taken more seriously. It's only then we can share complex solutions that programmers from other languages can stumble upon and implement. Solutions that came from the mind of a ColdFusion software engineer. A solution that programmers from another language can respect and apply with their language of choice.

CF9 has come of age and has equipped us to do all of the above. It’s been our responsibility as a community to come of age with it. Next time that startup comes knocking, do it right from the beginning. The next time that corporate piece of software needs a new module, do it right from the beginning. Do it object oriented. Use frameworks for the right reasons. Even dive into design patterns. There is a reason for object orientation and blackboxing, that's why its taught in computer science. Don't fight it and know that advice and direction is only a tweet or email away - our community is great about that. Apply those concepts and over time that piece of software you wrote will grow and scale easily and it's then that your piece of software will be a testament to ColdFusion and its capabilities. It's then we'll no longer have to squabble over statistics because we've got proof of high profile adoption.

We're on the path to get there. We have a fricking ton of brilliant minds in this community doing some very cool things every single day, you included.

So let's walk the walk and stop talking the talk. Let's build better software as a community. It'll end up speaking for itself.

-Micky

11 comments:

Brian Carr said...

Absolutely brilliant post Micky, well done!

JesterXL said...

I worked with the original code written in CF at MFG, and it worked fine. Back then, Flex gave you zero help, so our Factory code on the Flex side was a little verbose in parsing it, but other than that, I never had a problem with the back-end, then written in ColdFusion.

Spending time reading comments on TechCrunch is about as intellectually stimulating, and accurate, as reading YouTube ones. Give it a rest; those who use ColdFusion and have successfully deployed it with successful projects know it works great.

Quoting that very article, "It’s amazing the site lasted so long on such outmoded technology, given its growth". Amazing or not, it's ColdFusion, and it works.

John Whish said...

Great post Micky! I'm hopeful that the 4CFF (http://4cff.org) project will help the outside world take ColdFusion more seriously.

Mike Chandler said...

Well put Micky. You said it all! I hope they all take notice!

Rick said...

I used to let comments like that slide about ColdFusion. The problem was that created or reinforced negative stereotypes about the language.

If it's not challenged there are people whose only knowledge of CF is what they read in TechCrunch. People that though they are several layers removed from coding chose which languages to use or consider using in projects.

I cannot defend every single comment but I can tell you the author of that article received an education and now knows to question future statements of that type by CEO's.

Sid Maestre said...

Hey Mickey,

I agree the community should defend ColdFusion, in a mature way. Guess everyone has their own standard for a "mature response". I recently saw a "ColdFusion is ...." comment on twitter. He posted several in a row. A bit of the poking a hornet's nest with a sharp stick.

While some CF'ers responded with links to blog posts touting CF's many wonder attributes, I responed with a "Yawwwn, please move on". Basically, I'm not going to engage those who have no serious interest in ColdFusion.

I agree with walking the walk. This can be open source or just a cool site you build yourself. We need more sites we can point to and say. Hey you like "..." It's running ColdFusion. http://slidesix.com is a good start.

Chung said...

Great post Micky,

You know, this just goes about any language out there. Some people say the same about .NET or PHP or [insert langues name here]. People stick to what they do and booboocoo about other things that isn't in their preference.

I remember reading a blog post where it advocate how good coldfusion is and then a bunch of php coming in and comment bashing coldfusion. One of them called the poster a "Fanboy" then in consequent post starts blathering about about much better php is. All the while thinking, "Well, if this guy isn't a fanboy of PhP then I don't know what to call him."

It all comes down to skill. If you can take a language, ANY language and Godcode the crap out of it then who's to argue?

The bottom line is, if you're a sh*tty programmer, it doesn't matter what language you're coding in. You're a sh*tty programmer and you can't blame the language (or other language) that sucks.

Rachel Lehman said...

Well put, thank you!

Aleii said...
This comment has been removed by the author.
Matthew Zimmer said...

Great write-up, Micky. I completely agree. One of the main reasons I still write CF apps today is that I find it absolutely fascinating and exhilarating to wrap my head around applying OO design patterns to a language that is procedural by nature. If I may, I'd like to give a shout out to my boyz Groovy and Flex. They are my favorite tools in my knowledge garage right now and I don't see that changing any time soon. :-)

If you're interested in learning more about those bold words sprinkled throughout this post or would like to contribute to the effort of centralizing the knowledge, check out these sweet resources:

http://www.coldfusiondesignpatterns.org
http://www.objectorientedcoldfusion.org

Micky Dionisio said...

@matt - caught wind of that the other day. looks like another excellent source for cf developers to learn some OO and solid design patterns. thx for that dude!