Using behaviorTree vs coding in AIController

Hello everyone!
I started studying BevahiorTrees and BlackBoards, and I can’t wrap my head around something.
Are they suggested for some reason? Can’t I do the same things with code inside the AIController?
I recognize that for most people BehaviorTrees may feel and look more intuitive, but having been a programmer for long, I feel more confident and see more clarity using the code directly.
Are there any particular disadvantages in writing the AI logic directly in C++? Does BehaviorTree have any optimization/advantage?

Thank you!

Behavior Trees are built a built in AI structure so you don’t have to roll your own. They are optimized to not run from the top every time. You can extend them in C++ with a bit of work to minimize the visual aspect.

I decided to use the MARPO Methodology from AI Gaming Wisdom 4, pg 239. I have no idea if it is better or not as I am too early in the use of it.

I subclassed the brain component to assign to the subclassed AI character which then calls the appropriate classes to run the subtasks.