The time has come to stop the debate between Agile software developers and Traditional software developers. Both Agile and Traditional have some excellent practices. It is time to become “Software Engineers” and combine the “best” Agile software development practices with the “best” Traditional software development practices into what I call Hybrid Software Engineering.
The popularity of Agile software development has been increasing in the past few years. Agile has introduced a number of excellent software development practices such as: Iterations, Planning Poker, Simple Design, Small Releases, Pair Development, Continuous Development, and On-site Customers.
There are also quite a few excellent Traditional software development practices such as: Project Management Planning, Solution and Systems Architecture design, Configuration Management, Quality Assurance, Risk Planning and Inspections.
In this post and in future posts, I use the term Traditional software development practices to refer to “Waterfall” software development. The reason for this is that “Waterfall” software development been given a “bad” name by many Agile software development practitioners who claim that the “Waterfall” process does not work and Agile software development is “much better and faster”.
However, most organizations that I consult with still use Traditional software development practices to develop most of their software. Numerous software applications that we use everyday such as: Telephone Billing Systems, Insurance Company Claim Systems, Order Processing Systems, Banking Systems, Cellular Systems and Medical Device Systems to name a few, have all been developed and still being maintained by some form of Traditional software development process.
The Agile folks tend not to recognize the good Traditional software development practices and the Traditional folks tend not to recognize the good Agile software development practices.
The Need for Hybrid Software Engineering
The time has come to combine the “best” Agile software development practices with the “best” Traditional software development practices into Hybrid Software Engineering.
Hybrid Software Engineering would operate similar to the way a Hybrid automobile works. A hybrid car uses the electric engine in city driving, where constant breaking recharges the battery and uses the gasoline engine in highway driving were the gasoline engine provides a greater range of operation and can be refilled more easily. Hybrid Software Engineering would use Agile software development practices where they provide the most value and Traditional software development practices where they provide the most value.