Individuals practice Trunk-Based Development, teams practice Continuous Integration
Let's state a clear distinction between what each developer should focus on individually—and what the team must enable and uphold collectively.
Hello, developers! 🚀
Welcome back to the Learn Agile Practices newsletter, your weekly dose of insights to power up your software development journey through Agile Technical Practices and Methodologies!5t
Before starting, I quickly remind you that my brand new Test-Driven Development 101 5-day Email Course is available: it is the introduction to TDD I wish I had when I started learning it, so I think you will find it very useful!
As a subscriber to my newsletter, you can have it with a 10EUR discount! 👇
Now, let's dive into today's micro-topic!
In short
🧠 Trunk-Based Development (TBD) is a mindset focused on individual discipline. Developers make small, frequent, and safe commits directly to the main branch, avoiding long-lived branches that lead to integration pain.
🔄 Continuous Integration (CI) is the team's way of working. It builds on TBD by validating all incoming changes through an automated, fast, and visible pipeline. It is a shared commitment to quality and speed.
🔗 TBD and CI are deeply interconnected. Together, they create a system where code is always integrated, always tested, and always close to releasable. Practicing both methods leads to faster delivery, earlier detection of problems, and a truly agile workflow.
The developer’s craft: Trunk-Based Development
At an individual level, Trunk-Based Development (TBD) is a mindset and discipline. Developers commit small, incremental changes directly to the shared trunk (or main
branch). No long-lived feature branches, no parallel universes. You pull from the trunk, you commit to the trunk.
Every commit should be:
Fast – small enough to be pushed frequently
Safe – validated locally before pushing
Releasable – it shouldn’t break the build or the product
If you're practicing TBD, you:
Pull from the trunk daily (or even several times a day)
Test locally before committing
Use feature toggles or similar techniques to hide unfinished work
Embrace the “baby steps” rhythm—small, safe changes over big, risky ones
In short: TBD is your personal discipline. It’s how you write code responsibly in a shared codebase.
The team’s responsibility: Continuous Integration
While TBD is about how you commit, Continuous Integration (CI) is about what happens next. CI is the team’s feedback engine. It ensures that all those frequent changes from individuals integrate into a stable, releasable product.
A team practicing CI:
Has a robust pipeline that validates every push
Fixes broken builds immediately—no “it’s not my fault” allowed
Designs tests and tools to scale with the speed of commits
Uses the CI feedback loop to guide technical decisions
A robust pipeline is:
Automated – runs on every commit
Fast – gives feedback in minutes, not hours
Visible – everyone sees the state of the build
Comprehensive – includes build, unit tests, integration tests, and static analysis
CI is the team’s safety net and accountability system. It’s what enables agility—not just fast delivery, but safe fast delivery.
The overlap: Two lenses on one goal
TBD and CI aren’t separate processes. They are two sides of the same coin:
TBD enables CI by keeping code integrated and flowing
CI supports TBD by giving fast, reliable feedback
Actually, CI requires TBD - since it explicitly requires that you commit your changes very frequently to the main branch.
When such practices are in place:
Your team delivers faster
You spot problems earlier
Your software stays always-releasable
When they’re not:
Long-lived branches create merge hell
Manual builds hide breakages for days
Teams become reactive instead of adaptive
💡 As an individual contributor: commit small, commit safe, and commit often.
💡 As a team member: make integration painless, feedback fast, and the build sacred.
Only by practicing both, development teams can build software that’s not only agile in name—but agile in reality.
Until next time—happy coding! 🤓👩💻👨💻