The pillar hockey scheduling guide is the structural version of this article — formats, constraints, the auto-scheduling transition we are running for the 2025 fall season. This piece is the personal one. The five specific mistakes I have made building the Bronze schedule for the Havoc Amateur Hockey League since I joined the board in 2016, and what I had to change after each one.
I have run Bronze across the league's growth from a two-division setup (Bronze, Silver) to four divisions (Bronze, Steel, Silver, Iron). Every mistake here is something I did, not a story I heard. The fixes are what stuck.
Mistake 1: Treating "No Back-to-Back Same Opponent" as a Soft Preference
This is the one that produced most of the friction in my first few seasons as Bronze director. I would build the round-robin matrix on paper — every team paired against every other team, evenly distributed. Then I would lay it onto the actual ice slots Wilcoxon gave us, and the moment I had to shuffle a game from a Friday to the following Sunday to fit the rink's availability, the rotation broke the matchup history.
The result, season after season: two or three pairs of teams playing each other in consecutive weeks. Captains noticed first. Players noticed louder. The fix in-season was always to swap individual games to break up the consecutive pairs, which itself created new consecutive-pair problems three weeks later. The leaky-balloon dynamic.
Lesson: consecutive-same-opponent has to be a hard constraint, declared up front, before any rotation happens. Not a preference. Not something the human scheduler will catch after the fact. The 2025 fall Bronze season, built on RocketHockey's constraint solver with this rule set as a hard constraint, produced zero consecutive identical matchups across the season. Not "fewer" — zero. That single switch was worth all the years of catching the problem too late.
Mistake 2: Forgetting to Flag a Shared Goalie
Some HAHL players skate in more than one division. A Bronze regular might also be a Silver team's goalie. When that goalie's Bronze team and Silver team end up on the ice at the same time, one of them is short a goalie, which is not a problem you can solve at puck drop.
I missed this one in a season when a new Bronze team brought in a goalie who was already rostered on a Silver squad I did not catch. The schedule placed both teams on the ice within the same hour at Huntsville Ice Sports Center. Caught it during a captain's review the week before games started, which is the only reason it did not become a public mess.
Lesson: shared-goalie pairings are roster data first, scheduling data second. They have to live in the roster system and feed into the scheduler as hard constraints — same as the consecutive-opponent rule. The roster management guide covers how cross-division commitments get flagged at the roster level so they propagate to the schedule.
Mistake 3: Building the Schedule Before Confirming the Rink Calendar
This is the one that taught me to read the rink contract first, not last. One season I built a complete Bronze schedule, sent it to captains for review, and then the city closed Wilcoxon for two weeks I had not been told about. The schedule had nine games in those weeks. I had to rebuild the entire back half, which meant new constraint conflicts, new shared-goalie issues to re-check, and a captain group chat that was understandably annoyed.
Lesson: the ice contract drives the schedule, not the other way around. Pull blackout dates from the rink's actual published calendar — not from memory, not from "I am sure they will tell us if anything closes." The complex is a city-operated building. The city has its own calendar. Get it in writing before anything else gets generated.
Mistake 4: Listening to the One Captain Who Wanted His Team's Friday Ice
Adult-league players have day jobs. Friday-night ice at Wilcoxon is the most desirable slot in the building. Every season at least one captain wants a guarantee that their team gets Friday nights more than their share.
In an early season I let one captain talk me into a Friday-heavy assignment for his team because his roster had work-travel constraints. The math worked out — until you laid the other teams' slot distributions next to his. His team played Friday 60% of the time. Two other teams hit late Sunday 50%. By week 8, three captains had separately emailed me about the disparity. None of them had been on the original ask, but they could read the schedule.
Lesson: the schedule is a fairness document, and fairness is visible whether you write it down or not. Distribute prime ice (Friday at Wilcoxon) evenly across teams across the season. Any captain accommodation has to be visible to every other captain in advance — usually it stops being requested once they know the league publishes the slot distribution alongside the schedule.
Mistake 5: Publishing Without a Captain Pre-Review Pass
For too long I treated the schedule as "done when the generator says it is done." Click publish, send to captains, get on with the season. What this missed: captains know things about their teams the schedule cannot. Player X has a tournament weekend the league did not collect. Goalie Y is moving out of town in week 6. The shared-goalie flag is wrong because the roster was just updated.
The first season I added a one-week captain pre-review pass — schedule generated, sent to captains, week for them to flag anything obviously broken before public publishing — the number of in-season reschedule requests dropped substantially. Not to zero. Adult life happens. But the captain who flags "Player X is out weeks 4-6" before the schedule is public is doing me a favor; the captain who flags it after I have published is making a request I have to either grant (and break fairness) or deny (and look unreasonable).
Lesson: add a captain review window between schedule generation and public publishing. One week is enough. Make it explicit that this is the window to flag problems; after that, the schedule is the schedule.
What Else I Tell People Asking About Schedule Mistakes
Can you change a hockey schedule mid-season? Yes, but every change creates downstream problems. The auto-scheduler can regenerate around a new constraint, but the regeneration may move other games. Build the season-start schedule with a reserve of one or two open slots that you assign only three weeks out, so true emergencies have absorption capacity without forcing a full rebuild.
Why does my hockey schedule have so many conflicts? Almost always one of these three: blackout dates were not collected (or were ignored), cross-division players are not flagged as roster data, or the league has more committed games per week than the rink contract actually supports. Diagnose which one before fixing.
How long does it take to build a hockey schedule? With clean constraints declared up front and a working generator, the algorithm runs in minutes. The work is in the constraint definition and the captain pre-review. Plan for a week of light work spread across pre-season; that is what produces a schedule that holds.
For the structural how-to side of scheduling — formats, constraints, the constraint solver, step-by-step — see the hockey scheduling guide. For how shared-goalie and cross-division players flow through roster data into scheduling constraints, see the roster management guide.
Rob Boirun's Insight
I have run the HAHL Bronze schedule every season since 2016. Every mistake in this article is one I personally made. The pillar scheduling guide is the structural version — formats, constraints, how to think about it. This piece is what happens when you do those things wrong, with the receipts.
Frequently Asked Questions
Can you change a hockey schedule mid-season?
Yes, but every change creates downstream problems. The auto-scheduler can regenerate around a new constraint, but the regeneration may move other games. Build the season-start schedule with a reserve of one or two open slots that you assign only three weeks out, so true emergencies have absorption capacity without forcing a full rebuild.
Why does my hockey schedule have so many conflicts?
Almost always one of these three: blackout dates were not collected (or were ignored), cross-division players are not flagged as roster data, or the league has more committed games per week than the rink contract actually supports. Diagnose which one before fixing.
How long does it take to build a hockey schedule?
With clean constraints declared up front and a working generator, the algorithm runs in minutes. The work is in the constraint definition and the captain pre-review. Plan for a week of light work spread across pre-season.
What is the worst hockey scheduling mistake?
Treating consecutive-same-opponent as a soft preference instead of a hard constraint. Manual scheduling breaks this rule almost every time the rotation step happens. The result is teams playing each other in consecutive weeks, which players notice and captains complain about within two seasons.
Sources & References
- Havoc Amateur Hockey League (havocahl.com) — operational reference league
- USA Hockey League Administrator Guide