Project Development Using Java and Python

Chapter 11
Agile Delivery and Team Collaboration

Diploma in Programming Languages (Java & Python)
Project Development Using Java and Python   •   Diploma

Agile Delivery and Team Collaboration

Introduction and Context

Software projects rarely fail because programmers cannot write code. They more often fail because the team builds the wrong product, misunderstands changing needs, integrates work too late, or cannot see emerging risks. Agile delivery addresses these problems by organising development around short feedback cycles, visible work, frequent integration and close collaboration with stakeholders.

In Java and Python projects, Agile practices apply to every stage of delivery: gathering requirements, designing interfaces, writing code, testing, documenting, releasing and maintaining software. Agile is not simply a collection of meetings. It is a way of managing uncertainty through empirical learning. A team makes a small plan, produces a usable increment, obtains evidence and adapts its next plan.

Scrum is one widely used Agile framework. Other approaches include Kanban, Extreme Programming (XP), Lean software development and hybrid delivery models. This chapter concentrates on practices that a diploma-level developer is expected to use: product backlogs, sprint planning, issue tracking, Git branching, pull requests, peer review, stakeholder communication, change control and technical documentation.

Learning Objectives

By the end of this chapter, you should be able to:

  • explain Agile values, empirical process control and Scrum responsibilities;
  • refine requirements into clear backlog items with acceptance criteria;
  • plan and review a sprint using a potentially releasable increment;
  • configure an issue-tracking workflow and distinguish issue types;
  • use Git branches, commits, pull requests and peer review responsibly;
  • communicate progress, risks, decisions and changes to stakeholders;
  • apply proportionate change control without creating unnecessary bureaucracy;
  • produce technical documentation that supports users, developers and maintainers; and
  • evaluate collaboration practices ethically and improve them using evidence.

1. Agile Foundations

1.1 Agile as a delivery philosophy

The Agile Manifesto values:

  1. individuals and interactions over processes and tools;
  2. working software over comprehensive documentation;
  3. customer collaboration over contract negotiation; and
  4. responding to change over following a plan.

The second part of each statement remains valuable. Agile does not mean that processes, documentation, contracts or plans are irrelevant. It means they should serve delivery and learning rather than become ends in themselves. A safety-critical or regulated project may require extensive records, approvals and traceability while still using short iterations and frequent feedback.

Agile delivery is especially useful when requirements are uncertain, users can provide regular feedback and the product can be delivered incrementally. It is less suitable to assume that every project can change without cost. Hardware dependencies, legal approvals, fixed external interfaces and large-scale migrations may constrain change. Agile teams therefore manage change deliberately rather than promising unlimited flexibility.

1.2 Empirical process control

Scrum is based on three pillars:

  • Transparency: the state of work, quality and progress is visible.
  • Inspection: people examine the product and process frequently.
  • Adaptation: the plan or method is changed when evidence shows that it should be changed.

These pillars are supported by Scrum values: commitment, focus, openness, respect and courage. For example, reporting that a Python service is behind schedule is an act of transparency; reviewing a failing integration test is inspection; and reducing sprint scope after discovering a dependency is adaptation.

1.3 Scrum accountabilities and events

The Scrum Team contains three accountabilities:

  • The Product Owner maximises product value and manages the Product Backlog. This includes clarifying outcomes, ordering work and communicating product goals.
  • The Scrum Master helps the team understand and use Scrum, removes or facilitates removal of impediments, and supports continuous improvement. The Scrum Master is not simply a project secretary or command-and-control manager.
  • Developers create the increment. In a software team, this includes programmers, testers, analysts, designers and others needed to produce a usable result.

Scrum uses a Product Goal, a Product Backlog, a Sprint Backlog and an Increment. A Sprint is a fixed-length period, commonly one to four weeks, during which the team works toward a Sprint Goal. The main events are:

  • Sprint Planning: why the sprint is valuable, what can be done and how it will be done;
  • Daily Scrum: a short Developers’ inspection of progress toward the Sprint Goal and a plan for the next day;
  • Sprint Review: stakeholders and the team inspect the outcome and discuss future adaptations; and
  • Sprint Retrospective: the team examines its people, interactions, tools and process, then selects improvements.

