I'd like to share a somewhat different point of view about using Emacs and leveraging its legendary flexibility that allows so many use cases.
You can read many blog posts about how great Emacs is, showing a ton of small and big interesting tidbits and ideas. Emacs users are sometimes (jokingly) compared to cultists. I'm honestly amazed by how much I could do with Emacs. To misquote the original iPhone commercial:
Need to do something in Emacs?
There's a package for that
Then the other day I've read this comment on Hacker News:
I love Emacs and Orgmode, (...). And I am convinced that VS Code - despite doing
so many things right - does not have the versatility and the capability of Emacs,
no matter how many packages are written for it because it is not intended to be
configured by it‘s (sic) end users in a way where they read the code of the packages,
learn from them, change them according to their needs and automate all kinds of
processes / workflows with it.
and then the important part:
Emacs is an application framework for the user with a hacker mindset. And Emacs Lisp
is the underlying scripting languages that invites you to play around with your tool.
I'm not a longtime Emacs user1 but by reading that comment, I've suddenly realized one important thing:
If you are a power user of Emacs then you're trapped inside Emacs
And it's subtle. It's not the same "cage" as using software you may not like but you're forced to use because everybody and your company use it. To make a parallel I would define the situation in these terms:
Using Emacs is like an addicting drug. You start with the good parts. You move some
of your workflows to Emacs. You find a great advantage, so you're encouraged to move
more and more workflows to Emacs.
But moving stuff to Emacs is complex, it's not for free. You have to be understand what's happening, often pulling a package is not enough, you need to learn how to configure it. Sometimes you need some elbow grease using eLisp, a powerful programming language (only seemingly easy) but still a damn programming language. So you need to invest some of your your time. Anything will require effort and documentation2.
On the other hand, I hear that using VS Code (to pick the application mentioned in that comment) covers most of the use cases very easily without effort from the user. I can have the same exact working environment on my remote server by simply mirroring my Emacs configuration. Also with VIM you can do that, but can you do that with a GUI tool?
After a while you will reach a point in which you will start asking yourself:
Why do I need to use this tool, how can I do this from Emacs?
and you look for a package to do that.
Soon you'll find yourself unsatisfied by not using Emacs because all the UX candies become a distraction. And in that moment you'll panic and realize that you are an addict and will pray every ungodly deity in the world for Emacs to never die because it would a huge pain in the ass to re-learn many different and less flexible tools to accomplish what you do now.
Then if one day you want to do something, just do that something because it's not the right time to learn a new package and its shortcuts. But you cannot do other than installing another package, scroll the documentation and curse yourself for being trapped inside Emacs.
In the Emacs timescale, longtime is probably +10 years
As with any other code you write, it will surely be forgot, so you'd better comment anything you may forget in months, if not weeks.