Home / Offseason / Week O7
Offseason · Week 7 of 8

Subsystem Ownership

Read, document, and improve a real subsystem from Watergate, Oasis, or Shosty.

This is the capstone. No new concepts — this week you apply everything. Pick a subsystem from Watergate, Oasis, or Shosty and own it. Read it, document it, improve it, and present it.

How to Read Unfamiliar Code

Opening a file you've never seen before is disorienting. Here's a systematic approach that works every time.

Step 1
Read the fields
Instance variables tell you what hardware this subsystem controls. Motor IDs, sensors, state variables.
Step 2
Read the constructor
How is the hardware configured? What are the default settings?
Step 3
Read the public methods
These are the subsystem's API — what commands can call. Understand inputs and outputs.
Step 4
Read periodic()
What runs every 20ms? Logging, safety checks, state machines.

Documentation Checklist

Before your PR is ready, every method needs a Javadoc:

java — Javadoc template
/**
 * Sets the shooter flywheel to a target RPM.
 * Call this before firing to pre-spin the wheel.
 *
 * @param targetRPM the desired flywheel speed in RPM (0 to 6000)
 */
public void setTargetRPM(double targetRPM) {
    this.targetRPM = Math.min(targetRPM, 6000);
}

Capstone Assignment

🤖
Subsystem Ownership
Read → document → improve → present

1. Pick one subsystem from Watergate, Oasis, or Shosty (ask Hrehaan/Sohan for access)
2. Read the entire file using the 4-step process above
3. Add Javadoc comments to every public method
4. Find one bug or improvement (unused variable, missing null check, magic number, etc.)
5. Fix it on a branch
6. Open a PR with a description of what you changed and why
7. Prepare a 5-minute walkthrough: "Here's what this subsystem does, here's how it works, here's what I improved"

This is exactly what you'll do during build season when you own a subsystem.

Knowledge Check