Welcome!

You will be redirected in 30 seconds or close now.

ColdFusion Authors: Yakov Fain, Jeremy Geelan, Maureen O'Gara, Nancy Y. Nee, Tad Anderson

Related Topics: ColdFusion

ColdFusion: Article

Optimal Development Environment

Optimal Development Environment

I've been out of the hard-core development team dynamic for more than a year now, so I was a little hesitant when CFDJ approached me about writing this article. Nevertheless, I have traveled to various ColdFusion shops around the globe and worked with numerous development teams.

The majority of these shops have a tight-knit group of developers, who eat and sleep CF and Web development. Others have one or two developers who happen to have heard about a cool technology that allows integration with powerful back-end systems with an easy-to-use, tag-based language, and have let CF lead them to the mountaintop. And then there are those shops filled with developers who swear they are top-notch but don't really have a clue as to when not to use pound signs.

But even those shops at the high end of the CF development spectrum can have environments that are not conducive to good coding practices. Managers, as well as developers, need to understand the crucial aspects of the development environment: team, architecture, and methodology. This article is an attempt to level the playing field, so that even the worst coders are in an environment that will help elevate their game.

Architecture
Although an understanding of the development process is fundamental to successful Web development, that discussion is beyond this article's scope. Rather, my focus is on facilitating this process. Rudimentary to this facilitation are the provision and protection of three distinct environmental areas: development, testing/staging, and production. Obviously, this article focuses on development, but it is important to stress the staging - which can be broken down further into quality assurance (QA) and user acceptance testing (UAT) - and production areas.

You should stage all good production code before going live. I learned this fundamental precept in the early days at WashingtonPost.com, where our access actually included storyboarding, development, staging, and production.

The staging/testing/QA server provides a platform to make necessary code revisions without touching "live" code. Following good principles, the staging server platform mirrors the production platform, and contains a frozen copy of the production code and database. This provides backup systems for disaster recovery, allowing full code migration to production, and extra resources to scale the site during unexpected load hikes.

It seems common sense to divide your development life cycle - at a minimum - into the development and production phases. However, you would be surprised - or maybe you wouldn't - at how many sites develop and modify code on production servers, data, and source code.

Again, good practice is to code and test functionality in development, and then migrate this functionality to a staging area for QA and/or UAT. Once approved, this code base should be frozen - then pushed to production. We never, ever want to modify production code! And code should never move from production to development - code should be copied from the staging server to development for code revisions. Let's not continue to bemoan such sites but rather proceed in breaking down the ideal development environment architecture.

The Development Server
The first step in achieving the optimal development environment is dedication: management must make the necessary expenditures for dedicated resources - human, hardware, and software. The development team and their IDEs are only part of this environment. (We will cover those later in the article.) For now, let's focus on the development server.

The ideal development platform will completely mirror the production architecture but usually on a single box. Say your production environment includes three systems: two Compaq 1850R servers running Windows 2000 Server, IIS 5, and CF 5, and a Compaq 3000 running Windows 2000 Server and SQL Server 2000. Then your development server should be a Compaq 1850R running Windows 2000 Server, IIS 5, CF 5, SQL Server 2000, and some source control software. (We will cover source control in a minute.) Some small shops can only budget for a small development server, but even a desktop HP system should be adequate for these shops.

Nevertheless, if budget permits, align the development systems parallel to production. This provides your developers with a simulated production playground, and provides extra machines for swapping in the event of catastrophic hardware or system failures. Mirroring the production architecture in development also helps eliminate hardware as a possible source for bottlenecks - and we all debug our code and eliminate bottlenecks, don't we?

Please refrain from implementing a Windows-based development environment for a Solaris production environment. If you realize most Web development tools are Windows-based, these only need to reside on your developers' desktops. So if your production system is a Solaris or Linux solution, your development system(s) should be also. Your developers' desktops should be the only Windows systems in the environment.

The Developer Desktop
What's more debilitating and frustrating to a developer or graphic artist than having to be creative on a slow, antiquated machine? In a perfect world, each developer and/or artist would have a fast, powerful desktop machine with the fastest available processor, ample RAM, and hard-drive space. For CF developers, this machine should not only include a licensed copy of CF Studio, but it should also be a miniversion of the production system.

