July 14 2008 2:50 AM
by Adam
filed under
ColdFusion
On Friday, I gave a presentation to internal ColdFusion developers at Adobe (Adobe.com, kuler, etc). It was the final meeting of our user research phase and officially concluded the SyncDev process for Centaur. I wanted to take a few moments to reflect on the process and some of the many conversations we had with developers and how it's shaping the next major release of ColdFusion.
It was very important to us that we met with a large sampling that accurately represented all of our customers. We visited customers who had well over 500 servers to multi-million dollar companies powered by a single Standard license. We talked to developers and managers from small businesses and consultants to large enterprise and government shops. In the end we held 22 formal meetings in 6 different cities. I also held a number of informal meetings on my own in various European cities.
This was my first exposure to the Synchronous Development process. In a nutshell it's an agile approach to system requirements. Each meeting I pitched Centaur as if we had already built it. Developers, Systems Administrators, QA Managers and Directors gave us direct feedback which was then re-factored into the pitch before the next meeting. By the end of the process, I'd say we refined or removed half the features initially planned and came up with an entire new set. Customers of wave 1 and 2 may be surprised to see just how much the product vision has changed.
Boston
Wave 0 and 1 happened in Boston, mostly because ColdFusion's unofficial headquarters is the old Allaire office in Newton, MA. This wave was a lot of fun as Jason, Sanjeev and I were accompanied by Rob Babcock (a member of our internal process team). Rob played the role of master sensei and guided us in the way of SyncDev. It was great to have him participate as he made sure we knew and followed the procedures correctly, which ensured the data we collected was valid and concise. Incidentally Rob was the original Product Manager for Acrobat so he had his share of Adobe history to share.
One of the features of Centaur I'm allowed to talk about is Object Relational Mapping with Hibernate which we publically announced at CFUnited 2008. What you may be surprised to hear is that this feature bombed during wave 1 and was nearly removed from the product plan all together. The reality is that most developers are not familiar with ORM, so when we pitched it as just plain ORM in Hibernate most didn't 'get it'. What I learned was not to explain ORM via technical implementation but rather in the problems it solves. When learning about Ruby on Rails, ORM is rarely mentioned, yet it's a large part of the power of the framework. However, customers who were already using Reactor or Transfer quickly understood the magnitude of Hibernate-powered ColdFusion and gave the feature very high marks. I have to give a lot of credit to Jason Delmore for seeing the bigger picture and keeping ORM in the discussion for Wave 2 and giving us a second chance to explain the immense benefits of ORM.
Minneapolis
I cut my honeymoon in Hawaii short to jump on a plane and travel to frigid Minneapolis for cf.Objective(). As much as I love cf.Objective(), I'll be honest and say I didn't really have a choice. Although Ben and ColdFusion team were more than happy to let me enjoy my honeymoon, it was my new wife Rachel who just "couldn't miss hanging out with all of our friends". Since Jason, Sanjeev and I were all together in Minneapolis, we elected to stay in town an additional week to chat with customers.
During cf.Objective() we held the now infamous open meeting discussion on Centaur features. A lot of ideas were raised during that meeting, but in all honestly, nothing major we hadn't already heard/thought of before. The meeting eventually descended into a debate over the virtues of server-side ActionScript which further reinforced our plans to overhaul CFSCRIPT.
The off-handed comment from Jason requesting "management features" stirred the community blogs a bit. At that point we're fairly confident all developers (even non-CFers) would be attracted to Centaur, we had concerns that those developers wouldn't have a sufficient argument to take to their Managers and Directors to convince them to upgrade. From our perspective the Server Monitor and performance increases were ColdFusion 8's "management features". Of course those features were applauded by everyone, so "management features" aren't all bad. While scripting CFCs and ORM is great for developers, the average Manager may not understand the value and not be compelled to upgrade. It's our job to help.
Post-cf.Objective(), I sorely underestimated the amount of ColdFusion-based organizations in the region. We met with some awesome customers that are doing some great things with the product and got a ton of great feedback. We validated a number of our core features and learned a lot about high-traffic ColdFusion sites which gave us a number of new feature ideas. Most of the new language features for Centaur came out of this wave since Sanjeev is the genius Engineer behind our CFML parser.
Washington DC
Home sweet home (for a few days). During CFUnited we announced a number of features and held a few closed-door meetings with community leaders. We had a few interesting discussions regarding the syntactical implementation of ORM in ColdFusion. The primary debate revolved around matching Hibernate's service pattern or following an active record pattern. We put Sean Corfield, Ray Camden, Joe Rinehart, Barney Boisvert, Chris Scott and Mike Nimer in a room with the ColdFusion engineers and watched the sparks fly. I can say that the general consensus was not to implement an active record pattern with the conclusion that the community would be free to build frameworks off the core ORM functionality if they so desired. However, at the end of the day these decisions will ultimately be made by the recently announced CFML advisory committee.
Following CFUnited, Jason and I were joined by Manju Kiran from the ColdFusion engineering team. We met with several government customers (ColdFusion's largest vertical) in addition to various ColdFusion shops in and around Washington, DC. I'm still not at liberty to talk about some of the features that emerged in this wave but we did have a couple interesting conversations regarding ColdFusion pricing (not the overly typical "ColdFusion should be free" discussion). The crew at Interfolio brought up the interesting concept of a ColdFusion 'edge' server. They would like to be able to scale out certain features like PDF generation to other servers without having to pay the full cost of a ColdFusion Enterprise license. These 'edge' servers could handle distributed load of certain features but not necessarily process typical http requests.
Another licensing discussion which came up regarded the cost for testing and staging servers. Many organizations find the Developer Edition too limited when it comes to testing and would like to see a free license that covered more external IPs. One of the more common ideas is to expand the Developer Edition's limitation of 2 external IPs with an IP add-on pack. However, it should be noted that these discussions focused around Enterprise licenses being used in testing environments not Standard. These discussions led to the recent revelation that ColdFusion 8 doesn't require additional licenses for backup and disaster recovery servers.
LA and San Francisco
Last but certainly not least, our final wave had us crossing CA between San Francisco and LA to meet with some high profile customers. We talked about the struggles of managing large scale ColdFusion deployments, and software as a service powered by ColdFusion. One customer told us of the resurgence of ColdFusion as a standard development platform after many years of dormancy. ColdFusion 8 provided the only solution for integrating the various technologies throughout their enterprise. As a result, we talked about a number of emerging technologies that ColdFusion should integrate with, such as various CRMs and portals.
There is a lot more I'd love to share about these meetings, but I'll save that for another time...
Conclusion
At the end of every meeting we asked, "on a scale of 0 to 4, how would you rate this release: 0 being a complete disaster and the wrong direction; 4 being if you were in charge of ColdFusion, Centaur is the product you would build". Where in the first 2 waves we scored a consistent 3 to 3.5, our final waves gave us a consistent 4 out of 4. Centaur's #1 competition is ColdFusion 8, but this SyncDev process has brought me a good deal of confidence that Centaur takes us to a whole new level.
To fill their ever-growing need for ColdFusion developers, a few of the customers we met with had hired developers with backgrounds in Java or PHP and taught them CF. These team members especially gave Centaur high marks, leading me to believe this release will attract new talent to the CF community. One new Developer said "it's obvious you've learned from other technologies like Ruby and .NET, not only about what works, but what doesn't; and improved on those ideas."
Hopefully by relating the extent of the research we've performed over the past four months, you'll see how this release truly is being shaped by the community. I'm really looking forward to MAX this year where we'll be able to share some of the bigger pieces of the Centaur puzzle. As always, the planning doesn't stop here. While we have the bulk of what we are planning to build, throughout the various Alphas and Betas we're still open to new ideas and implementations. Keep those ideas flowing.
Rock n' Roll.
Todd Rafferty wrote on 07/14/08 6:22 AM
Thanks for the write-up and insight into the process.