Over recent years (and maybe decades), there has been a shift away from traditional waterfall software development methods towards Agile approaches.
Agile is a general approach to developing solutions specifically in software, although the approach can be applied with care to much modern product development.
Agile is not a specification or a mandate. In fact, it is quite literally little more than a manifesto that helps us make decisions about those tradeoffs encountered during development (e.g. performance, time, cost).
Scrum is not synonymous with Agile. Scrum provides a more detailed project management framework that is inherently Agile. It describes the day-to-day and week-to-week activities of a development team, but still it must be tuned so that it works for the specific product and organisation.
Both Agile and Scrum are important because they address many of the fundamental issues with traditional software development. However, the techniques must be applied with care, because all products and organisations operate differently. Agile is a way of life, but not a license to be lazy. Scrum is a powerful weapon, but in the wrong hands it often does more harm than good.
The overall objective is to streamline software development, by focusing on what really matters to the stakeholders, including users, investors and developers. By adopting the techniques, we make software development more predictable when solving new problems, instead of projects mushrooming in unexpected costs and timescales.
The articles in this blog provide a view on implementing Agile practices when developing high-integrity products across many engineering disciplines.