This means each developer should be working with a local copy of the production source and data. In my last development team, each developer had his or her own copy of CF Studio, a CF server, a Web server, and a local copy of the database. The single-user edition of CF Enterprise that's bundled on the CF Studio CD is provided for development purposes. Developers can integrate this with Peer Web Services on their desktops and code against Microsoft SQL Server 2000 Personal Edition. The Personal Edition comes with both the Standard and Enterprise editions and is not sold separately. It is powerful enough for desktop development.

Obviously, if you have an Oracle shop, you'll want Oracle's developer editions - you want to keep your development, staging, and production environments as homogeneous as possible.

This configuration is ideal because the developers can work independently on local copies of source code and data instead of trampling one another on the development server, or worse, contaminating your production database. In order to do this properly, protect the code on the development server with enterprise-level version control software.

Most small shops use freeware versions, such as GNU SCCS (www.gnu.org) and ComponentSoftware's CVS (www.componentsoftware.com). Larger players in the change management or version control space are Perforce P4 (www.perforce.com), Merant PVCS (www.merant.com/products/pvcs/), Starbase StarTeam (www.starbase.com/products/starteam/), and Micro- soft Visual SourceSafe (http://msdn.microsoft.com/ssafe/). Although I have encountered Visual SourceSafe at most of the shops I have visited, more CF shops are turning to PVCS solutions.

The key features for change management are versioning, document comparison and merge, rollback, and deployment. Integration with your IDE, or integrated development environment, is a plus that will help win over your developers - and winning them over is just what you'll have to do if you have not already implemented a version control solution. Whichever change management system you deploy, the client software must make its use relatively easy in order for developers to consistently use it.

Frameworks and Methodology
Application frameworks and coding methodology coincides with change management and source control. Developers need good application frameworks to form a solid structure within which to properly code cohesive sites. CF has its own Application Framework instantiated with Application.cfm and OnRequestEnd.cfm; but this framework is really a building block for focusing on Session and Client variable management and some rudimentary application-level security. It does not address the larger, more prevalent issues of code reuse and symmetry, teamwork efficiency and productivity, commenting and documentation, and so on.

Furthermore, a sound application framework provides some base functionality fundamental to the site. This fosters code reuse, as developers can focus on retooling or customizing that piece of functionality instead of reinventing the wheel each time.

Methodologies provide guidelines for coding the application structure. A methodology is composed of standards. It dictates how to code the site or application so that your code is legible, manageable, and reusable. A good methodology reads easily and is documented thoroughly. It is stern enough to keep developers focused, yet flexible enough to allow developers to grow as they learn.

Application framework and methodology are essential to good rapid application development. However, most shops are guilty of coding without one or both.

A Familiar Scenario
You're an IT or Web shop manager of a team of three Web developers. Your team is pretty strong in fundamental CFML and quickly grasping the advanced concepts. Now you have the opportunity to hire what you perceive is a hotshot. You've heard this developer's name all over the CFUG meetings and you leap at the opportunity to enhance your staff.

This developer comes on board and right away begins to affect the team. However, instead of leaving his bags (bad coding habits) at the door, he starts littering your source code with his own unique indentation style, his own custom tags, and so forth. The code he writes is advanced stuff, but he neglected to comment the code, so your other team members cannot learn by his examples, debug his code, or make any editions without his hand-holding. What should you do?

The Other Side of the Story
You are the hired gun, and, upon walking into the place, you notice their staff is still coding at the CF 3.11 level - their code is full of pound signs, needlessly complex syntax, and deprecated tags. You remain humble, sit in your cubicle, and begin to do your thing. Your tasks are simple and the coding is basic - to you. You are pleased with your work so far, but at the next monthly meeting, you are reamed for your nonstandard methods and lack of comments, and accused of changing the entire application. Do you leave or stay?

