Why you should avoid clicking buttons

GUI buttons are a nice convenience at beginner skill levels. As your skill level increases, their utiliity will quickly plateau. If you plan to spend a considerable amount of time programming, there are good reasons to learn how to operate your development setup without clicking a lot of GUI buttons.

Let’s take the “Run Code” button in VSCode as an example:

The buttons are often limited wrappers around more powerful tools

The “Run Code” button in VSCode is basically just a wrapper that opens a shell and runs:

path-to-your-python-interpreter path-to-the-current-python-file.py

You don’t know what VSCode is doing under the hood, and finding out is soemtimes difficult.

For example, when you hit Run Code, which python interpreter does VSCode use? How would you go about finding out?

The machinery behind other buttons is even more obscure.

It makes communication around troubleshooting hard.

You can very easily copy-paste the shell commands you ran and send them to me, to ChatGPT, post them on StackOverflow, etc. It’s much harder to communicate via screenshots. (Especially with knowledgeable people who usually avoid the buttons).

Buttons make automation hard.

Yes, CLI commands can be kind of tedious. The good news is that they are very easy to automate. You can write aliases, or write shell scripts that string together common sequences of commands. If you do this, your automation is portable – it does not depend on any particular editor. The limit for the complexity of automation you can implement this way is high. You’re bounded by what you can program, not by what the buttons offer.

By contrast, you can automate clicking buttons in VSCode by writing an extension, but in some instances this is harder than writing a shell script, and your solution is tied to a specific editor.