I don’t like LSPs. They’re slow and bloated. I’ve been using clangd but I think I’ll stop. It’s slow as molasses. It constantly tries to insert headers into source files that cause compilation issues. There are easier and faster ways to jump to definitions.
I don’t use LSPs with Haskell anymore. I work on multiple projects which use different versions of GHC and the base library which means having multiple LSPs installed for each one. Trying to get eMacs to reliably detect which project is using which version is not something I have been able to figure out. Plus it’s slow and uses way too much memory.
At current job I’m doing C# and man does the ecosystem there really push you to use an IDE. Most of my org uses Rider. I find it just as fascinating that people actually like using tools like it. Too bad it doesn’t have a decent text editor built in.
Which is very strange when you remember that Visual C++ 6 on Windows 95 on whatever hardware from that era was pretty fast.
For me, though not blown the dust off it for emacs is to simply use direnv with nix and direnv will set your bins to the correct lsp server configured correctly for that project via nix and then load it using eglot (I have set eglot purposely to not load by default for as you say it can be slow and not always what one wants to load especially for small edits).
I have to agree with your comment about lsp in general they feel a little over engineered or old tags are nicer and feel less bloaty even if less powerful.