This is a brief racconto of how software development methodologies have evolved in order to understand the changes we are experiencing better.
I have recently attended an Agile conference in Buenos Aires where I had a good time sharing experiences and knowledge about the Agile methodologies world in software development with some colleagues in the industry (among Scrum coaches, architects, developers, etc.).
As usual, during a coffee break, an interesting debate with one of the attendants emerged. Is Scrum better than Waterfall methodology? Are iterations actually good for learning from mistakes? Did Scrum invent the iterative methodology? Do mistakes cost more when using Waterfall methodology? What happened during the years between the birth of one methodology and another?
Certainly, these questions that came up could give rise to a long conversation; however, we concluded that one of the problems of software engineering is that, in our discipline, we forget the lessons of the past many times, conceiving everything new as good and everything old as bad.
In the article Hype Driven Development, Marek Kirejczyk commented on one of the components of this problem. We could all agree that software engineering is a very dynamic discipline that requires constant updating. Nevertheless, it is important to learn from history and experience in order to avoid making the mistakes of the past. This is not for nothing; it is one of the cornerstones of Agile thinking.
With this in mind, I decided to do a small, perhaps arbitrary, racconto (statement) of how software methodologies have evolved in order to understand the changes we are experiencing better.
1910 – Henry Gantt invents the diagram for project management. Along with Frederick Taylor, they intended to improve industrial efficiency by defining processes to perform repetitive tasks:
“It is only through enforced standardization of methods, enforced adoption of the best implements and working conditions, and enforced cooperation that this faster work can be assured.
And the duty of enforcing the adoption of standards and enforcing this cooperation rests with management alone”.
1916: Henri Fayol introduces concepts such as division of work, unity of command, and centralization of decisions.
1927-1932: Elton Mayo carries out the Hawthorne experiment, where he concludes, among other things, that the team productivity gain occurred because of the motivational effect on the workers from the interest being shown to them.
1953: The word software was coined as a prank.
1956: First formal description of Waterfall methodology made by Herbert D. Benington at a symposium on advanced programming methods for digital computers on June 29.
1976: The earliest use of the term Waterfall may have been in a 1976 paper by Bell and Thayer.
1985: The United States Department of Defense standardizes this methodology (Waterfall) and defines it as a standard for its software development providers. This standardization defined 6 stages: Preliminary Design, Detailed Design, Development and Unit Testing, Integration, and Testing.
1986: Barry Boehm describes the process in Spiral. It introduces the iterative development concept to mitigate risks.
1986: Fred Brooks publishes his paper No Silver Bullet where he explains the difficulties inherent in software development. His book, The Mythican Man-Month, becomes the foundational text for software engineering. In 1999, Brooks wins the Turing award for his contributions.
1986: Takeuchi and Nonaka introduce the term Scrum for the first time in their article, New New Product Development Game. In their work, the authors claim that Scrum is an approach to organizational knowledge creation, which is particularly good for bringing innovation in a continuous and incremental way.
1990: Ken Schwaber used what would become Scrum at his company: Advanced Development Methods. Meanwhile, Jeff Sutherland developed a similar approach, referring to it with the single word Scrum.
1995: As a result of their experience, Schawaber and Shuterland publish the paper Scrum methodology.
1996-1998: Rational Software Company develops its unified, iterative, and incremental software process. Focused on architecture and guided by use cases, this process becomes the standard of the industry.
1999: Kent Beck publishes Extreme Programming Explained, setting the stages of the Agile revolution.
2001: The Agile Manifesto is published:
We are uncovering better ways of developing
software by doing it and helping others do it.
Through this work we have come to value:
Individuals and interactions over processes and tools
Working software over comprehensive documentation
Customer collaboration over contract negotiation
Responding to change over following a plan.
2003: Tom and Mary Poppendieck publish their book Lean Software Development, a translation for the software industry of Toyota’s Just in Time system.
2008: During the Agile conference of 2008, Bob Martin proposes a fifth value to the Agile Manifesto: Craftmanship over Crap. A year later, the principles of the movement known as Software Craftmanship are established. The metaphor of the system professional is replaced, going from Engineer to “Medieval Artisan”.
2009: The term DevOps becomes popular in a series of “devopsdays”.
2010: David Anderson publishes his book Kanban, a methodology that is also based on Toyota’s Production System.
- Today: DevOps is gaining more and more ground with tools like Docker, Puppet, and Chef. The borders between development and operations begin to become blurred. Agile frameworks have scalability problems, leading to new implementations such as Less (Large-Scale-Scrum) and Safe (Scaled Agile Framework).
And so, we continue looking for the silver bullet in this awesome discipline.
To Sum Up
The software industry is very dynamic and demands constant updating. Almost by definition, it is a field that is constantly looking to the future. In this context, it is normal for the past to be overlooked and with it, the opportunity to learn from valuable lessons.
“Some of the best lessons we ever learn are learned from past mistakes. The error of the past is the wisdom and success of the future”. – Dale Turner-
Comments? Contact us for more information. We’ll quickly get back to you with the information you need.