The Problem With IDE’s is Not the Input But the Output
It is not a question of how fast you can type or do something, but rather how easily you can discover and learn functionality.
I know and adding a more command based interaction mode is a welcome improvement.
Although as I like to point out to the Windows and Linux crowd, basically ALL macOS applications have this capability. It is a standard OS feature. Just hold down Shift+Cmd+? and you get the help system for the menu bar which lets you do completions on the menu entries.
Essentially this lets you act as if there are CLI commands in your GUI program.
But this does not solve the key problem with complex GUI applications. Their feedback system is GUI based. You cannot show the full operations and interactions with a GUI program (including and IDE) in the same way as you can show the interactions with say a REPL environment, command line tool or configuring a text file.
That is why my stance is that GUIs are good tools as long as they are not too complex. Advance code editors usually managed to stay that way.
However as soon as a GUI becomes complex, it is not obvious how you navigate it, and learning how to do it, cannot be done by just looking at a blog showing a sequence of commands with corresponding outputs. You need to see a video or screenshot.
That is why I prefer having collections of simpler GUI applications and use them in combinations with command line interfaces for more complex operations. How I use Git is a good example of this. The simple operations I do 90% of the time, I typically perform in a GUI, unless the CLI is more accessible or faster. However I find that reviewing files to commit and writing the commit message is nicer in a GUI such as Tower.
But for more complex operations I like that I can use the CLI, because googling how to do something with the command line is much quicker than googling how to do something in a GUI.
My issue with JetBrains is that it typically is late to support the languages I have typically been using and it has a plugin system which is far too much work for me to learn. I can much more quickly add custom plugins in something like TextMate. It just requires writing a simple script that read and writes from STDIN, STDOUT or environment variables.
Power and Simplicity Are Mutually Exclusive
Although IDEs can have hot-keys, or CLI like interfaces, the problem with powerful IDEs is that if you make them powerful then they will typically not be simple. You cannot offer a lot of functionality without making the user interface more complex. Thus as you add more features, you risk making more common features harder to locate and use. Why? If a program has say only 3 buttons, then finding one particular button is trivial.
But if you add 100 extra buttons, now the task of locating a particular button has grown exponentially more difficult. If you code a lot every day, then the effort of learning a complex IDE will be worth it. It can enhance your productivity.
But if you switch languages with some frequency and you don’t code with the same intensity, it can become difficult to remember how to operate the IDE properly from time to time. I notice this problem grows with age. I don’t have the same accurate memory as before as I got older. While I have used Xcode a lot in the past. I find it downright scary to open it up against today. I know there are so many details about how to use it which I cannot remember clearly anymore.
A more text and command oriented interface is easier to deal with, as I can simply write an story say here on Medium with the most common commands, examples of interactions etc. Because it is all text based I can quickly search this for what I am looking.
With some GUI tools I have actually had to make video recordings to more quickly recall how I did stuff. In particular dealing with code signing, and SSL certificates when doing iOS development is not something I cheerish doing.