Writing by hand, you'll end up re-inventing the wheel, writing all those little services and things that every PBX needs to have. In the end, an office PBX generally needs to work in a certain way, and there a bunch of baseline services you need to provide. However, you also have to consider what you are trying to accomplish. Certainly, by hand, you get a ton of control. Upfront: I used to be a core dev on freepbx, but moved to another company, and unfortunately don't have time for it anymore.
#Visual dialplan for asterisk install
#Visual dialplan for asterisk full
If you want a full level of control (as I did), I would suggest:
If you just want to use the GUI to get started, then take over complete control of the configs that will work, but you'll probably be driven to reduce the layers that the GUI was using for your own sanity. If you then go to edit the config files they create, you have to be very careful to make your changes in the same parts of the config that the GUI would have let you - otherwise the GUI may not recognize what you've done, or worse yet stamp over what you've done with its own templates because you put the changes in the wrong place. You will also tend to find multiple levels of macros in GUI distributions, which may make using the config files they create less than optimal. Think of the way that say Debian does their Apache configuration vs the standard source distribution - one config file vs tens or even hundreds being pulled in via include statements. Your initial impressions are correct the GUIs like do to things their way, and attempts to step outside of that box will sometimes be difficult.