Not just having keyboard commands, but using standard ways to make them discoverable, such as by tooltips, menu item annotations, and underlined characters in labels.
Another aspect in today’s UIs is that they often introduce latency in operations (due to network communication, among other things) while not buffering keystrokes accordingly, which makes it borderline impossible to press memorized sequences of keyboard shortcuts in quick succession, because you always have to double-check that the application is in the right state to receive the next keyboard shortcut. That goes against developing muscle memory for frequently performed operations, and forces a conscious back and forth and constant ascertaining that the command was correctly received by the application, instead of being able to blindly trust it and thereby reduce cognitive overhead.