What is Feature Branching?
Feature Branching is the idea that the feature developments should only take place in the allocated branch and not in the main branch so that the code-base of the main branch is not disturbed, and the developers can work on a specific story in the dedicated branch.
The reason this is so is that when codes are being entered into the master branch, it might disturb it and it might result in the whole master branch to suffer. To prevent any unwanted broken codes from tainting the master branch, the feature branching is used. The Feature branching allows multiple developers to work on a feature in the Feature Branch and they can run different tests without getting hindered by the changes being done by other developers and vice versa.
Why is it bad?
The reason Feature Branching is considered to be bad is not because of what it is but because of how it is used. Feature Branching gives the developers different dedicated branches to work on, but it hinders the progress when the features and changes are not integrated into the master branch by a developer.
Another reason it is considered to be bad is because if there are two developers working on two dedicated branches, when they merge the code and it works then that is good but one cannot know if the feature coded in the dedicated branch will work individually and independently which may waste time and slow down the development altogether.
The real reason of the Feature Branching being bad is itself; when there are two developers working on two dedicated branches, one cannot know what the other developer has done and they possibly cannot predict how the work done in their dedicated branches will impact the work done in the other dedicated branches which altogether jeopardizes the whole point of using the Feature Branching.
— Slimane Zouggari