Semantic Versioning Explained: MAJOR.MINOR.PATCH, Ranges, and Bump Workflows
Master SemVer for libraries and apps — pre-releases, caret vs tilde ranges, breaking-change discipline, and a release workflow that keeps dependents sane.
A practical guide to agile frameworks — Scrum sprints, Kanban flow, XP, and Lean — with comparison tables, ceremonies, and honest advice on what actually works for software teams.
By codefunc
Every team says they are "agile." Few agree on what that means in practice. One group runs two-week sprints with daily standups; another ships continuously from a Kanban board with no estimates at all. Both can be correct — agile is a set of values and principles, not a single process you install from a PDF.
Bottom line: Pick a framework that matches your batch size, release cadence, and uncertainty. Use Scrum when you need timeboxed planning and predictable review cycles. Use Kanban when work arrives unpredictably and limiting WIP matters more than sprint boundaries. Blend them when reality demands it — but name your rules so the team shares the same expectations.
The Agile Manifesto (2001) prioritizes:
| Value | Over |
|---|---|
| Individuals and interactions | Processes and tools |
| Working software | Comprehensive documentation |
| Customer collaboration | Contract negotiation |
| Responding to change | Following a plan |
That does not mean "no process" or "no documentation." It means process and docs serve delivery — not the other way around.
If your "agile" process violates half of these — endless meetings, no shippable increment, burnout every release — you have agile theater, not agile software development.
Scrum organizes work into fixed-length sprints (usually one to four weeks). Each sprint produces a potentially shippable increment of product.
| Role | Responsibility |
|---|---|
| Product Owner | Owns backlog priority, clarifies "why," accepts work |
| Scrum Master | Facilitates process, removes blockers, coaches the team |
| Developers | Design, build, test, and deliver the increment |
On small teams, one person may wear two hats. The accountabilities still matter — someone must own priority, someone must protect flow, everyone builds.
| Event | Typical length (2-week sprint) | Purpose |
|---|---|---|
| Sprint Planning | 2–4 hours | Select backlog items, define Sprint Goal |
| Daily Scrum | 15 min | Sync progress, surface blockers |
| Sprint Review | 1–2 hours | Demo increment to stakeholders |
| Sprint Retrospective | 1–1.5 hours | Improve how the team works |
| Backlog Refinement | Ongoing (~10% capacity) | Split stories, estimate, clarify |
flowchart LR
A[Product Backlog] --> B[Sprint Planning]
B --> C[Sprint Backlog]
C --> D[Daily Scrum loop]
D --> E[Increment]
E --> F[Sprint Review]
F --> G[Retrospective]
G --> A
| Artifact | What it is |
|---|---|
| Product Backlog | Ordered list of everything that might be built |
| Sprint Backlog | Items committed for the current sprint |
| Increment | Done work that meets the Definition of Done |
Definition of Done (DoD) is non-negotiable in Scrum. Example for a web team:
Without a shared DoD, "done" means different things to PO and developers — and velocity numbers lie.
| Symptom | Likely cause |
|---|---|
| Sprints always spill over | Overcommitment; stories too large |
| Daily Scrum = status report to manager | Wrong audience; lost self-management |
| No shippable increment | DoD too weak; "almost done" counts |
| Velocity worship | Story points gamed; quality drops |
| Refinement skipped | Planning meetings become guessing games |
Kanban visualizes work on a board, limits work in progress (WIP), and pulls new work only when capacity opens. There are no sprints by default — though many teams add cadences (weekly planning, monthly reviews) on top.
flowchart LR
B[Backlog] --> R[Ready]
R --> IP[In Progress]
IP --> RV[Review]
RV --> D[Done]
WIP limits force finish-before-start behavior. If Review is full, developers help review instead of starting new features — that is the system working.
| Metric | Definition | Why it helps |
|---|---|---|
| Cycle time | Start → Done for one item | Predict when work finishes |
| Throughput | Items completed per week | Capacity planning |
| WIP age | How long items sit in a column | Finds stuck work early |
Scrum estimates effort; Kanban measures time. Both reduce surprise — different math.
| Symptom | Likely cause |
|---|---|
| Board is infinite WIP | No limits; everything "urgent" |
| Columns never updated | Board is wallpaper |
| Done never means deployed | DoD missing from last column |
| No refinement | Backlog is a junk drawer |
| Dimension | Scrum | Kanban |
|---|---|---|
| Cadence | Fixed sprints | Continuous flow |
| Commitment | Sprint Goal + forecast | WIP limits + pull |
| Change mid-cycle | Discouraged until next sprint | Expected anytime |
| Roles | PO, SM, Developers | Optional; often no new titles |
| Estimation | Often story points | Optional; cycle time replaces |
| Best for | Feature teams, product discovery | Support, platform, flow optimization |
| Release rhythm | Often per sprint or more | Whenever item hits Done |
Scrumban (planning from Scrum + WIP limits from Kanban) is common on mature teams: a backlog refinement cadence, no rigid sprint commitment, but WIP caps and a weekly demo. Name it whatever you want — clarity beats labels.
Engineering-heavy agile. Emphasizes technical practices:
| Practice | Purpose |
|---|---|
| Pair programming | Knowledge share, fewer defects |
| TDD | Design through tests |
| Continuous integration | Integrate many times per day |
| Small releases | Feedback fast |
| Refactoring | Keep code changeable |
| Simple design | YAGNI |
XP pairs well with both Scrum and Kanban. If your "agile" has ceremonies but no CI, you are missing half of XP's point.
Adapted from manufacturing. Key ideas:
Kanban draws heavily from Lean. DORA metrics (deployment frequency, lead time) are Lean thinking applied to DevOps.
| Framework | One-line summary | Typical context |
|---|---|---|
| Crystal | "People over process" — methods scale by team size and criticality | Small teams, varied project types |
| FDD (Feature-Driven Development) | Design by feature; two-week "design by feature" builds | Large Java/enterprise histories |
| DSDM | Timeboxed with MoSCoW prioritization | Fixed deadline + scope negotiation |
| SAFe | Scaled agile across many teams and trains | Large enterprises; heavy ceremony |
For most product teams under ~15 developers, Scrum + Kanban ideas + XP engineering covers 90% of needs without SAFe overhead.
flowchart TD
A[How does work arrive?] --> B{Mostly planned features?}
B -->|Yes| C{Need fixed review cadence?}
B -->|No - interrupts and bugs| D[Kanban with WIP limits]
C -->|Yes| E[Scrum or Scrumban]
C -->|No - ship continuously| F[Kanban + CI/CD]
E --> G{Strong engineering discipline?}
F --> G
D --> G
G -->|Weak CI/tests| H[Invest in XP practices first]
G -->|Solid| I[Tune metrics and cadence]
Ask three questions:
Regardless of framework, these activities earn their calendar time:
Split epics into vertical slices — one user-visible outcome per story. "JSON formatter dark mode" beats "theme refactor across 72 files" as a single ticket.
Use the Text Diff tool when comparing acceptance criteria or API response changes during refinement — paste before/after and agree on expected output in the meeting.
Document recurring jobs (nightly builds, dependency audits) with clear cron expressions. Draft schedules in the Cron Builder and paste the verified expression into your runbook.
Format: What helped? What hurt? What one experiment next sprint?
Pick one improvement — not twelve action items nobody owns. "Add npm test to pre-commit" beats "communicate better."
Example for a static frontend product:
lib/npm run lint && npm test && npm run build green| Method | How it works | Good when |
|---|---|---|
| Story points | Relative size vs reference story | Scrum teams building familiarity |
| T-shirt sizes | S / M / L / XL for roadmap | Early discovery |
| Hours | Direct time estimate | Small tasks, solo devs |
| No estimates | Split until all items are ~1–2 days | Kanban, high uncertainty |
| Cycle time history | "Similar items took 3 days median" | Mature Kanban |
Planning fallacy hits everyone. If last three "small" tasks took a week each, your estimates are wrong — fix the reference stories, not the developers.
For prototypes needing sample API payloads during spike stories, generate fixtures with the Fake Data Generator instead of copying production data into tickets.
Full Scrum is overhead. Useful minimum:
You are already "agile" if you ship small changes and learn from users.
Scrum or Scrumban with shared DoD. One board. PO available for same-day answers.
| Anti-pattern | What to do instead |
|---|---|
| Agile = more meetings | Cut status meetings; keep planning/review/retro only |
| Story points as performance metric | Measure outcomes, not points |
| PO absent during sprint | Refinement blocks; devs guess priority |
| "We are agile so no docs" | Document decisions, APIs, runbooks — just not instead of shipping |
| Reorg every quarter | Stable teams beat matrix shuffle |
| Copy Spotify model slides | Design process for your constraints |
Scrum gives rhythm: plan, focus, demo, improve. Kanban gives flow: limit WIP, finish before starting, measure time. XP gives quality: integrate often, test first, refactor safely. Lean gives mindset: remove waste, ship smaller, learn faster.
You do not need certification to benefit — you need working software on a sustainable cadence and a team that reflects honestly when the process stops helping.
Pick the smallest process that solves your actual problem. Then iterate — which, after all, is the whole point.
Master SemVer for libraries and apps — pre-releases, caret vs tilde ranges, breaking-change discipline, and a release workflow that keeps dependents sane.
A practical guide to Git for frontend developers — branching strategies, commit conventions, pull request workflows, and the commands you'll use daily on product teams.
Understand Unix file permissions end to end — the user/group/other model, octal math, symbolic notation, common permission sets, and the security mistakes that cause 403s and leaked keys.
Find a developer tool