OU blog

Personal Blogs

Christopher Douce

Software Engineering Radio: Waterfall versus Agile

Visible to anyone in the world

The first Software Engineering Radio podcast featured in this blog speaks to a fundamental question within software projects, which is: how much do we know? If we know everything, we can plan everything. If we don’t know everything, then we need to go a bit more carefully, and figure things out as we go. This doesn’t necessarily mean that we don’t have a plan. Instead, we must be prepared to adjust and change what we do.

Waterfall versus Agile

In SE Radio 401: Jeremy Miller on Waterfall Versus Agile two different approaches are discussed; one is systematic and structured, whereas the other is sometimes viewed being a bit ‘looser’. In this podcast, I bookmarked a couple of small clips. The first is between 16:20 and 19:00, where there is a question about when the idea of agile was first encountered. This then led to a discussion about eXtreme Programming (XP) and Scrum. The second fragment runs between 45:40 and 47:21, which returns to the point about people. This fragment highlights conflicts within teams, the significance of compromise and the importance of considering alternative perspectives. This not only emphasises the importance of people in the processes, but also the importance of people skills within software engineering practices.

Following on from this discussion, I recommend SE Radio 60: Roman Pichler on Scrum. Roman is asked ‘what is Scrum and where does it come from?’ An important inspiration was considered to be ‘lean thinking’ and an article called ‘the new product development game’. It was later described as ‘an agile framework for developing software systems’ (47:50) which focuses on project and requirements management practices. Scrum can be thought of a wrapper where other software development practices can be used (such as eXteme Programming, and continual integration and deployment).

It is worth highlighting some key Scrum principles and ideas, which are discussed from 2:50 onwards. An important principle is the use of small autonomous multidisciplinary self-organising team (21:10) of up to 7  (plus or minus 2) people that comprises of developers, a product owner and a Scrum master. The Scrum master (24:15) is responsible for the ‘health’ of the team and remove barriers to progress. The team is empowered to make their own decisions about how they work during each development increment, which is called a sprint. A sprint  (7:20) is a mini project that has a goal, where something that is built that ‘has value’ to the customer (such as, an important requirement, or group of requirements), and is also ‘potentially shippable’.

Decisions about what is built during sprints is facilitated through something called a product backlog (28:50), which is a requirements management tool, where requirements are prioritised. How requirements are represented depends on the project. User stories were mentioned as ‘fine grained’ requirements. In Scrum, meetings are important. There is a daily Scrum meeting (13:10), sprint reviews, and a retrospective (43:35). The retrospective is described as important meeting in Scrum, which takes place at the end of each sprint to help the team reflect on what went well and what didn’t go well.

Reflections

When I was an undergraduate, we were all taught a methodology that went by natty abbreviation of SSADM. I later found out that SSADM found its way into a method called Prince, which is an approach used for the management of large projects. (Prince is featured in the OU’s postgraduate project management module).

I was working in industry when Beck’s book about XP came out. When I worked as a software engineer, I could say that we applied a small ‘agile’ approach with a more traditional project management methodology. We used techniques from XP, such as pair programming, and continually kept a Gantt chart up to date.

At the time, none of us knew about Scrum. Our Gantt chart was Scrum’s burn down chart. We didn’t have a project backlog, but we did have an early form of a ‘ticket system’ to keep track what features we needed to add, and what bugs needed to be fixed.

One of the things that we did have was version control. Creating a production version of our software products was quite a intensive labour process. We had to write release notes, which had to be given a number, a date and saved in a directory. We built new installation routines, and manually copied them to a CD printing machine, which as asking for trouble. What we needed was something called CI/CD, which is the topic of the next post.

Permalink
Share post
Christopher Douce

Some notes about agile practices in software engineering

Visible to anyone in the world
Edited by Christopher Douce, Tuesday 1 April 2025 at 21:06

Software engineering is done by people, but what people do to build software depends on the nature of software that is to be created. The culture of individuals, technologies and organisations also plays an important role too.

At the turn of the century, there was a new idea about how to build software; something called agile development. This led to the creation of something called the Manifesto for Agile Software Development If you’re interested in software development and want to know something about what ‘agile’ means, you need to have a look at the manifesto.

I first learnt about agile through something called eXtreme Programming (Wikipedia), and then something called Scrum (Wikipedia) (Don’t use Wikipedia in your TMAs; always use official references). In my eyes, the notable characteristic about agile (or Agile; there’s a difference between small ‘a’ agile, and large ‘A’ agile) is that it is all about people. Agile (in its different forms) helps to establish rituals which can, in turn, help software engineers to talk about that ‘invisible stuff’ which is software.

I recently asked a colleague, Advait Deshpande, who was the chair of an agile practices microcredential what the latest trends were in agile software development. He was kind enough to share links to some interesting articles and resources.

Articles about agile

 Here are some review articles that might be useful to anyone who is starting to study agile:

Edison, H., Wang, X., & Conboy, K. (2021). Comparing methods for large-scale agile software development: A systematic literature review. IEEE Transactions on Software Engineering, 48(8), 2709-2731. Available at https://ieeexplore.ieee.org/abstract/document/9387593/

Vallon, R., da Silva Estácio, B. J., Prikladnicki, R., & Grechenig, T. (2018). Systematic literature review on agile practices in global software development. Information and Software Technology, 96, 161-180. Available at https://www.sciencedirect.com/science/article/pii/S0950584917302975

Other resources

Advait also shared the following two links, which he gives me permission to share here: UK Government: Agile delivery - Agile tools and techniques.

The notion of ‘agile’ has moved beyond software, but to business. It is important to distinguish between the two. This second link emphasises what agile might mean within a business context: Agile Business Consortium: Business Agility.

Post (or peak) agile

Once, agile was the new thing on the block. Now agile has become mainstream. An accompanying question is: have we reached post (or peak) agile? Also, what comes next? One of the criticisms of agile is that it is best suited to smaller teams, which puts a limit to how it can be applied to bigger projects. There have been several attempts to address this:

Advait directed me to a talk that was hosted on YouTube that had a provocative title:

I know Dave Thomas from a book I have on my shelf at home; a book called ‘the pragmatic programmer’ – it is a good read, and is packed filled with some very practical advice. His talk about agile is worth a watch. He presents a critical view of the ‘agile industry’ in a humorous and engaging way. It is worth a watch. He talks about the origins of the agile manifesto, as well as ‘large agile’. An important point is that when thinking about how to create software, we need to think critically too.

Reflections

When I was learning about software engineering as an undergraduate, I was introduced to something called the software development lifecycle (or SDLC). There are different models; there’s a waterfall model, a spiral model, and there was something called SSADM which bored me to hears. It was only after I graduated that I later learnt about agile in all different guises.

When I started working as a software engineer, the company that I worked for didn’t have a software development process, so we had to make one. Culture and experience are themes that can influence decisions about what is done. I was lucky enough to work with someone who had had a lot of experience, for which I was really thankful for.

We set up policies and processes. We also applied techniques that had an agile flavour, bits of pair programming, and aspects of test driven development. Our processes needed to work for both the products and the people who were developing the software. We needed to be pragmatic to get things done.

Acknowledgements

Thanks are extended to Advait Deshpande. I really appreciated the chat and all the links he shared.

Permalink
Share post

This blog might contain posts that are only visible to logged-in users, or where only logged-in users can comment. If you have an account on the system, please log in for full access.

Total visits to this blog: 3146774