{"id":48,"date":"2026-10-08T09:20:00","date_gmt":"2026-10-08T09:20:00","guid":{"rendered":"https:\/\/weeks-from-today.com\/blog\/?p=48"},"modified":"2026-10-04T16:43:18","modified_gmt":"2026-10-04T16:43:18","slug":"work-sprint-planning-in-weekly-increments","status":"publish","type":"post","link":"https:\/\/weeks-from-today.com\/blog\/work-sprint-planning-in-weekly-increments\/","title":{"rendered":"Work Sprint Planning in Weekly Increments"},"content":{"rendered":"<p><strong>TL;DR:<\/strong> A sprint has a length the team already agreed, usually two weeks, and a start datetime that is a real calendar day. Stack later sprints by adding that length again, and keep demo day and release day as separate labels if they are not the same date. When kickoff slips, recompute on the <a href=\"https:\/\/weeks-from-today.com\/\">weeks from today calculator<\/a>; do not quietly shorten the sprint to \u201ccatch up.\u201d<\/p>\n<h2>Length is a number in the working agreement<\/h2>\n<p>If the team agreed that a sprint is two weeks, the end is 14 days after the start, landing on the same weekday. You do not get to call a nine-day rush \u201csprint 14\u201d and also claim the velocity chart is comparable. You can run a shorter cycle. You then name it as shorter and keep it out of the two-week series, or you accept that the chart will kink. The calculator\u2019s role is modest: turn \u201ctwo weeks from the kickoff day\u201d into a date everyone can paste into the tracker. The social role \u2014 whether the team respects that date \u2014 is not something a date tool can repair.<\/p>\n<p>Write the length where the dates are, not only in a charter nobody opens. \u201cSprint length: 2 weeks\u201d at the top of the board prevents a well-meaning manager from treating the end date as a suggestion that moves whenever a demo room is free.<\/p>\n<h2>Two weeks from a Wednesday kickoff<\/h2>\n<p>Kickoff is Wednesday, 15 April 2026. Two weeks later is Wednesday, 29 April 2026. If your convention is that the sprint ends at the start of that Wednesday\u2019s planning, say so: work days are 15 April through 28 April, and the 29th is the next kickoff. If your convention is that the 29th is still inside the sprint until close of business, the end is still the 29th but the next kickoff cannot also be the morning of the 29th. The week math does not choose the convention. It gives you the Wednesday. The team writes whether that Wednesday is a fence or a day of work.<\/p>\n<p>A kickoff on Wednesday is slightly awkward for people who assume sprints start on Monday. Do not \u201cfix\u201d it by sliding the start back to Monday, 13 April unless the team actually started then. A Monday start plus two weeks is Monday, 27 April, which is a different end. Sliding the anchors to Mondays for neatness rewrites history and makes the demo invite wrong. Keep Wednesday if Wednesday is when you planned.<\/p>\n<h2>Three sprints in a row on one calendar<\/h2>\n<p>Using the fence convention \u201cnext kickoff equals this end,\u201d the series from Wednesday, 15 April 2026 is:<\/p>\n<ul>\n<li><strong>Sprint A:<\/strong> kickoff Wed 15 Apr 2026, next fence Wed 29 Apr 2026<\/li>\n<li><strong>Sprint B:<\/strong> kickoff Wed 29 Apr 2026, next fence Wed 13 May 2026<\/li>\n<li><strong>Sprint C:<\/strong> kickoff Wed 13 May 2026, next fence Wed 27 May 2026<\/li>\n<\/ul>\n<p>Each step is two weeks. Sprint C\u2019s fence is six weeks after 15 April, and six weeks after Wednesday, 15 April 2026 is indeed Wednesday, 27 May 2026. You can compute C directly or by stacking. Stacking is better when a middle sprint might change length, because a single six-week jump hides a one-week exception in sprint B. If B becomes three weeks, C\u2019s kickoff moves to Wednesday, 20 May, and the old 13 May invite is wrong even though A did not change.<\/p>\n<h2>The demo and the release can fall on different days<\/h2>\n<p>Some teams demo on the last Thursday inside the sprint and release the following Monday, after a weekend of caution. For sprint A, last Thursday before the 29 April fence might be Thursday, 23 April 2026, and a release Monday might be Monday, 4 May 2026, which is not two weeks from kickoff. Those extra dates are offsets from the fence or from the demo, chosen for operational reasons. Label them. \u201cDemo Thu 23 Apr (inside sprint A). Release Mon 4 May (not a sprint boundary).\u201d If you tell a customer the release is \u201cend of the sprint,\u201d you have collapsed two dates into a phrase that points at 29 April. The customer will look for the build on the 29th. Either release then, or stop using the phrase.<\/p>\n<h2>A late kickoff does not shrink the two weeks<\/h2>\n<p>Planning finishes late and real kickoff moves from 15 April to Friday, 17 April. A full two-week sprint now fences on Friday, 1 May 2026. Keeping the old fence of 29 April creates a 12-day sprint. Sometimes you want that, to stay aligned with a release train that cannot move. Then say \u201csprint A shortened to end Wed 29 Apr; length is 12 days, not 2 weeks.\u201d Sometimes you want the full length, and the train date moves. Then move the fence to 1 May and tell every invite. The failure is to do neither announcement and let half the team stop on the 29th while the other half codes through Friday.<\/p>\n<p>Slack memory will not settle this. The ticket or the board header should show start, length, and fence in one line, edited the day the start changes. Comments below can argue about scope. The header holds the dates.<\/p>\n<h2>Leave the arithmetic where the work is tracked<\/h2>\n<p>Paste \u201cStart Wed 15 Apr 2026 + 2 weeks = fence Wed 29 Apr 2026\u201d into the sprint ticket. When someone proposes a new end, they edit that line and show the new addition. Recompute on the <a href=\"https:\/\/weeks-from-today.com\/\">homepage<\/a> if the mental math becomes a debate \u2014 debates about 14 days are a sign the channel is tired, not a sign the week is ambiguous. The next sprint\u2019s start should be copied from this sprint\u2019s fence, not retyped from memory a month later. That single copy-paste is what keeps A, B, and C from drifting apart by a day each cycle.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Stack two-week sprints and mark release dates from today.<\/p>\n","protected":false},"author":1,"featured_media":8,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"neve_meta_sidebar":"","neve_meta_container":"","neve_meta_enable_content_width":"","neve_meta_content_width":0,"neve_meta_title_alignment":"","neve_meta_author_avatar":"","neve_post_elements_order":"","neve_meta_disable_header":"","neve_meta_disable_footer":"","neve_meta_disable_title":"","footnotes":""},"categories":[4],"tags":[],"class_list":["post-48","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-planning-examples"],"_links":{"self":[{"href":"https:\/\/weeks-from-today.com\/blog\/wp-json\/wp\/v2\/posts\/48","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/weeks-from-today.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/weeks-from-today.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/weeks-from-today.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/weeks-from-today.com\/blog\/wp-json\/wp\/v2\/comments?post=48"}],"version-history":[{"count":4,"href":"https:\/\/weeks-from-today.com\/blog\/wp-json\/wp\/v2\/posts\/48\/revisions"}],"predecessor-version":[{"id":135,"href":"https:\/\/weeks-from-today.com\/blog\/wp-json\/wp\/v2\/posts\/48\/revisions\/135"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/weeks-from-today.com\/blog\/wp-json\/wp\/v2\/media\/8"}],"wp:attachment":[{"href":"https:\/\/weeks-from-today.com\/blog\/wp-json\/wp\/v2\/media?parent=48"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/weeks-from-today.com\/blog\/wp-json\/wp\/v2\/categories?post=48"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/weeks-from-today.com\/blog\/wp-json\/wp\/v2\/tags?post=48"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}