Agile development is an abstract concept like "communism" or "capitalism". It was born from a reaction to the more traditional style of planing and execution used in manufacturing and applied to software engineering in its early days. For example, if you consider the way a car is developed, it is managed in sequential stages. One stage is completed before the next stage starts. This is like a waterfall where the focus of development cascades down through a series of steps.
This style of project management made great sense in manufacturing. There would be a business driver and a company identifying this gap in the market. This company would undergo a research and proposal stage, then a design phase, then actual manufacturing, then testing and finally introducing the product into the market, then finally generating profit!
In the absence of alternative methodologies, early software was commissioned and project managed in this waterfall style. However after a series of large software projects ran over budget and over time, the software engineers responsible begin to consider there might be better ways to organise the development of software.
In 2001 the Manifesto for Agile Software Development was 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:
We value these more | We value these |
---|---|
Individuals and interactions | over processes and tools |
Working software | over comprehensive documentation |
Customer collaboration | over contract negotiation |
Responding to change | over following a plan |
There are a set of 12 principles behind the manifesto
Our highest priority is to satisfy the customer through early and continuous delivery of valuable software.
Welcome changing requirements, even late in development. Agile processes harness change for the customer's competitive advantage.
Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale.
Business people and developers must work together daily throughout the project.
Build projects around motivated individuals. Give them the environment and support they need, and trust them to get the job done.
The most efficient and effective method of conveying information to and within a development team is face-to-face conversation.
Working software is the primary measure of progress.
Agile processes promote sustainable development. The sponsors, developers, and users should be able to maintain a constant pace indefinitely.
Continuous attention to technical excellence and good design enhances agility.
Simplicity--the art of maximizing the amount of work not done--is essential.
The best architectures, requirements, and designs emerge from self-organizing teams.
At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly.
In groups, can you look through the manifesto and 12 principles; imagine the kind of scenarios that must've occurred for the developers to come up with that principle. i.e. Our highest priority is to satisfy the customer through early and continuous delivery of valuable software. must have been born from the frustration of delivering software the customer didn't want, late.
The Agile manifesto was responsible for an explosion of thought in the manufacturing space. One of the concepts that has become very influential is Eric Ries notion of the Minimal viable Product (MVP) from his book "Lean Startup".
"the minimum viable product is that version of a new product which allows a team to collect the maximum amount of validated learning about customers with the least effort."
Eric Ries
Can you see how this idea fits with the Agile principles and Manifesto?
From the point of view of building software in an Agile way, the MVP is really helpful. To figure out what your users need/want, you use the initial Agile sprints to deliver a product that has just enough features to satisfy their needs. You learn from this and iterate, refining and using feedback to tweak your service or product.
Armed with these ideas, you are ready to start putting them into practice. In groups, you will act as software development teams contracted to produce the User Interface for one of the following business problems:
A social care company provides home-based health care for the elderly. The pool of carers work in shifts and visit properties in pairs. A care package includes 3 visits each day; morning, afternoon and evening, 7 days a week. At present, the central office draws up rotas on a spreadsheet and, as carers visit a property, they sign in and out on a sheet of paper that is collected at the end of the week and used to invoice clients. Sometimes the signing sheet is lost or not handed in. Also carers can be delayed at some properties and this has caused some heated complaints from those expecting carers who then arrive late. Can you help this company be more efficient?
PlantShed is one of the most popular plantstores in NYC. Not only do they sell a wide variety of houseplants and flowers, they have a local coffeeshop where customers can enjoy a fresh brew before shopping. PlantShed is hoping to expand into the e-commerce space, where customers can view the inventory of plants, flowers and coffeebeans and shop from home.
TieMyKnot is a software startup looking to become a leading platform for weddings. They are hoping to launch an online platform for couples to upload their registries, and for guests to reserve items to buy as gifts.
SoFresh aims to make cooking nutritious meals simple by delivering high quality ingredients and recipe cards direct to your home. They plan to offer meals to suit all tastes and want appeal to both families and individuals.
An apprenticeship provider is having trouble managing all the evidence it needs to submit to the Government to claim its funding and keep its license. Each month, the government requires that providers submit evidence that each apprentice:
The company has multiple different apprenticeship programmes, over a hundred coaches and thousands of apprentices. Apprentices attend delivery sessions, coaching 1:1s and progress reviews with their line managers. Can you design an application that could help them ease the company's admin burden?
In groups, decide which opportunity you wish to develop the User Interface for. Over the course of the next few lessons you will tasked with defining your user base and writing the requirements and user stories for your MVP.