The increment must meet the team’s Definition of Done. A Definition of Done might require reviewed code, automated tests, security checks, updated documentation and successful deployment to a test environment. “Code written” is not necessarily “done.”

2. Backlogs, Requirements and Sprints

2.1 The Product Backlog

The Product Backlog is an ordered, evolving list of product work. Items may describe user functionality, technical improvements, defects, research or operational work. Ordering should reflect value, risk, dependencies and learning—not merely the order in which requests arrived.

A useful backlog item communicates a user or system need without prescribing unnecessary implementation detail. A common user-story form is:

As a [user or stakeholder], I want [capability], so that [benefit].

For example:

As a library member, I want to renew an eligible loan online, so that I can avoid an unnecessary visit to the library.

A story is not a complete requirement specification. It should be supported by acceptance criteria, design discussion, examples and relevant constraints. The INVEST heuristic describes a good user story as Independent, Negotiable, Valuable, Estimable, Small and Testable. These are guidelines, not rigid laws.

Acceptance criteria state observable conditions for accepting the item. For the renewal example, criteria might include:

  • an authenticated member can renew an eligible loan;
  • the system rejects a loan with a reservation queue;
  • the due date is updated according to the library policy; and
  • the member receives a clear success or error message.

Criteria should address normal, boundary and failure cases. In Java, they may become unit and integration tests using JUnit. In Python, they may be expressed through pytest tests or behaviour examples. A test should verify behaviour, not merely reproduce the internal structure of the implementation.

2.2 Refinement and estimation

Backlog refinement is a continuing activity in which the team clarifies items, identifies dependencies, splits oversized work and discusses acceptance criteria. Refinement should reduce uncertainty before planning, but it should not attempt to specify every detail months in advance.

Teams often estimate relative size using story points, ideal days or simply small/medium/large categories. Story points are not hours and should not be used to compare the productivity of individuals. They represent a team’s relative assessment of effort, complexity and uncertainty. A team might compare a new item with previously completed reference items, but the scale has meaning only within that team and context.

A team may observe velocity, the amount of estimation-unit work completed in a sprint. If a team completes 18, 22 and 20 points in three comparable sprints, its average is 20 points per sprint. This is a descriptive planning aid, not a performance target. Velocity changes when team membership, work type, quality practices or estimation conventions change. It must not be used as a universal productivity measure.

2.3 Sprint planning and commitment

Sprint Planning begins by identifying a Sprint Goal, such as “Allow members to renew eligible loans with clear policy feedback.” Developers then select a realistic set of backlog items and create a plan. Selection should consider capacity, known leave, support work, technical dependencies and the Definition of Done.

The Sprint Backlog is not a promise that every selected item will be completed regardless of evidence. The team protects the Sprint Goal while collaborating with the Product Owner if scope must be renegotiated. New work should not be inserted casually because interruption reduces focus and obscures the real cost of change.

A sprint should produce a coherent increment. A partially implemented login feature hidden behind untested code is not equivalent to a small, tested and documented renewal feature that users can try.

3. Issue Tracking and Work Visibility

An issue tracker provides a shared record of work, decisions and evidence. Typical issue types include:

Issue typePurposeExample
StoryUser or business capabilityRenew a library loan
TaskTechnical or operational activityConfigure test database
BugDeviation from expected behaviourRenewal accepts reserved loan
SpikeTime-boxed investigationCompare OAuth libraries
ImprovementChange to quality or maintainabilityRefactor duplicated validation

A useful issue normally contains a concise title, context, acceptance criteria, priority or ordering information, links to related issues, relevant environment details and a clear status. A defect report should include reproduction steps, expected behaviour, actual behaviour, logs or screenshots where appropriate, severity and version. Do not place passwords, personal data or secret keys in an issue.

A workflow might be:

Backlog → Ready → In Progress → In Review → Verification → Done

The exact names are less important than shared definitions. For example, “In Review” should mean a pull request exists and is awaiting review; “Done” should mean the Definition of Done is satisfied. Work-in-progress limits can prevent too many items from being started simultaneously. A developer who starts a second task while the first is waiting for review may increase delay rather than improve throughput.

Issue trackers also support traceability. A pull request can reference an issue, a release can identify included issues, and a defect can be linked to the code change and test that resolved it. Traceability is valuable in maintenance and regulated contexts, but links should be meaningful rather than generated mechanically.

4. Git-Based Collaboration

Git records changes as commits in a distributed version-control repository. A commit should represent a coherent change and have a descriptive message. Small, focused commits are easier to review and revert than large commits mixing formatting, refactoring and unrelated features.

A practical feature-branch workflow is:

  1. update the local main branch from the shared repository;
  2. create a branch named for the issue, such as feature/renew-loan;
  3. implement the change with tests and documentation;
  4. commit coherent changes with useful messages;
  5. push the branch and open a pull request;
  6. obtain review and automated-check results;
  7. resolve feedback and merge according to team policy; and
  8. delete the completed branch when appropriate.

Teams may use trunk-based development, short-lived feature branches or a release-branch model. No single branching model is universally correct. Long-lived branches create integration risk because the code diverges from the main line. A team should choose a model compatible with release frequency, deployment automation and risk controls.

Before merging, contributors should update their branch as required by team policy, resolve conflicts carefully and rerun relevant tests. A conflict is not merely a textual inconvenience: two changes may compile while expressing incompatible business rules. The author must understand the intended behaviour before resolving it.

Pull requests and peer review

A pull request (PR) is a request to integrate a proposed change. A strong PR description states the problem, solution, testing performed, deployment or migration considerations, screenshots where useful, and any known limitations. It links to the relevant issue and identifies decisions that reviewers should examine.

Peer review should evaluate correctness, readability, maintainability, security, test quality, performance where relevant and consistency with project conventions. Review comments should be specific and respectful. “This is bad” is neither actionable nor professional; “Could this validation be extracted so both API paths enforce the same rule?” identifies a concern and invites discussion.

Review is a shared quality activity, not an exercise in hierarchy. Authors should treat comments as evidence to consider, while reviewers should distinguish required corrections from optional suggestions. Automated tools such as formatters, linters, static analysers and dependency scanners can remove routine defects, allowing people to focus on design and behaviour. They do not replace human review.

A protected main branch, required checks, at least one appropriate reviewer and successful automated tests are useful safeguards. Review rules should not become obstructive rituals: an urgent security fix may require an emergency procedure, followed by retrospective review and documentation.

5. Communication and Change Control

5.1 Stakeholder communication

Stakeholders include users, customers, sponsors, operations staff, support teams, compliance personnel and other groups affected by the product. Different stakeholders need different information. A user may need a demonstration; an sponsor may need progress, cost and risk; an operations engineer may need deployment and rollback details.

Effective communication is:

  • audience-aware: uses suitable technical depth and terminology;
  • evidence-based: identifies completed behaviour, test results and current risks;
  • timely: raises impediments before they become surprises;
  • two-way: invites questions and validates assumptions; and
  • recorded appropriately: captures decisions and responsibilities.

A concise status report can state the Sprint Goal, completed increment, work in progress, risks, decisions required and next steps. A Sprint Review should demonstrate working software, not only slides or a list of closed tickets.

5.2 Change control in an Agile project

Change control is the disciplined evaluation and incorporation of changes to scope, requirements, design, schedule, interfaces or quality constraints. Agile welcomes learning-driven change, but change still has consequences.

A practical change process is:

  1. record the request with its rationale and source;
  2. clarify the desired outcome and acceptance criteria;
  3. assess value, urgency, dependencies, risk, effort and effect on the Sprint Goal;
  4. decide whether to accept, defer, reject or investigate the request;
  5. update the Product Backlog, architecture records and plans as necessary; and
  6. communicate the decision and its consequences.