A Slightly Different Scenario
Again, same setup as the first scenario, you're this same IT or Web shop manager of three. You decide to send your hungriest developer to a local Advanced ColdFusion Development course, figuring she will be able to pass the lessons on to the rest of the staff. Instead, she takes what she has learned and finishes the next major application revision with advanced methods. However, she now realizes her increased marketability, and serves you notice in lieu of a more lucrative position. She leaves without sharing her onion or documenting the code enhancements she just made. Now what do you do?

There are numerous scenarios to spin through, but I think the point is now obvious. A good application framework and methodology could have remedied all three scenarios. A sound application framework and clear, well-documented methodology would have facilitated the hired gun's adjustment to the team dynamic. Certainly some of his coding style could have enhanced the framework, providing impetus for upgrading the current methodology.

In the case of the hungry developer, providing good documentation for every code revision or even mandating a comment section at the head of each template as part of the coding methodology would allay this situation. If the developer jumps ship, then the rest of the team doesn't have to remain in the dark. The knowledge transfer has already taken place.

Where should shops turn for an application framework and/or methodology? iiFramework (www.iiframework.com) is a popular CF application framework. Other object-oriented CF application frameworks include SmartObjects (www.smartobjects.com) and cfObjects (www.cfobjects.com). Fusebox (www.fusebox.org) is the most popular CF methodology. Spectra is Macromedia's answer to the CF application framework and methodology paradigm. (Many readers are aware that version 1.5.1 is the last feature-additive release of Spectra as the core components are being melded into the next major release of the CF server.) Each of these has its share of strong points and shortcomings.

Patrick Steil does a great job comparing Fusebox, Allaire Spectra, and iiFrame-work in his article, "Rad++' Propel Your ColdFusion Project with Application Frameworks" in CFDJ (Vol. 2, issue 11). See Benjamin Pate's "Introducing Smart-Objects: Build Extendable, Reusable, Object-Based Components Using CFML," article in CFDJ (Vol. 2, issue 8) for an object-oriented CF framework primer.

The Weakest Link
The most important part of the development environment is the team dynamic. Like the proverbial chain, a development team is only as strong as its weakest developer. That said, the importance of a Web development team composed of technically sound individuals cannot be over-emphasized. There are three key members of the Web development team: Web/CF developer, graphic, and database.

At a minimum, a good Web developer today is well versed in HTML 4, Dynamic HTML (DHTML), Cascading Style Sheets (CSS), and ANSI-SQL. It is not enough to simply know about deprecated tags, such as the FONT tag, but in knowing how to correctly code cross-browser, inline style syntax is fundamental.

A strong Web developer has mastered complex DHTML and JavaScript routines - having built a vast library of eye-catching mouseovers, flying layers, and so on - and possesses some fundamentals of server-side languages such as CFML, ASP, JSP, and Java.

The complete Web developer is one who not only has mastered all of the above prerequisites, but whose lunch pail also includes the full Web development smorgasbord and Internet alphabet soup: XML\XHTML,WAP\CHTML\I-Mode, LDAP, SSL, and so forth.

Building upon that weak link, the consummate CF developer has mastered all of Ben Forta's tips and tricks, understands the complexities of structures and WDDX (Web Distributed Data Exchange) packets, and understands the intricacies of advanced caching techniques, load distribution, and session management. The well-rounded CF developer contributes to the community by actively participating in local ColdFusion Users Groups (CFUG).

The CF developer is the MVP of the development team, so it would behoove the good IT manager to have several MVP candidates on the team. To ensure MVP status, Macromedia has developed two certification offerings as part of its Macromedia Certified Professional Program (MMCP): Certified ColdFusion Developer and Certified Web Site Developer.

For a complete listing of CFUGs, visit the Allaire Web site at http://devex.allaire.com/developer/usergroups/; for more information on WDDX see www.openwddx.org/; for more information on ACP, see www.allaire.com/services/training/certification/index.cfm.

The final team members are the graphic artist and database administrator. Typically, the CF developer fills one or both of these roles as well, however, the team will function more productively if each member focuses on the area of his or her specialty in designing/developing the site or application. A great number of CF developers can animate images in tools like Macromedia Fireworks or crop photos with Adobe Photoshop. However, there is no substitute for a true graphic designer who can take an idea from charcoal and sketchpad to full-length Flash animation in a few hours.

