I’ve sometimes used feature branches and have never had the issues Martin Fowler talks about in this article. I can see how they would arise, but I suppose I’ve either employed continuous integration techniques or just been very lucky. Fowler writes of two methods in which feature branches can be tamed — promiscuous integration and continuous integration — but still frowns on them. I agree that good design can lead to less feature branches, and I’ve sometimes employed the branch by abstraction techniques mentioned at the end of the article.
I don’t follow any hard-and-fast rules for branching. Whatever works best at the time is fine by me, and I’ve never encountered any serious issues.