← VCE Software Development U4O1

Assessing project plan effectiveness: reasons for changes

The cause of a plan change, classed as scope creep, personnel, technical issues or poor estimates. Patterns in these causes show how effective the original plan was.

Understanding Assessing project plan effectiveness: reasons for changes in VCE Software Development U4O1

What it does: Personnel changes are outside the plan's control, so they are classed as an external cause. Scope creep is when requirements grow beyond the original plan. The plan changed because the work expanded, not because the time guesses were wrong. The problem came from the tools and technology, not from new requirements. It is a technical issue. Repeated reasons, such as many poor estimates, show a pattern. The pattern helps judge how effective the plan was and what to improve next time. Recording the cause of each change lets you group them and see patterns. Counting alone does not explain why the plan needed to change.

Common mistakes: Python has no length() function. Use len(reasons) to count how many reasons for change were logged. == compares values, so reason is never created and a NameError follows. Assignment needs a single =.

Class: _____________________  ·  Name: _____________________  ·  Date: _________

Free printable worksheet with full answer key — or add this module to a class and your students practise it interactively.

This module's key terms are also in a printable crossword (Modules 186–198) and word search (Modules 172–198).

Take this worksheet further — free with Cloodit

Each concept is reinforced from every angle — learned, then applied, then tested.

Learning
Duo
A client adds a new login feature halfway through the project, so tasks are added to the Gantt chart. Which reason for change is this?
Poor estimatesScope creep
Matches
Change 4: Reason: the plan was changed
↓
The reason does not classify the cause. It only restates that a change happened. It should state a category such as technical issues.
Applying
Meanings
Term
Reason for change
Meaning
The cause of a plan change, classed as scope creep, personnel, technical issues or poor estimates. Patterns in these causes show how effective the original plan was.
Practice
Change 1 - Added a search page - scope creep
Testing
Gaps
print((reasons))
Check Answer
Spots
1reasons = ["scope", "tech"]
2total = length(reasons)

Cloodit turns curriculum-aligned coding content into journeys students work through one biome at a time.

The 'Seal' badge — Smooth Formatter, one of Cloodit's 106 collectible badges
Students earn collectable badges

Over 100 of them, across seven natural biomes.

Study Buddy
Students build a real study resource

Turns their work into revision material ready for Flash Cards and Exam study.

Diamond Dash — one of Cloodit's live, competitive Sprint games
Students lock in with Sprints

Live, competitive practice for the start of the lesson or a teacher-led lesson finisher.

A Cloodit certificate of achievement, ready to personalise and print
Custom printable certificates

Honour your top performers, or encourage a student who's trying hard — ready to print in seconds.

Quick Questions

1. A client adds a new login feature halfway through the project, so tasks are added to the Gantt chart. Which reason for change is this?
A. Scope creep ✓
B. Poor estimates
Scope creep is when requirements grow beyond the original plan. The plan changed because the work expanded, not because the time guesses were wrong.
2. A task planned for 2 days took 6 days because the developer underestimated the work. Which reason for change is this?
A. Personnel change
B. Poor estimates ✓
The original time estimate was inaccurate. This is a planning cause, so it reflects on the quality of the original plan.
3. A team member leaves mid-project and tasks must be reassigned. Which reason for change is this?
A. Personnel change ✓
B. Technical issue
A change in who is available to do the work is a personnel change. This is usually an external cause that the plan could not fully control.
4. A third-party library stops working with the latest Python version and the schedule is pushed back. Which reason for change is this?
A. Scope creep
B. Technical issue ✓
The problem came from the tools and technology, not from new requirements. It is a technical issue.
5. Which of these is a planning cause of change rather than an external cause?
A. Poor estimates of task durations ✓
B. A key developer becoming ill
Poor estimates come from how the plan was written, so they show a weakness in the plan. Illness is outside the team's control, so it is external.

Match the Pairs

Reason: scope creep → The client asked for extra features after the plan was approved, so tasks were added and the plan changed.
Reason: poor estimate → A task took longer than planned because the original time estimate was too low, so the schedule was adjusted.
An external cause of change: a team member leaves part way through the project and tasks must be reassigned. → Reason: personnel change
A pattern of reasons: most logged changes were caused by poor estimates, which shows the original plan was not very effective. → Poor estimate: 5 of 7 changes
Change 4: Reason: the plan was changed → The reason does not classify the cause. It only restates that a change happened. It should state a category such as technical issues.
Assessment: 'All changes were technical issues, so the plan was badly made.' → Technical issues are an external cause, not a planning fault. Judging plan effectiveness needs both external and planning causes considered.

Key Term

Reason for change
The cause of a plan change, classed as scope creep, personnel, technical issues or poor estimates. Patterns in these causes show how effective the original plan was.

Fill in the Blanks

1. reasons = ["scope creep", "technical"] print(len(reasons))
Hint: Type the built-in function that counts how many change reasons are in the list
2. reason = "poor estimates" if reason == "poor estimates": print("Planning cause")
Hint: Type the comparison operator that checks whether two values are equal
3. counts = {"scope creep": 3, "personnel": 1} print(max(counts, key=counts.get))
Hint: Type the built-in function that finds the most common reason for change (the highest count)
4. counts = {"scope creep": 2} counts["scope creep"] += 1
Hint: Type the operator that adds one to the tally when another change is classed under this reason
5. external = ["personnel", "technical"] reason = "personnel" print(reason in external)
Hint: Type the keyword that checks whether a reason is a member of the external causes list

Spot the Error

Question 1
A reasons = ["scope", "tech"]
B total = length(reasons)
C print("Total changes:", total)
Line B — Python has no length() function. Use len(reasons) to count how many reasons for change were logged.
Question 2
A external = ["staff", "tech"]
B reason == "poor estimate"
C if reason in external:
D print("External cause")
E else:
F print("Planning cause")
Line B — == compares values, so reason is never created and a NameError follows. Assignment needs a single =.
Question 3
A tally = {"scope": 0, "est": 0}
B tally[scope] += 1
C tally["est"] += 1
D print(tally)
Line B — The dictionary key must be the string "scope" in quotes. Without quotes Python looks for a variable called scope and raises a NameError.
Question 4
A total = "8"
B scope = 4
C share = scope / total * 100
D print(f"Scope: {share}%")
Line A — total is stored as a string, so dividing by it causes a TypeError. It should be the number 8 so the percentage can be calculated.
Question 5
A reasons = ["scope", "tech"]
B for r in reasons:
C if r == "scope":
D print("New request"
E else:
F print("Other cause")
Line D — The closing bracket is missing from the print() call, which is a syntax error. It should be print("New request").

Student with a class code? Join your class →