Likewise, there is no substitute for a good DBA to manage your database. For dynamic Web applications, nothing is as vital and volatile as the data in the database. It is indeed the backbone and life of the application. Take it from a former CF Developer/SQL Server DBA, you don't want your CF developer writing code and worrying about Database Maintenance Plans, truncating logs, proper replication scenarios, or any other DBA functions.

We have a saying in the industry: "Let the Database and Web Server do their jobs, and let ColdFusion do its." The same goes for the development team - let each member do his or her job and focus on his or her specialty. However, separation of power does not equal segregation of force. Dividing the Web team along duty lines is not a call to build up walls, put on blinders, or break the lines of communication.

Communication is the key to success in any relationship - Web development is no different. Part of letting the database do its job is the CF developer asking the DBA to create a stored procedure on the database to replace a long-running query.

Tools of the Trade
The key to rapid application development is accessibility to tools that help you effectively build and deploy powerful, high-end applications quickly. There are a myriad of Web development tools, or integrated development environments (IDE), and graphic suites out there to help attain this goal. I started my Web development career with Notepad, then moved on to Kenn Nesbitt's WebEdit, and Nick Bradbury's HomeSite - acquired by Allaire in 1996.

Today, the industry is crowded with good WYSIWYG editors, such as Micro-soft's FrontPage 2000 and Adobe's GoLive. I won't even go into the numerous Java IDEs. (Sorry, I did not intend this to be a biased product review, but there are really only two IDE choices for serious CF development: UltraDev and Studio.)

When it comes to graphics, artists usually pick their poison and stick with it. Adobe Photoshop (www.adobe.com/products/photoshop/main.html) continues to be the industry standard for traditional graphics and photo retouching, shadowed by CorelDraw 10 Graphics Suite (www3.corel.com/cgi-bin/gx.cgi/AppLogic+FTContentServer?pagename=Corel/Product/Details&id=CC1IOY1YKCC), Ulead PhotoImpact (www.ulead.com/pi/runme.htm), and Macromedia Freehand (www.macromedia.com/software/freehand/). Macromedia's Fireworks 4 (www.macromedia.com/software/fireworks/) has become the favorite among Web developers for Web graphics creation, animation, optimization, and integration.

Macromedia solidified its spot atop the IDE market with the release of its Dreamweaver UltraDev. UltraDev takes Dreamweaver to the edge by complementing the robust Web design engine with support for such data-driven languages as CF, ASP, and JSP. UltraDev integrates with ColdFusion Studio to provide an unparalleled combination of database and debugging tools - and visual development environment to help rapidly design and deliver powerful applications.

For traditional CF development, ColdFusion Studio is the best - hands down! ColdFusion Studio is the de facto CF IDE - pardon the pun. Allaire built Studio on its award-winning HomeSite HTML editor and added features such as full CFML (ColdFusion Markup Language) support, Remote Data Services, a CSS editor, and Source Code Control support. Studio's Project metaphor integrates with any Microsoft Source Code Control (SCC) API-compliant versioning software to help facilitate team coordination on all applications: simple or complex. Again, Macromedia has done a great job of integrating its leading tools - Studio for CF development, UltraDev for visual development - into one sweet package, ColdFusion 4.5 UltraDev 4 Studio.

As I said, CF Studio is my tool of choice for CF development. However, I am increasingly finding Dreamweaver UltraDev and Fireworks on more developer's desktops, and Photoshop on graphic artists' Macs, at each shop I visit.

Conclusion
The optimum CF development environment has dedicated human, hardware, and software resources. Developers use industry-leading IDEs to develop against local resources and within a versioning system on the dedicated development server. The staging server gets a copy of this code base for testing, where it is frozen upon acceptance for migration to production.

Your job as an IT or Web shop manager is to make this development environment conducive to your developers' efforts. Your job as CF developers is to use standards-based methodologies within application frameworks to help facilitate the rapid application development process.

