Imagine an enterprise software development project where the customer says “we are going to take a long time to make this happen and we don’t often see any results doors next for at least two years”. Can you imagine it? Me neither, and the truth is that it will probably never happen: ) So what is reality? In the real world of enterprise software development, the key for any development team is to provide maximum value to and work closely with the customer, to be able to build a culture of true genius, and to be able to fulfill the customer’s changing needs in a way that there is minimal trouble, if any.
In the early days of software development, it was not uncommon for months to pass before any development began, and once development started, it could be months or years before just about any finished product was ready for testing. The requirements definition and gathering process was often very long, and in many cases the development team was separated from the customer.
Once requirements were complete and development had begun, change was not something that was easily entertained. Let’s keep in mind that concepts such as Continuous Integration and Configuration Management were unknown and use of source control repositories was not as mainstream as it is now. A difference in requirements was just quite difficult to accommodate and was generally frowned upon.
The Agile Methodology
Agile was first introduced in February 2001 via the Agile Manifesto, a document created by a small grouping developers who met in Snowbird, Utah to discuss the principles behind a way to do lightweight software development. Ever since then, the Agile Methodology has grew and been widely implemented by software development teams and companies worldwide.
When we discuss Agile Methodologies, we must also mention Scrum, Lean Software Development, Kanban, Dynamic Systems Development Method (DSDM), and Extreme Programming, since these methodologies all share the same philosophy.
In a nutshell, Agile is about communication, teamwork, collaboration, specialized, iteration, feedback, and of course, agility! The development gumption is broken down into efforts of short duration and change is not only expected, it is appreciated by all stakeholders. To successfully implement Agile, a company must embrace its concepts and philosophies at all levels.
Agile offers a framework with which teams can maintain focus on rapidly delivering working software and providing true business value, even in environments where the technical and functional assets and landscape may vary or change routinely. We can say that Agile allows development teams to provide maximum business value through the delivery of truly valuable, working software that meets the business needs. How do we know that the software truly meets the business needs? Because all of the stakeholders may take place and quality and scope verification take place in short, iterative menstrual cycles. Deviations from the true intent behind a feature or little bit of functionality can be identified quickly and adjusted in an agile manner.