Software Quality, Schedule and Features

Tom Jordahl told me that "Building software is a lot like making sausage. You probably don't want to see how it's made". To a certain level he's right. Like food, software goes through an incredible transformation before it's presented that's not always pretty. Software starts off with a grand vision where the possibilities are endless. Over time deadlines get closer and closer while specs get smaller and smaller and eventually you are forced to readjust that vision to fit reality. ColdFusion is no different.

It was a tough week. A make or break week. We're coming down the home stretch for development on Centaur and Bolt and we had to make some tough decisions. Expectations around Bolt are extremely high, not only from the community, but from the ColdFusion team itself. Unfortunately, the reality is that we can't build an IDE the likes of Visual Studio in one release (not if we want to release it in 2009). So the vision needed to be adjusted. Now I know in the past you normally only hear good news about what Adobe's building, but I think it's fair you hear all the news… even if it's not great.

This week we had to cut some features. Features talented engineers spent weeks developing. Features based on innovative ideas that might have patents pending. It sucked… big time.

In a competitive environment like web application servers, there is a tendency to overload each release with features, even when it sacrifices quality. Adobe is lucky to have some incredible engineers who manage to knock out high quality features in very little time. In fact, I'm amazed how many features make it into each release and the proficiency and dedication our engineers apply to them. However, as good as a shot you may be, shooting from the hip isn't the best way to win a gunfight.

We've applied the following principles to how we build ColdFusion and Bolt that I think all software creators should follow. Quality needs to be your top goal, followed by the schedule. Only after those two criteria are met should you ship a feature. This means that features must be sacrificed for schedule, and the schedule can only be sacrificed for quality. You cannot sacrifice quality or slip the schedule just to add another feature to your marketing materials. While a ton of features may give you an advantage in the near term, your competitors can and will copy them. But it's a lot harder to fake quality. Rather than shoot from the hip with a feature shotgun, get to the fight early and spend the time and effort to line up a sniper shot. That way when it comes time to fight, all you need to do is pull the trigger. ¹

This means that if a feature isn't completed by the first beta, you don't ship it. We're sticking hard to this rule for ColdFusion and especially a new product like Bolt. It allows our engineers to spend all the time in between private beta and launch fixing bugs and adding polish. So while we might not end with as many features as we'd first hoped, the ones we've got should be rock solid.

This is how we are building ColdFusion because your expectations are different for us than they are for our open source competition. When you pay for something, you expect more. It's not that big of a deal when something you had little investment in turns out to be less than you expected. I think our critics want to compare themselves with ColdFusion based on checkboxes because at that superficial level they can seem equal. But let me tell you friends, all features are not created equal.

Now before you join me in my lost feature pit of despair, there is a silver lining. We haven't actually dropped any features. We've just postponed them to a later release. Desktop software like Bolt can be rev'd a lot faster than server software can. Meaning, you probably won't have to wait as long as you do in between ColdFusion releases to get to that grand vision we're still chasing.

¹ These principles can also be applied to Halo.

Comments

Todd Rafferty

Todd Rafferty wrote on 02/16/09 10:16 AM

"Desktop software like Bolt can be rev'd a lot faster than server software can."

Depends on Adobe's pricing.
Jim Priest

Jim Priest wrote on 02/16/09 10:38 AM

This will be an interesting thread to follow I think. These days I'm not so sure quality is such a top priority, at least IMO. As long as the company is open with me on development and bug fixes I can live with a bit of rough edges. Especially if it means I get software now vs. waiting an undisclosed amount of time.

Google, Ubuntu and to a certain extent CFEclipse are great examples of unpolished software I use everyday with great success and few complaints.

I wish Adobe were more transparent during development - esp. concerning Bolt - there is no competition in the CF IDE market - why the secrecy?

I even have survey data I'd be happy to send Adobe as to what people want in a CF IDE :)

For new features you could enable voting mechanisms or other forms of feedback.... Here's a list of features we are thinking about - which do you want to see in release 1?
John Farrar

John Farrar wrote on 02/16/09 12:33 PM

I agree wiht the comment on price. This is a double edged issue. If you plan to market a pro and enterprise version (like ColdFusion) then perhaps you could release a standard IDE earlier... and enterprise/pro version later. Otherwise it seems like the price margin may get in the way when adding new features and the powers looking at the ROI. Quatlity is a must for commercial software, and schedule is helpful but lest we get our spiders running in fear of being short of eight legs you have only mentioned a two legged beast here! (couldn't resist the spider illustration)
Jenna

Jenna wrote on 02/20/09 12:07 PM

Two key words that you mentioned when it comes to the success of any project or any product are "quality" and "schedule". I could not agree more. How can we guage the success of a project if we are not able to deliver as agreed upon on the schedule. Quality is the best selling point of a project or product.
Chris Dawes

Chris Dawes wrote on 02/22/09 6:57 PM

i'm still wondering why there isn't a workgroup version for those who want enterprise performance without clustering and alike??
Elias

Elias wrote on 02/24/09 4:29 PM

Please remember that in the past Coldfusion IDE's such Home Site, Dreamweaver didn't met the expectations of a Web Developer (Designer maybe) but we are requiring more and more to rely on a Enterprise level IDE to develop high available web applications that are stable and manageable.

With that said we need BOLT but we a need an ELECTRIFYING BOLT!