More Stories By Sheldon Sargent

Sarge is Sr. Technical Support Engineer, Adobe Systems, based in Gilbert, Arizona. He has been coding advanced applications in CF since version 2.0.

Comments (0)

Share your thoughts on this story.

Add your comment
You must be signed in to add a comment. Sign-in | Register

In accordance with our Comment Policy, we encourage comments that are on topic, relevant and to-the-point. We will remove comments that include profanity, personal attacks, racial slurs, threats of violence, or other inappropriate material that violates our Terms and Conditions, and will block users who make repeated violations. We ask all readers to expect diversity of opinion and to treat one another with dignity and respect.


@ThingsExpo Stories
In this strange new world where more and more power is drawn from business technology, companies are effectively straddling two paths on the road to innovation and transformation into digital enterprises. The first path is the heritage trail – with “legacy” technology forming the background. Here, extant technologies are transformed by core IT teams to provide more API-driven approaches. Legacy systems can restrict companies that are transitioning into digital enterprises. To truly become a lea...
Internet of @ThingsExpo, taking place November 1-3, 2016, at the Santa Clara Convention Center in Santa Clara, CA, is co-located with 19th Cloud Expo and will feature technical sessions from a rock star conference faculty and the leading industry players in the world. The Internet of Things (IoT) is the most profound change in personal and enterprise IT since the creation of the Worldwide Web more than 20 years ago. All major researchers estimate there will be tens of billions devices - comp...
Just over a week ago I received a long and loud sustained applause for a presentation I delivered at this year’s Cloud Expo in Santa Clara. I was extremely pleased with the turnout and had some very good conversations with many of the attendees. Over the next few days I had many more meaningful conversations and was not only happy with the results but also learned a few new things. Here is everything I learned in those three days distilled into three short points.
“We're a global managed hosting provider. Our core customer set is a U.S.-based customer that is looking to go global,” explained Adam Rogers, Managing Director at ANEXIA, in this SYS-CON.tv interview at 18th Cloud Expo, held June 7-9, 2016, at the Javits Center in New York City, NY.
Why do your mobile transformations need to happen today? Mobile is the strategy that enterprise transformation centers on to drive customer engagement. In his general session at @ThingsExpo, Roger Woods, Director, Mobile Product & Strategy – Adobe Marketing Cloud, covered key IoT and mobile trends that are forcing mobile transformation, key components of a solid mobile strategy and explored how brands are effectively driving mobile change throughout the enterprise.
What are the new priorities for the connected business? First: businesses need to think differently about the types of connections they will need to make – these span well beyond the traditional app to app into more modern forms of integration including SaaS integrations, mobile integrations, APIs, device integration and Big Data integration. It’s important these are unified together vs. doing them all piecemeal. Second, these types of connections need to be simple to design, adapt and configure...
Adobe is changing the world though digital experiences. Adobe helps customers develop and deliver high-impact experiences that differentiate brands, build loyalty, and drive revenue across every screen, including smartphones, computers, tablets and TVs. Adobe content solutions are used daily by millions of companies worldwide-from publishers and broadcasters, to enterprises, marketing agencies and household-name brands. Building on its established design leadership, Adobe enables customers not o...
SYS-CON Events announced today the Enterprise IoT Bootcamp, being held November 1-2, 2016, in conjunction with 19th Cloud Expo | @ThingsExpo at the Santa Clara Convention Center in Santa Clara, CA. Combined with real-world scenarios and use cases, the Enterprise IoT Bootcamp is not just based on presentations but with hands-on demos and detailed walkthroughs. We will introduce you to a variety of real world use cases prototyped using Arduino, Raspberry Pi, BeagleBone, Spark, and Intel Edison. Y...
Ask someone to architect an Internet of Things (IoT) solution and you are guaranteed to see a reference to the cloud. This would lead you to believe that IoT requires the cloud to exist. However, there are many IoT use cases where the cloud is not feasible or desirable. In his session at @ThingsExpo, Dave McCarthy, Director of Products at Bsquare Corporation, will discuss the strategies that exist to extend intelligence directly to IoT devices and sensors, freeing them from the constraints of ...
SYS-CON Events announced today that Sheng Liang to Keynote at SYS-CON's 19th Cloud Expo, which will take place on November 1-3, 2016 at the Santa Clara Convention Center in Santa Clara, California.
Technology vendors and analysts are eager to paint a rosy picture of how wonderful IoT is and why your deployment will be great with the use of their products and services. While it is easy to showcase successful IoT solutions, identifying IoT systems that missed the mark or failed can often provide more in the way of key lessons learned. In his session at @ThingsExpo, Peter Vanderminden, Principal Industry Analyst for IoT & Digital Supply Chain to Flatiron Strategies, will focus on how IoT de...
Complete Internet of Things (IoT) embedded device security is not just about the device but involves the entire product’s identity, data and control integrity, and services traversing the cloud. A device can no longer be looked at as an island; it is a part of a system. In fact, given the cross-domain interactions enabled by IoT it could be a part of many systems. Also, depending on where the device is deployed, for example, in the office building versus a factory floor or oil field, security ha...
24Notion is full-service global creative digital marketing, technology and lifestyle agency that combines strategic ideas with customized tactical execution. With a broad understand of the art of traditional marketing, new media, communications and social influence, 24Notion uniquely understands how to connect your brand strategy with the right consumer. 24Notion ranked #12 on Corporate Social Responsibility - Book of List.
Fact is, enterprises have significant legacy voice infrastructure that’s costly to replace with pure IP solutions. How can we bring this analog infrastructure into our shiny new cloud applications? There are proven methods to bind both legacy voice applications and traditional PSTN audio into cloud-based applications and services at a carrier scale. Some of the most successful implementations leverage WebRTC, WebSockets, SIP and other open source technologies. In his session at @ThingsExpo, Da...
Businesses are struggling to manage the information flow and interactions between all of these new devices and things jumping on their network, and the apps and IT systems they control. The data businesses gather is only helpful if they can do something with it. In his session at @ThingsExpo, Chris Witeck, Principal Technology Strategist at Citrix, will discuss how different the impact of IoT will be for large businesses, expanding how IoT will allow large organizations to make their legacy ap...
What happens when the different parts of a vehicle become smarter than the vehicle itself? As we move toward the era of smart everything, hundreds of entities in a vehicle that communicate with each other, the vehicle and external systems create a need for identity orchestration so that all entities work as a conglomerate. Much like an orchestra without a conductor, without the ability to secure, control, and connect the link between a vehicle’s head unit, devices, and systems and to manage the ...
What does it look like when you have access to cloud infrastructure and platform under the same roof? Let’s talk about the different layers of Technology as a Service: who cares, what runs where, and how does it all fit together. In his session at 18th Cloud Expo, Phil Jackson, Lead Technology Evangelist at SoftLayer, an IBM company, spoke about the picture being painted by IBM Cloud and how the tools being crafted can help fill the gaps in your IT infrastructure.
For basic one-to-one voice or video calling solutions, WebRTC has proven to be a very powerful technology. Although WebRTC’s core functionality is to provide secure, real-time p2p media streaming, leveraging native platform features and server-side components brings up new communication capabilities for web and native mobile applications, allowing for advanced multi-user use cases such as video broadcasting, conferencing, and media recording.
In his session at @ThingsExpo, Kausik Sridharabalan, founder and CTO of Pulzze Systems, Inc., will focus on key challenges in building an Internet of Things solution infrastructure. He will shed light on efficient ways of defining interactions within IoT solutions, leading to cost and time reduction. He will also introduce ways to handle data and how one can develop IoT solutions that are lean, flexible and configurable, thus making IoT infrastructure agile and scalable.
Cognitive Computing is becoming the foundation for a new generation of solutions that have the potential to transform business. Unlike traditional approaches to building solutions, a cognitive computing approach allows the data to help determine the way applications are designed. This contrasts with conventional software development that begins with defining logic based on the current way a business operates. In her session at 18th Cloud Expo, Judith S. Hurwitz, President and CEO of Hurwitz & ...