Agile methods are a modern approach to incremental development.
They emphasize:
To understand the rise of agile models, we need to review the all-too-common problems faced by projects through the 1980’s and 1990’s.
==
a binding contract meant that changes in real-world requirements could not be revisited.…
Common Problems (cont.)
In Death March: Managing “Mission Impossible” Projects, 1997, Edward Yourdan writes that programmers on small scale projects are comparatively fortunate because…
A tight-knit group of less than ten people is more likely to stick together through thick amd thin, as long as the commitment isn’t for more than six months or so; and a group of highly motivated people is more likely to be willing and able to sacrifice their personal lives (not to mention their health!) for three to six months, as long as they know the regimen of long nights, wasted weekends, and postponed vacations will come to an end on a matter of months.
The fact that this practice was regarded as normal tells you a lot about the those days.
For that matter, the fact that a book with that title could be one of the more popular books on software engineering can tell you a lot about the state of the practice.
In 2001, a group of prominent software developers released the Agile Manifesto and its related “12 Principles”
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
That is, while there is value in the items on the right, we value the items on the left more.
1) Our highest priority is to satisfy the customer through early and continuous delivery of valuable software.
2) Welcome changing requirements, even late in development. Agile processes harness change for the customer’s competitive advantage.
3) Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale.
4) Business people and developers must work together daily throughout the project.
5) Build projects around motivated individuals. Give them the environment and support they need, and trust them to get the job done.
6) The most efficient and effective method of conveying information to and within a development team is face-to-face conversation.
7) Working software is the primary measure of progress.
8) Agile processes promote sustainable development. The sponsors, developers, and users should be able to maintain a constant pace indefinitely.
9) Continuous attention to technical excellence and good design enhances agility.
10) Simplicity – the art of maximizing the amount of work not done – is essential.
11) The best architectures, requirements, and designs emerge from self-organizing teams.
12) At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly.
Keep your @!#$% paws off our work!
You’re paying us big $$ for our professional expertise. So trust us to use that expertise
5) Build projects around motivated individuals. Give them the environment and support they need, and trust them to get the job done.
7) Working software is the primary measure of progress.
8) Agile processes promote sustainable development. The sponsors, developers, and users should be able to maintain a constant pace indefinitely.
11) The best architectures, requirements, and designs emerge from self-organizing teams.
6) The most efficient and effective method of conveying information to and within a development team is face-to-face conversation.
9) Continuous attention to technical excellence and good design enhances agility.
10) Simplicity – the art of maximizing the amount aof work not done – is essential.
12) At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly.
1) Our highest priority is to satisfy the customer through early and continuous delivery of valuable software.
2) Welcome changing requirements, even late in development. Agile processes harness change for the customer’s competitive advantage.
3) Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale.
4) Business people and developers must work together daily throughout the project.
It is probably telling that the first 4 principles are all customer-oriented.
Incremental development, on short intervals.
Something newly working that is useful to the customer must be demonstrated every 1-4 weeks. (1-2 is most common.)
Small teams
Communication among peers is the model.
In one popular Agile variant, “Scrum”, each developer answers three questions in the daily meeting:
Often facilitated by a daily meeting limited to no more than 15 min. to simply bring one another up to speed on what each person accomplished in the previous day.
Purpose is to identify problems, but not to fix them. Fixing problems gets done after the meeting.
Very few pre-defined roles.
And even those are “part-time” roles – the person is still primarily another developer.
e.g., the “Scrum Master”’s special job is mainly to run the daily 15-minute meeting, ask each team member those three questions, and make sure no one strays off topic.
Developers are expected to be up-to-date in the best practices of their profession.
We’ll learn about most of these in the coming weeks.
Technical Competency (cont.)
A team must have all the skills required for the project.
If the project requires, e.g., a database, there are likely to be some people on the team who are more skilled with databases than others.
Teams share responsibility for the quality of the code that they produce.
The team project is a crucial component of this course.
We will be following a largely agile approach, with some adjustments:
We will start by writing a formal requirements document.
We will need to build up to the technical competency expected of agile developers.
Nonetheless, the emphasis is on the process.