"Three months, or you're dead!"
These were the opening words of the keynote speaker at a conference I attended over what now seems a long time ago. Three months, the speaker's argument went, was the time available to turn an idea into a fully realized solution. After that, the idea would be out of date and the competition ahead.
The specifics of the rest of the presentation have since faded from memory. The speaker went on to cover the intricacies of B2B and C2B for e-business, but by that stage, my thoughts were elsewhere. The point had been well made: The business world had embraced the Internet, and with it, a new unit of measureInternet-time.
On reflection, the speaker's opening remarks were something of a watershed in my approach to software engineering. Quality is fundamental to all projects. Nevertheless, the need to accommodate change quickly puts another watchword at the top of the list, alongside quality: rapidity!
Modern-day business continues to move at an ever-faster rate, and the enterprise systems that underpin those businesses are required to keep pace. As software professionals, we find ourselves under increasing pressure not only to deliver on quality but also within ever-decreasing time-frames. Compounding these demands further is a marked rise in system complexity. Gone are the days when a system's boundaries were constrained to a single organization. The allure of the Internet for e-commerce has led to demands for systems that require integration on a truly global scale.
Meeting this demand is not easy. Indeed, it has never been easy. In his landmark article No Silver Bullet, Fredrick P. Brooks argued there would be no new breakthrough in software development technology that would result in even a single order of magnitude increase in productivity [Brooks, 1987]. Although published over a decade ago, Brooks's statement still holds true. Despite this perceived inability to address the essential complexity of software development, the business world continues to make ever-increasing demands of software professionals despite the poor track record of the IT industry in delivering quality solutions to even medium-term timeframes. Further compounding the problem is the current climate of fierce competition between software vendors, who vie to outdo one another in a bid to win work in what is presently a high-risk market.
Therefore, the bar continues to rise for us as IT professionals. In order to keep pace with these steadily escalating demands and rising competition, software developers are turning to a variety of new and exciting methods, technologies, and tools. Agile methodologies are touted as a panacea for those projects that continue to fail to come in on time and under budget. The word agile is proving very popular, with proponents of agile modeling techniques promising to revolutionize our entire approach to systems development. Likewise, others are looking beyond the object-oriented paradigm and seeking to embrace aspect-oriented programming, with its weaves and crosscuts. Supporting all of these new ideas and advances is a maturing base of cutting-edge development tools that assist the software engineer in bringing these techniques to the Java 2 platform.
The IT world is indeed changing rapidly, and not just in terms of technology advances. Today, the speaker's words are more true than ever: Three months, or you're dead!