The Product Owner generally orders product scope, while the Developers assess technical implications and the Scrum Master supports a healthy decision process. In regulated environments, a change may also require approval, impact analysis, test evidence and an audit record.

Change control should not mean that every wording adjustment requires a committee. A typo in internal documentation and a change to personally identifiable data retention have very different risk profiles. Proportional governance applies stronger controls where safety, privacy, security, financial loss or legal compliance is at stake.

6. Technical Documentation

Agile teams document enough to make the system understandable, usable and maintainable. Documentation is a product asset, not evidence that development has stopped.

Important forms include:

  • README: purpose, prerequisites, setup, configuration, test and run instructions;
  • API documentation: endpoints, inputs, outputs, authentication, errors and examples;
  • architecture decision record (ADR): context, decision, alternatives and consequences;
  • design documentation: important components, data flows, interfaces and constraints;
  • operations documentation: deployment, monitoring, backup, rollback and incident procedures;
  • user documentation: tasks, limitations, troubleshooting and accessibility guidance; and
  • release notes: user-visible changes, known issues, migrations and compatibility information.

Documentation should live close to the code when practical, be version-controlled and be reviewed as part of the change. Generated API documentation can improve consistency, but generated output is not a substitute for explaining business meaning. Examples must be safe: never include real credentials or unredacted personal information.

For Java projects, Javadoc can explain public classes and methods, while build files such as Maven or Gradle configurations define reproducible dependencies and tasks. Python projects commonly use docstrings, type hints, packaging metadata and tools such as pytest documentation or generated API references. In both languages, documentation should describe contracts and behaviour rather than repeat obvious syntax.

7. Applied Case: The Campus Clinic Booking Service

The following is a fictional illustrative case.

Background

A diploma student team is developing a Java Spring service and a Python notification worker for a campus clinic. Students should be able to view available appointment slots, book one slot and receive confirmation. The team has six members and works in two-week sprints.

Problem

After the first sprint, the team has many partially completed branches. The booking endpoint accepts duplicate bookings under concurrent requests, issue descriptions are vague, and stakeholders cannot tell whether email notification is included. A developer merged code without tests, and the test environment contains a real email address in a configuration file.

Analysis

The team maps the current workflow and finds that work is started before acceptance criteria are agreed. Pull requests remain open for several days, while the team measures success by the number of tickets moved to “In Progress.” The security problem is a governance issue as well as a coding issue: configuration secrets are not being managed safely.

Approach and solution

The Product Owner creates a Product Goal: “Students can reliably book one available clinic appointment and receive a status message.” The team refines a small story:

As a student, I want to book an available slot so that I can attend a confirmed appointment.

Acceptance criteria cover authentication, unavailable slots, duplicate requests, confirmation status and notification failure. The team adds a technical task to enforce a database uniqueness constraint and transaction policy, and a spike to determine how notification retries should work.

The team adopts a Definition of Done requiring reviewed code, unit and integration tests, no exposed secrets, updated API documentation and deployment to the test environment. It uses short-lived branches named after issue identifiers, protected main, automated Java and Python tests, linting and dependency checks. The PR template asks for linked issue, testing evidence, security considerations and documentation changes.

The team replaces the real address with a test mailbox and moves credentials to a managed secret mechanism appropriate to the environment. It records an ADR explaining the choice of database constraint plus application-level handling of duplicate requests. The Sprint Review demonstrates successful booking, rejected duplicate booking and notification failure handling. The Retrospective produces one improvement: reserve daily review time so PRs do not wait several days.

Outcome

In the next sprint, the team completes fewer nominal tickets but produces a coherent increment that stakeholders can test. Duplicate booking defects are detected before release, the notification failure is visible to users and operators, and the repository no longer contains live credentials. Stakeholders also clarify that cancellation is more valuable than an administrator reporting screen, allowing backlog ordering to change.

Learning points

