The agile culture in the software engineering science started with the Agile Manifesto (Cunningham et al., 2001), written in 2001 by seventeen visionaries in which where working to find new ways of developing better software, which where also brought some principles commented based on my point of view and listed in the enumeration below:
Individuals and interactions over processes and tools: Most of software engineering processes started to produce thousands of pages and design models, diagrams, process work flow, etc… This principle changes dramatically the way things are organized in software development;
Working software over comprehensive documentation: Instead of writing a lot of comprehensive documentation, this principle put the idea of writing deliverable software instead of documentation first or to do not have documentations – it depends on the project;
Customer collaboration over contract negotiation: Tends to o have the customer involved in your process and not only and simply negotiating contracts; Iterative incremental approaches helps on that way to produce with better software quality.
Responding to change over following a plan: Iterations in the software development process may answer to changes and not to follow a plan. Moreover, with the introduction of the concept of devops and continuous integration for instance, you see that the agile principles written in the agile manifesto are pertinent until today.
Based on that principles, many processes tools and approaches where being produced over all these years in order to improve software development approaches. In the following items, I enumerate some of the advantages and disadvantages of using the agile methodology, considering processes, delivery, maintenance, test automation and software documentation.
Faster deliveries: With the implementation of the agile culture in terms on software process in software development, it can be observed that most of the software developed with iterative incremental approaches such as Scrum leads to faster deliveries, since based on its principles, Scrum for instance, works with a prioritized product backlog, in which may lead to a faster impression on the results of the project, which also may lead to a big change in the project.
Agile testing culture: The agile culture brought to us really good software development techniques such as TDD – Test Driven Development, in which allows to build testable software components, and more than that: to build software components with the test in mind leading to better software architectures(Clifton, 2014) and afterwards to be put in a continuous integration approach leading to regression testing which leads to a good practice looking over to keep the product integrity. Based on my experience, it can be only achieved with the agile culture in projects.
Difficult to work with big teams: Based on my experience, agile methods works better when you have smaller group of people working together. To be more precise, if you compare to RUP, where all the requirements and guidance to develop the software is written within specifications, you see that working with bigger groups of people may have a better result with ‘standard’ software development processes.
Weak documentation: In spite of not being a principle of not producing documentation, but to put deliverable in a bigger precedence, seems like there is a lack of documentation while working with agile methodologies, because of its dynamic process. Documenting requirements, interactions and work flows after having the product may seems like no sense in the agile culture.
Continuous UAT: The need of continuously validating with User Acceptance Tests, may lead to project cost to increase, in spite of possibly leading to a better final software quality (Waters, 2007).
Cunningham et al. 2017. Manifesto for Agile Software Development. [ONLINE] Available at: http://agilemanifesto.org/. [Accessed 11 June 2017].
Kelly Waters. 2007. Disadvantages of Agile Development. [ONLINE] Available at: http://www.allaboutagile.com/disadvantages-of-agile-development/. [Accessed 11 June 2017].
Marc Clifton. 2014. TDD is not the Failure, our Culture of Development Is. [ONLINE] Available at: https://marcclifton.wordpress.com/2014/05/11/tdd-is-not-the-failure-our-culture-of-development-is/. [Accessed 11 June 2017].