Don't Oversell Ideas: Trunk-Based Development Edition
Welcome to the new week! We're searching for simple answers to hard problems. We scroll through social media, getting 10-30 seconds of "life hacks.". Just like in the James Bond movies, the message disappears right after it is read. And that's a good thing, as it'd be more dangerous if we actually try to apply them in practice. I think we're in times when we're getting more often edutainment rather than actual education. Our dopamine is boosted by taking a dose of those quick answers. We get the feeling, "hey, I just learned something new!". But do we? The advice-givers usually don't have bad intentions. Most of the time, they believe that's great advice, as it worked in their one or two projects. Sometimes even more, but quite often also in none, as it's more a process of their thought experiments. The shortness of social media posts or short videos also does not help. To reach a wider audience, it has to be kiss, kiss, bang, bang. And if you believe your message is right, then you should try to reach wide audience, right? When in Rome, do as the Romans do. But that's a trap. The trap of overselling and changing your message into snake oil: a magical cure for everything. It's even easier to fall into that if you spend too much time thinking about it or have financial incentives. Martin Fowler, in his great article "Advocate, educator, and authorial stance", wrote:
That's one of those articles I get back quite a lot as a reminder of where I should also be in my work. Am I succeeding? Dunno, you tell me. What I know, though, is that there are leitmotifs in my bubble that I see as harmful and misleading. Not because they're wrong per se but because of how they're presented. They oversell the idea without explaining to people what they're signing for. And that's dangerous. Trunk-Based DevelopmentOne of those oversold motifs is Trunk-Based Development. One branch to rule them all. What's Trunk-Based Development? From the DORA website:
A similar definition can be found in other places. In a nutshell Trunk-Based Development, it's a "just" branching strategy. Focused on minimising the lifetime of changes made outside the main branch. That can be done by either committing directly to the main branch or having some short-living branches. Clearly, this definition doesn't forbid the branches, reviews, pull requests, etc. Yet most of the time, trunk-based development is shown as the opposite of them. Too often, we're being pushed with absolutes like:
Don't get me wrong; I like to keep branches short-living, I like to pair, and I'm not a fan of nitpicking in pull request reviews or delivering slowly. I'm all for that, but with the right proportions and embracing that different organisations are on different levels of "process maturity." Not all can just throw away their current practices and turn them upside down, even if the new ones are considered "best practices." Giving advice is not as simple as:
Those are thank-you-for-nothing pieces of advice that are not actually actionable. All of that represents the outcome of our development process, not the process itself. What does that even mean, short, small, simple? Ask your colleagues; I guess that each person will give a different answer. Applying such simple recipes applied in isolation will not change the overall picture. I would prefer to see real studies on how to approach organisational evolution, when to do it, and how and when to say "enough is enough". Of course, I don't want reports like the (in)fameous McKinsey report on developer productivity. I don't want to see reports focusing on the differences in the exact code lines or minutes spend metrics. Most of those that I saw are missing the point, not understanding the difference between correlation and causation. Being in the industry for over 17 years is a privilege. I remember how it looked when I started. Those were days before StackOverflow existed. Weird and dark times. I saw the initial trunk-based development, and I remember why Git Flow and Pull Requests became popular. There was a reason for that. Gilbert Chesterton wrote about this type of change using the metaphor of a fence:
So, if we want to throw away the fence of code reviews and pull requests, we should understand why they were created and what problem they're trying to solve. When I started my career, code repositories weren't even a standard in the industry. Of course, most companies were using some code versioning systems, but not all cared enough. The standard was SVN. Each company had to keep its own system. SVN had a main branch called trunk, thus "The initial trunk-based development," as I call it. It was a nightmare. SVN didn't have local branches like Git. So you were actually forced to always push your changes to remote. Of course, you could push it to the remote non-main branch, but the branching merging was a nightmare. Quite often, the team had a person who was called to do the merges, as it required a specific craft not to break the main branch... Continue reading this post for free in the Substack app |
Older messages
Why to measure and make our system observable? How to reason on chaotic world
Sunday, October 20, 2024
The world is messy and chaotic, who knew? Embracing that hard fact can bring relief, and be a first step to understanding how to handle known knowns, unknown unknowns and all that jazz. Today I
Webinar #23 - Gojko Adzic on designing product development experiments with Lizard Optimization
Monday, October 7, 2024
"My favorite conspiracy theory is that the stuff we make in software actually has any sense." As you see, we started strong in this week's episode. That's a quote from Gojko Adzic,
Webinar #22 - On Performance Testing with Jarosław Pałka
Monday, September 30, 2024
This time, our webinar has a special guest: Jarosław Pałka. He's the Senior Staff Software Engineer responsible for benchmarking infrastructure in Neo4j.We discussed how to reason about performance
Making your system observability predictable
Monday, September 23, 2024
Everyone claims that observability is the key for production readiness. Yet, most of us just adds auto-instrumentation right before going to production and call it a day. That's fine, but not
Making your system observability predictable
Monday, September 23, 2024
Everyone claims that observability is the key for production readiness. Yet, most of us just adds auto-instrumentation right before going to production and call it a day. That's fine, but not
You Might Also Like
⚙️ Robo-suits
Tuesday, December 24, 2024
Plus: The data center energy surge
Apache Tomcat Vulnerability CVE-2024-56337 Exposes Servers to RCE Attacks
Tuesday, December 24, 2024
THN Daily Updates Newsletter cover The Data Science Handbook, 2nd Edition ($60.00 Value) FREE for a Limited Time Practical, accessible guide to becoming a data scientist, updated to include the latest
Edge 459: Quantization Plus Distillation
Tuesday, December 24, 2024
Some insights into quantized distillation ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏
Prepare for a Lifetime of Adventure with Rosetta Stone
Tuesday, December 24, 2024
The Perfect Gift For Every Traveler on Your List Rosetta Stone makes it easy to connect with the world in a whole new way. With a Lifetime Unlimited plan, users can access 25 languages to prepare for
Tuesday Triage #232
Tuesday, December 24, 2024
Your weekly crème de la crème of the Internet is here! The 232nd edition featuring fish traps, little Mussolinis, and volvelles. ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏
Elastic Community Newsletter
Tuesday, December 24, 2024
Check out the latest from the Elastic Community ㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤ ㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤ ㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤ elastic | Search. Observe. Protect community-newsletter-header-img.png
Daily Coding Problem: Problem #1646 [Medium]
Monday, December 23, 2024
Daily Coding Problem Good morning! Here's your coding interview problem for today. This problem was asked by Facebook. Write a function that rotates a list by k elements. For example, [1, 2, 3, 4,
GCP Newsletter #430
Monday, December 23, 2024
Welcome to issue #430 December 23rd, 2024 News Event Official Blog Calling all devs: Code the future of baseball with Google Cloud and MLB - Google Cloud and MLB are hosting a hackathon where
⏯️ Make a Holiday Guest Profile for Your Streaming Services — What Is Linux Mint?
Monday, December 23, 2024
Also: I Played the Worst Mobile Games So You Don't Have To, and More! How-To Geek Logo December 23, 2024 Did You Know The giant splashes of color that make poinsettias a popular holiday decoration
Ranked | The Most Satisfying vs. Most Reliable Car Brands in 2024 🚙
Monday, December 23, 2024
The most reliable car brands are rarely the most satisfying to own, according to recent Consumer Reports survey data. View Online | Subscribe | Download Our App Presented by: Find the megatrends