by Clark Valberg
Today I sat down with Simon Horwith (http://www.horwith.com/) to discuss his upcoming talk at CFUNITED. Simon is the CIO of AboutWeb, editor of ColdFusion Developer's Journal, an Adobe Certified Master Instructor, a Flex developer, a consultant to some of the largest ColdFusion-using organizations in the world, and if all that's not enough, he's also quite the globe trotter.
| Clark Valberg: | So I wanted to chat with you a bit about your upcoming CFUNITED presentation, "Success from the Trenches - Building Better Applications". |
| Simon Horwith: | Sure, what would you like to know? |
| CV: | Is it true you've been building ColdFusion applications for 11+ years now? |
| SH: | Yes, sir, since version 1.5! |
| CV: | That's a long time to be in the game, man. You have to have seen quite a bit in your time. |
| SH: | It is true. I began with the old IBM midrange machines (System 36/38 and AS/400s) and got into Java when it came out. From there I began with web development and started using ColdFusion when it was released (it was much nicer than Live Wire). |
| CV: | Tell us a bit about your first "big" project. |
| SH: | My first Big Project... hmm... That's a tough one. "Big" is so relative. I can tell you that historically most of my projects weren't large in terms of team size (usually topping out around 7-10 developers), until about 6 years ago. Since then, I've overseen teams as large as 100+. |
| CV: | So in all this time, you must have had at least a few projects that fell under the "close calls" department. |
| SH: | "Close Call"? Oh sure. Close calls are common, but these days aren't usually a threat to a project's success. When I was starting out, there were so many projects that never would have launched if we didn't work 36 hour shifts at the end to get everything done. A close call for me now is when I don't come in about 15% ahead of schedule unless it's for very good reason. |
| CV: | Spoken like a true expert. |
| SH: | You said it, not me. [Smiles] |
| CV: | So I know you're involved with the architecture of applications, soup to nuts, including interfacing with the client, right? |
| SH: | Definitely. I'm usually very involved in requirements gathering, prototyping, etc. and then I oversee the development team... and I get more involved again at the tail end when load testing, delivery, etc., need to get done. I guess you could call me a very hands-on executive. I suffer from the horrible affliction of perfectionism, so it's tough for me to not get really involved in development. Plus, I'm adamant about making sure the client is happy, so I like getting knee-deep with the clients as well as the development team. I suppose I'm at risk of evolving into a technical project manager, if I'm not careful. |
| CV: | So in your talk, you tackle the question of ColdFusion and scalability. |
| SH: | Yes, that's right. |
| CV: | Why do you think there is a sort of confused conventional wisdom among many business people that ColdFusion applications don't scale? Where does this come from? |
| SH: | Well, those who are properly informed know the truth. It is completely possible to write scalable applications in ColdFusion. Countless organizations, including fortune 500 companies and government agencies, do it all the time. But, in all honesty, there are a few real issues that lend to the popularity of this myth. One is that ColdFusion, as a language, is relatively easy, which means that at some level it's actually easier to write applications that don't scale. And you know how fickle companies can be when it comes to technology. Sometimes all it takes is one bad experience and a client can write off a platform altogether. |
| CV: | So you get called in a lot to conduct high-level code reviews right? |
| SH: | Sometimes not so high-level. Quite often I've got to roll up my sleeves and pour over some code line-by-line. |
| CV: | So when you're doing all this, you must encounter all manner of evil committed in the name ColdFusion. |
| SH: | With the horrors I've confronted, sometimes I just feel lucky to have lived to tell the tale! |
| CV: | So tell me, when you first dive in there, are there any red flags that you keep an eye out for? |
| SH: | Oh, definitely, too many to mention! |
| CV: | Well, give us a nice big one.. |
| SH: | Big one – Hell, I'll give you three huge ones:
|
| CV: | Do tell? |
| SH: | Looping – Bad code is one thing. Bad code inside a loop is disaster. Recursion is very powerful and can also take your server down. Code that wastes ten milliseconds, when inside a loop that may loop thousands of times, will crush your server and/or page load times. Pay attention to what's inside your loops, for goodness sake! |
| CV: | I suspect that at some point, we've all seen some of these ... or even done them! |
| SH: | I'm sure... and I can tell you – I've suffered all four and then some. I am in a unique position in that I've not only written a lot of code (a lot of code) in the past twelve years since ColdFusion 1 came out. I've also performed, most likely, more code reviews than anyone on the planet. So I really know what does and doesn't work, and what to look for. |
| CV: | What about best practices? Do you feel there are enough resources for those in the business of developing enterprise level applications in ColdFusion? |
| SH: | No, I don't think there are enough resources on best practices. But the larger problem is that there is so much dispute over what is and is not a best practice, which makes it very difficult to provide reliable resources for developers. |
| CV: | Do you think frameworks wars contribute to this problem? |
| SH: | I think the debate over which framework is best is a silly one and doesn't really contribute to anything. Each has its strengths and weaknesses. I think the debate over whether or not to use a framework is useful. I should explain, though. The question of whether or not to use a framework is actually quite ridiculous in and of itself. This question has to be answered in the context of what you're trying to achieve, on a project by project basis. Hal Helms, Joe Rinehart, and every other framework advocate would tell you the same thing. That said, many people who use a framework immediately fall victim to the line of thought that "framework x will solve all my problems" and the debate will hopefully force them to think outside the box. It's worth noting that most "anti-framework" people suffer from the same problem; they think all frameworks must be bad. Everything needs to be taken in context. |
| CV: | So are these frameworks debates still meaningful? |
| SH: | They're meaningful because they make people think. There are just as many reasons not to use a framework as there are to use one. There are just as many reasons to use Fusebox as there are to use Model-Glue. There are an equal number of reasons not to use any of the above. When I get into these debates, it's for one reason: to make people think. |
| CV: | So if I'm interested in building really big enterprise ColdFusion applications, what kind of mental changes do I need to be making? |
| SH: | Wow, that's tough. Mental changes, huh? Well, I can tell you there are three things that every developer does need to think about if they're building an enterprise app. I assume an enterprise application is being built by a team, so every developer needs to take into account the fact that what they do must integrate with what others do, hopefully be consistent with what they do stylistically, and be maintainable by them. An enterprise application must scale, so scalability must be at the forefront of every thought when deciding how to code a specific piece. I also assume an enterprise application is more likely to integrate with other applications and/or to evolve over time than, say, a "Mom and Pop" application... so maintainability and flexibility are probably a bit more important and special attention should be paid to these characteristics of the application code base. |
| CV: | And you're going to be covering all this in your talk? |
| SH: | All this – and much, much more! |
| CV: | Well, sounds like a pretty comprehensive talk. Anything you want folks to be thinking about, or reading up on, before they come? |
| SH: | Nothing they need to read up on, but I'd love it if they came with questions. I speak publicly, not so much because I want to speak from slides, as because I like interaction. It's fun seeing what other developers are doing and assisting them, and helping them approach problems from a different angle. In my role at AboutWeb, I've been fortunate to be able to really push the envelope in exploring and experimenting with our processes, team development methodologies, and the technical side of implementing an architectural plan. I'm looking forward to passing on my findings from these experiences. |
| CV: | I know your sessions are usually pretty high-energy.. |
| SH: | I try. |
| CV: | Well, thanks a whole big bunch for joining me today, Simon. I look forward to seeing you at CFUNITED! |
| SH: | Thanks, Clark, I look forward to seeing you there as well. |
Those who wish to enjoy Simon's presentation at CFUNITED 2007 can register at https://secure.teratech.com/cfunited07/register.cfm. The conference takes place on June 25th- June 30th, 2007, with options for a four-day, three-day and one-day (Saturday only) conference package.
Clark Valberg is President of Epicenter Technology Consulting in Albany, NY. Epicenter provides software design and consulting services to organizations of all shapes and sizes. Clark's under-visited and under-authored blog can be found at this cleverly worded URL: http://www.clarkvalberg.com/