My main issue with Emacs Lisp at this point (due to my own ignorance, of course) is not knowing about possible existing functions that could solve my problem. I'm used to searching documentation visually, reading over docs where I can see namespaces of classes / functions that handle my desired task.

Is the workflow really to call M-x apropos and hope that whatever I need will be matched by my search query?

Is it more recalling some function after reading others' code?

#emacs

@enocc
The Elisp Info manual has every function categorised by purpose. It is not always obvious, but exploring these categories will eventually lead to the function you need and especially at the beginning it's better than randomly guessing with apropos.
For example, if you want to manipulate some text you might want to read "Buffers" and "Text".
Admittedly the verbosity of the manual can be a hindrance when you just need the quick list of e.g. all buffer functions, but I'd take it over the extreme opposite ^^;
@vanni @enocc Sometimes I just browse a library if I think there might be something useful in there. You can bind find-library to "C-h C-l". The cl-lib and seq packages have a lot of useful things.