Course breakdown:
- Scrum tutorial: 15%
- First two labs: 8 person teams; assessment at end on scrum values
- Reflection report (weekly reading): 5%
- ~500 word report due week 6
- Acceptance testing/design principles: 20%
- Due week 12
- Final exam: 60%
- Software development methods/design principles (term 1/2 even content split)
Preparation/reading required before each lecture.
https://agilemanifesto.org
Core Values
- Individuals and interactions over processes and tools
- Working software over comprehensive documentation
- Customer collaboration over contract negotiation
- Responding to change over following a plan
Principles
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.
Scrum
- Product owner
- Representative of the client
- Responsible for adding and prioritizing tasks in the backlog
- Scrum master
- Protects the team from the product owner and facilitates the activities
- Development team
- Should be self-organized and cross-functional - no set roles
Scrum empowers the team with a large amount of freedom to ensure the team can meet their goals.
Both individuals and teams should be able to learn and improve, and mechanisms should be in place to ensure knowledge/learning can be transferred across individuals/teams.
Lean
See https://roadmunk.com/guides/lean-development/ and [https://agilevelocity.com/7-principles-of-lean-software-development/](Agile Velocity).
Optimization process based on Toyota car manufacturing in the 1950s.
Principles
- Eliminate waste; anything that doesn’t provide value to the customer
- Partially done work, unnecessary code, bureaucracy, ineffective communication etc.
- Build quality in as a core aspect of the project
- Continuous development ensures issues are caught quickly
- Test-driven development
- Create knowledge; document or share the reasoning behind decisions
- Defer commitment; keep options open
- Don’t plan too far ahead in advance
- Don’t commit to ideas without understanding the requirements
- Deliver fast
- Respect people
- Healthy amounts of conflicts
- Communicate proactively
- Optimize the whole
- When optimizing processes, ensure this benefits the project as a whole
Kanban
See https://kanbanize.com/kanban-resources/getting-started/what-is-kanban.
In summary, Kanban is layer on top of (but not replacing) existing processes that encourages incremental changes and decision making at all levels.
Kanban limits the number of work in progress items in each stage to reduce the amount of wasteful context switching and avoid clogging up the pipeline further up.
Metrics:
- WiP: number of work in progress items
- Queue: compares tasks in WiP to queue to measure efficiency
- Throughput: average work units/time unit
- Lead time: time between customer demand and deployment