I have really come to think that most GUI's are misguided, they seek to be easy and intuitive to pick up from the get go hugely at the expense of of speed of the user once they are familiar with the software.
Although where possible software should be easy to learn for lots of programs the user can expect to use the program lots those ones would improve productivity of the user by focusing on speed of use for the user not discoverability and intuitive. Again there is plenty of intuitive design that is also fast once the user becomes familiar with the system but the discoverability and intuitive aspect is weighted higher then speed of a knowledgeable user.
I do think lots of programs would benefit from being more CLI accessible and allowing users to build scripts that lots of modern propriety programs do not allow you to do, at best they have some script engine running in the program that you can call with more effort then it should.