Historically, software development has been a tedious and complex task, where often the profitability of it was well below its cost. They were times of endless developments, endless lines of code where any change in the initial project was a real headache for the developer. Little (or no) tolerance and / or anticipation of changes, archaic methods of programming, etc.did not contribute to generating an adequate ecosystem for the correct development of software.
Margaret Hamilton, director of software engineering for the Apollo project posing next to the project’s printed code
Over the years, new programming languages (in theory simpler) emerged…), more friendly environments, frameworks that facilitated many tasks, concepts that companies dedicated to software development quickly embraced to improve the quality and delivery times of their projects. But is this enough today?
In such a changing world, where time and profitability predominate, companies often forget the third fundamental factor… quality. But is it possible to put these three variables into the equation and get a positive result?
If we look back a bit, in 2001, A group of experts, at the request of Engineer Kent Beck (creator of the XP and TDD methodologies), met to discuss the situation of software development and coined the term “agile methodologies”. The expression referred to a framework in which it was possible to increase the quality of development, reduce time, eliminate uncertainty, accept tolerance to change… in short, increase customer satisfaction.
The meeting attendees signed the following letter:
“We are discovering better ways to develop
software both from our own experience and
helping others. Through this work we have
learned to value:
Individuals and interactions about processes and tools
Software running on extensive documentation
Collaboration with the customer about contractual negotiation
Response to change on follow a plan
That is, although we value the elements on the right,
we value more those on the left.”
Which gave rise to the 12 principles of the Agile Manifesto
1. Our highest priority is customer satisfaction through the early and continuous delivery of software with value.
2. We accept that requirements change, even at late stages of development. Agile processes leverage change to provide competitive advantage to the customer.
3. We deliver functional software frequently, between two weeks and two months, with preference to the shortest possible time period.
4. Business managers and developers work together on a daily basis throughout the project.
5. Projects are developed around motivated individuals. They must be given the environment and support they need, and entrusted with the execution of the work.
6. The most efficient and effective method of communicating information to the development team and among its members is face-to-face conversation.
7. Running software is the main measure of progress.
8. Agile processes promote sustainable development. Promoters, developers and users must be able to keep a steady pace indefinitely.
9. Continuous attention to technical excellence and good design improves agility.
10. Simplicity, or the art of maximizing the amount of work not done, is essential.
11. The best architectures, requirements and designs emerge from self-organized teams.
12. At regular intervals the team reflects on how to be more effective to then adjust and perfect their behavior accordingly.
Therefore, the three variables are perfectly associated in the equation “agile methodologies”, which means that a company dedicated to software development that does not opt for an agile methodology will hardly be able to survive the current environment but, above all, the New Times that are coming.
That is, the question should not be is it necessary to use an agile methodology to develop software? The question, rather, should be which Agile methodology do I choose to develop software?
Some of the main options, today, are:
1. Scrum:”Scrum is a framework for developing, delivering and maintaining complex products.”
2. eXtreme Programming (XP): “Extreme Programming (XP) is an agile software development framework that aims to produce higher quality software and a better quality of life for the development team.”
3. Kanban: “Information system that harmoniously controls the manufacture of the necessary products in the quantity and time required in each of the processes.”
4. Scrumban: methodology that uses the best of scrum and kanban.
5. Read: “Originating from Toyota’s Production System, This method provides a solid, experience-based theoretical framework for Agile management practices.”
6. Feature-Driven Development (FDD): “Feature-Driven Development (FDD) is an agile methodology based on quality and constant monitoring of the project.”
7. Test-Driven Development (TDD): “Test-Driven Development is a software development process that is based on the repetition of a very short development cycle: the requirements become very specific test cases, then the software is improved to pass the new tests.”
The following graph shows the current trend (2017) in terms of the use of Agile methodologies.
Companies that do not adopt an agile methodology for software development are going to have a very difficult time surviving the current world. It is true that implementing an agile methodology in a traditional company is not a simple task but, without a doubt, it is worth making this effort (investment) to face the future with guarantees.
Be agile, my friend!