Programming is FAR more art then engineering.
It is constructing in your mind ethereal bits and pieces of "code", which then translate into something in the real world that MIGHT munge data, interact with people, interact with other program, interact with hardware, etc.
Reconfigure it, and it does something totally different.
Make it command line driven, or control file driven, and it behaves differently every time it is invoked.
This is NOTHING like real world contruction.
While people would LIKE to have a toolbox approach, they quickly dead end. And then they find the toolbox "programmers" are just the contruction worker code monkeys, while real programmers use their imagination and experience to construct something no one else could envision, ie: ART!
And yes, these people (myself included) will usually never be able to come up with a good user interface. Usable, possibly, but good, probably not.