The case illustrates that Agile delivery is a system of connected practices. Clear criteria improve implementation and testing; short branches reduce integration risk; review and automation support quality; stakeholder demonstrations reveal value; and documentation records decisions. None of these practices is sufficient alone.

8. Challenges, Ethics and Contemporary Practice

Agile practices can fail when teams cargo-cult ceremonies, treat velocity as a target, overload developers, or exclude stakeholders. A daily meeting that becomes a manager’s interrogation undermines transparency. A backlog controlled by the loudest requester undermines product value. Excessive work in progress creates delay and context switching.

Teams should protect psychological safety. People must be able to report defects, uncertainty, unreasonable workload and ethical concerns without retaliation. Credit should reflect actual contributions, and review standards should apply fairly across roles and backgrounds. Accessibility, privacy, security and inclusiveness are product qualities, not optional extras.

AI coding assistants can help draft tests, explain unfamiliar code or suggest documentation, but generated code may contain defects, insecure patterns, licensing concerns or fabricated explanations. Developers remain accountable for verifying output, protecting confidential data and complying with organisational policy. AI-generated changes should pass the same review, testing and security controls as human-written changes.

Contemporary teams increasingly use continuous integration and continuous delivery, infrastructure as code, observability, automated security testing and remote collaboration platforms. These tools are valuable when they shorten feedback and make quality visible. They do not solve unclear goals or poor communication. Useful team measures include lead time, deployment frequency, escaped defects, review delay, reliability and stakeholder outcomes. Metrics should support learning rather than rank individuals.

Best-Practice Checklist

Before starting work, confirm that the item has a clear outcome, acceptance criteria and appropriate priority. During implementation, keep the branch focused, commit coherent changes, write tests and avoid secrets. Before merge, obtain review, pass automated checks, update documentation and verify the Definition of Done. At the sprint boundary, demonstrate working software, inspect evidence with stakeholders and select a small, actionable process improvement.

Chapter Summary

Agile delivery manages uncertainty through short feedback cycles, visible work and adaptation. Scrum organises this approach around a Product Goal, ordered Product Backlog, Sprint Goal, Sprint Backlog, Increment and defined accountabilities. Backlog refinement and acceptance criteria convert stakeholder needs into testable work, while a Definition of Done establishes a shared quality threshold.

Issue trackers make work, defects and decisions visible. Git branches, focused commits, pull requests, automated checks and respectful peer review reduce integration and quality risks. Stakeholder communication must be timely, audience-aware and based on working evidence. Change control evaluates the value and consequences of change without imposing disproportionate bureaucracy. Technical documentation—including READMEs, API references, ADRs and operational procedures—supports sustainable development.

Successful collaboration depends on more than tools. It requires psychological safety, ethical handling of data and credentials, responsible use of AI, attention to accessibility and security, and metrics used for improvement rather than individual surveillance. Agile practices are effective when they are adapted thoughtfully to the project’s technical, organisational and regulatory context.

Key Terms

Agile: An approach that prioritises feedback, collaboration, working software and adaptation.

Acceptance criteria: Observable conditions that a backlog item must satisfy.

Backlog refinement: Ongoing clarification, splitting, ordering and estimation of backlog items.

Branch: An independent line of development in a version-control repository.

Definition of Done: A shared standard that determines whether an increment is complete and usable.

Empirical process control: Managing work through transparency, inspection and adaptation.

Increment: A usable, integrated product outcome produced during development.

Issue tracker: A system for recording, organising and monitoring work, defects and decisions.

Product Backlog: An ordered, evolving list of work needed to improve a product.

Product Owner: The Scrum accountability responsible for maximising product value and managing the Product Backlog.

Pull request: A request for review and integration of proposed repository changes.

Peer review: Evaluation of another contributor’s work for correctness, quality and maintainability.

Scrum Master: The Scrum accountability that supports Scrum effectiveness and helps remove impediments.

Sprint: A fixed-length period in which a team creates a usable increment.

Sprint Goal: The objective that gives a sprint its purpose and focus.

Stakeholder: A person or group affected by, interested in or able to influence the product.

