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. Always. Secondly, 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