Why you must be Agile ?
At first everything was chaos. That could be the phrase opening of a book that told the story of the Information Technology industry.
In its beginnings, systems development was an artisanal, risky, non-standard, and a very expensive activity. One long phase of testing and corrections at the end of the project could indicate that the quality of the final system was inferior to what you would expect from a reliable product.
By the 1970s, several methodologies derived directly from engineering, which described a project life cycle defined by phases sequential, currently known as waterfall or cascade. This method defines that to start a phase it is necessary that the previous one is finished and that each phase is linked directly to a specific set of activities, resembling a factory production line.
Although some teams have had success using methodologies of this type, about 24% of IT projects are still canceled or discarded after delivery, as described in Chaos Report (2018), published by Standish Group.
The idea of a software factory conjures up an image of predictability, cost, and risk reduction. However, the software has several features intrinsic that make its development essentially different of the traditional model developed by Henry Ford: series production.
A factory produces the same object type repeatedly, thus reducing the cost production unit. Developing software is an intellectual effort closest to the design of new products, while most repetitive activities can be automated.
Mutability is another essential feature of a software. Unlike buildings, cars, and other objects in the physical world, a software system is relatively easy to modify and adapt to new situations. Usually, the corporate systems have long live, so it is vital that this feature is leveraged at maximum, allowing systems to monitor the evolution and of the business during its lifecycle.
Agile methodologies emerged as a response to the need for disciplined and reliable processes, but more in line with the peculiar nature of the software. Instead of meticulous planning with rigorous controls of changes in other methodologies, Agile faces the change as an opportunity. Although there are different flavors of Agile (Extreme Programming, Scrum, FDD, Crystal, Agile UP, among others), the Agile Manifesto summarizes the values and principles common to all.
Agile emphasizes that customer collaboration is a critical factor of success; that progress is measured through the delivery of completed software implemented across organizations.
Adopting a lifecycle partitioned into iterations with fixed periods lasting between one and four weeks, teams smaller and more capable, negotiable scope contracts, customer involvement throughout all the phases of the project, test-driven development and massive use of tests units are some of the techniques used to allow adaptability in a disciplined way.
Agile teams are self-managing, they receive objectives and decide how best to reach them within the context of the company. Several techniques can be used to follow the project progress, such as fifteen-minute daily meetings in stand-up format, where the Participants stand and report the status of their work and any difficulties they are experiencing and the use of kanban boards and burn-down charts to communicate project status to all participants.
Although Agile is not a panacea for all types of projects, their principles and practices can constitute a powerful tool for project managers development, as they do not repeat traditional models vicious and, at the same time, provide the technical teams an agile and effective methodology for the systems development.