Technical debt: Future cost created by choosing a faster or less effective technical solution.

Velocity: The amount of estimation-unit work completed by a team in a comparable iteration.

Review Questions

Short Answer Questions

  1. What are the three pillars of empirical process control in Scrum?
  2. State two characteristics of useful acceptance criteria.
  3. Why should velocity not be used to compare individual developers?
  4. What information should a pull request description normally contain?
  5. Give two examples of technical documentation used in software projects.

Long Answer Questions

  1. Explain how Product Backlog refinement, Sprint Planning and the Definition of Done work together to produce a reliable increment.
  2. Compare a long-lived feature-branch workflow with short-lived branches and explain the integration risks of each.
  3. Describe a proportionate change-control process for an Agile project, including the responsibilities of the Product Owner and Developers.
  4. Explain how peer review and automated checks complement each other in Java and Python development.
  5. Discuss the ethical and governance responsibilities of a team using AI coding assistants.

Analytical / Application Questions

  1. A team has ten items in progress, most pull requests wait four days, and stakeholders receive demonstrations only at the end of a three-month release. Diagnose the likely causes and propose three changes grounded in Agile principles.
  2. A Python notification worker sometimes sends duplicate messages after a retry, although all unit tests pass. Design a backlog item, acceptance criteria, issue-tracking evidence and review steps for addressing the problem.
  3. A stakeholder requests a security-sensitive change halfway through a sprint. Analyse how the team should assess it, communicate its impact, decide whether to alter sprint scope and document the decision.

Multiple Choice Questions with Answers

Question 1

Which Scrum pillar requires the state of work and quality to be visible?

A. Transparency

B. Inspection

C. Adaptation

D. Estimation

Correct Answer: A. Transparency

Question 2

Which item most directly states the conditions a backlog item must satisfy?

A. Branch name

B. Acceptance criteria

C. Commit hash

D. Release label

Correct Answer: B. Acceptance criteria

Question 3

What is the primary purpose of a pull request?

A. To store passwords securely

B. To replace all automated tests

C. To request review and integration of proposed changes

D. To estimate a sprint

Correct Answer: C. To request review and integration of proposed changes

Question 4

Why should velocity not be treated as an individual productivity score?

A. It is measured in currency

B. It is a team-specific planning aid affected by context

C. It always measures lines of code

D. It applies only to hardware projects

Correct Answer: B. It is a team-specific planning aid affected by context

Question 5

Which practice best reduces the risk of exposing credentials in a repository?

A. Putting credentials in a README

B. Committing credentials to a private branch

C. Using an appropriate managed secret mechanism

D. Encoding credentials with Base64

Correct Answer: C. Using an appropriate managed secret mechanism

Question 6

Which Scrum event focuses on examining the team’s process and selecting improvements?

A. Sprint Review

B. Sprint Retrospective

C. Sprint Planning

D. Daily Scrum

Correct Answer: B. Sprint Retrospective

Question 7

What is the main danger of many long-lived Git branches?

A. They eliminate all merge conflicts

B. They increase divergence and integration risk

C. They prevent commits from being created

D. They automatically delete documentation

Correct Answer: B. They increase divergence and integration risk

Question 8

Which document is most suitable for recording a significant architecture choice and its consequences?

A. Architecture decision record

B. Daily status message

C. Branch protection rule

D. Issue label

Correct Answer: A. Architecture decision record

Question 9

A defect report should normally include which combination?

A. Only the developer’s opinion and a new branch name

B. Reproduction steps, expected behaviour and actual behaviour

C. A velocity target and salary information

D. Unredacted credentials and private data

Correct Answer: B. Reproduction steps, expected behaviour and actual behaviour

Question 10

What does a Definition of Done provide?

A. A shared quality standard for completed work

B. A ranking of developers by speed

C. A list of unapproved future ideas

D. A replacement for stakeholder feedback

Correct Answer: A. A shared quality standard for completed work

Project Development Using Java and Python
Chapter 11 of 15