Back in the mainframe days, software development was complex and time-consuming. Following a formal software methodology was essential to building applications that had the required quality and functionality. Then came the client-server era, and the formal methodologies that were so essential to mainframe development were found to be too inflexible and time-consuming, so they gradually fell out of favor.
You can't simply double the size of your development team and expect the project to be completed in half the time.
Meanwhile, the age of the personal computer came upon us, and application developers were faced with market-driven release schedules that were more aggressive than ever before, and rapid application development (RAD) was born.
RAD techniques like fourth-generation languages and iterative lifecycles did accelerate development substantially, allowing application development to keep up with Moore's Law, but at a price: as the market drove release schedules ever shorter, developers worked harder and longer. Work weeks of sixty hours or more became common, and developers would burn out and quality would suffer. As a result, RAD became a dirty word among developers.
So, if schedule, feature set, and quality are constrained, we just need to spend more money, right? Well, yes, up to a point. It definitely makes sense to hire the best people and give them the best tools you can. But you can't simply double the size of your development team and expect the project to be completed in half the time -- nine pregnant women can't have a baby in a month! For any project, there is an optimal team size. Adding more people past this optimum actually increases the schedule, because of the additional management overhead on the one hand, and the limitations on working in parallel on the other.
Thus we have a constrained schedule, minimum acceptable quality, and the optimal team size, so spending more money won't help. That leaves one corner -- the feature set. This is the corner that must give. Fortunately, the nature of the Internet can make this flexibility practical.
Targeting the feature set
Because of the distributed nature of the Internet, it is possible to add features to a project without placing a burden on the users. With typical application development, additional features must be collected into upgrades, which must be installed manually by each user. On the Internet, functionality can be added behind the scenes. For example, instead of putting all 500,000 items up for sale on your e-commerce site, put up the most important 5,000. Develop an architecture that will allow you to scale your site to offer the entire product line, but stage the rollout of the products so that you can get the initial site up more quickly.
Another even more significant area to target for a staged rollout is the back-end integration of a site. A full-featured e-commerce site might have real-time credit-card authorization, live inventory updating, and tight integration with an ERP package, enabling management to access live financial data. However, you may not need all these features in the first six months. Which is more important to meeting your company's business objectives: ERP integration or getting your e-commerce site up and running quickly, so that you can build your brand and leverage your first mover advantage? Sure, your management (or your client) say they want everything right away, but if you get them to take a closer look, you will find there are certain business requirements that are more urgent than others.
Targeting the feature set takes place in the requirements definition phase of the software lifecycle. Therefore, an Internet-oriented methodology should contain a requirements definition process that enables the developers and the stakeholders to work together to prioritize requirements. One such methodological best practice is called joint application development (JAD), where all stakeholders in a project follow an intensive, structured process for defining and prioritizing the requirements in a project. By following JAD, an e-commerce project can go live on Internet time without sacrificing quality.
Internet development is different from traditional application or client-server development in a very significant way: Internet development is much more than creating software. The strategic, creative, and marketing components of an e-commerce project are every bit as important as the software component. Furthermore, these components must be tightly integrated in order to create a successful site. From the developer's point of view, graphic design might be needed to create the gifs and jpegs that go on the pages. In reality, however, graphic design is one component in the overall creative strategy of a site, which concerns brand building, audience development, public relations, and more.
The better integrated the creative and technical aspects of an e-commerce site are, the more effective the site is.
So, what does all this talk about brand building and creative strategy have to do with software development? The answer is everything. The better integrated the creative and technical aspects of an e-commerce site are, the more effective the site is. Therefore, an Internet development methodology should include the efforts of the creative developers, as well as the technical ones.
Because traditional methodologies do not include the creatives in the process, the creative development is typically performed separately from the software development. As a result, schedules are delayed, either because the creative development must be completed before the technical development begins, or they take place at the same time but separate, leading to a complicated, time-consuming integration process toward the end of the project. In order to accelerate the schedule of an Internet project, the methodology must integrate the efforts of all the contributors to the project.
The Rational Unified Process
One methodology that works well with such cross-functional projects is the Rational Unified Process (RUP), published by Rational Software. RUP contains six basic best practices of software development: manage requirements, control changes to software, develop software iteratively, use component-based architectures, visually model software, and verify software quality. I can't cover RUP in depth in this article, but I can touch upon the basics of RUP and how they can be used with Internet development.
The requirements for Internet projects are best managed using the JAD technique described above. It is especially important to remember that the requirements include creative requirements such as brand development, as well as the software requirements of the project.
Following the phased feature set approach is an excellent way to control changes to the software. Instead of having a single release date with a designated functional scope, there are several release dates, each with different features. As changes to the plan occur, they can be scheduled at the appropriate time. A new feature may cause the schedule for a less urgent feature to be delayed, but the core initial functionality can still be released on schedule.
The best practices of iterative development, component-based architectures, and visual modeling lend themselves nicely to Internet development. Object-oriented programming is particularly useful in the scalable, distributed world of e-commerce.
Finally, by targeting the feature set, we do not need to skimp on quality. An e-commerce project can and should undergo thorough software and performance quality assurance, which can be completed in an accelerated time frame, as long as the number of features to be tested is under control.
It's been a while now since Internet development meant throwing together a Web site. Today's e-commerce sites are enterprise-scale, distributed architectures coupled with professional creative strategy. Nevertheless, this business still moves on Internet time, requiring aggressive schedules without sacrificing quality. Such requirements can only be met by following a methodology that is suited for Internet development.
- Rapid Development: Taming Wild Software Schedules by Steve McConnell
- The Rational Unified Process: An Introduction by Philippe Kruchten