🚀 Feature Branching Considered Evil (Thierry de Pauw )

Learn why feature branching is considered evil and how trunk-based development offers a better approach, with faster feedback and integration, improving code quality and reliability.

Key takeaways
  • Feature branching is considered evil because it introduces complexity, makes integration harder, and can lead to broken builds.
  • Trunk-based development is a better approach, where everyone commits directly to the mainline branch, allowing for faster feedback and integration.
  • Feature toggles can be used to control the quality of new features, but they can also introduce complexity and make it harder to maintain the codebase.
  • Automated testing and continuous integration are essential for ensuring the quality of the codebase.
  • Code reviews are important for ensuring that the code meets the required standards, but they should not be used to catch bugs.
  • Pair programming and mob programming can help to improve code quality and reduce errors.
  • Continuous delivery is important for ensuring that the software is always working and that changes are deployed quickly and reliably.
  • Branching logic needs to be tested to ensure that it works correctly.
  • Feature branching can lead to a “vicious circle” of complexity, where changes are made in isolation and then merged into the mainline branch, making it harder to integrate and test the changes.
  • The author suggests using “branch by abstraction” as an alternative to feature branching, where changes are made in isolation but are still integrated into the mainline branch in small increments.
  • The author also suggests using “string-based development” as an alternative to feature branching, where changes are made in isolation but are still integrated into the mainline branch in small increments.
  • The author emphasizes the importance of incremental software engineering skills in the team, and suggests that this is often lacking in teams that use feature branching.
  • The author also emphasizes the importance of communication and collaboration in the team, and suggests that this is often lacking in teams that use feature branching.
  • The author suggests that feature branching is often used as a way to avoid the complexity of integrating changes into the mainline branch, but this can lead to a “vicious circle” of complexity.
  • The author suggests that trunk-based development is a better approach, where everyone commits directly to the mainline branch, allowing for faster feedback and integration.
  • The author emphasizes the importance of continuous delivery and continuous integration in ensuring that the software is always working and that changes are deployed quickly and reliably.
  • The author suggests that feature branching can lead to a “vicious circle” of complexity, where changes are made in isolation and then merged into the mainline branch, making it harder to integrate and test the changes.
  • The author emphasizes the importance of incremental software engineering skills in the team, and suggests that this is often lacking in teams that use feature branching.
  • The author suggests that trunk-based development is a better approach, where everyone commits directly to the mainline branch, allowing for faster feedback and integration.
  • The author emphasizes the importance of continuous delivery and continuous integration in ensuring that the software is always working and that changes are deployed quickly and reliably.