← Back to context

Comment by bitwize

1 year ago

There is some low-key ableism in comments like this. Not all of us have our productivity enhanced by videogame shit happening in our field of vision while we're trying to code, or by software tools attempting to get ahead of us and do or check our work while we're typing. These things are distractions, and the price of distraction, especially for people with certain forms of neurodivergence[0], is very, very steep, nullifying or negating any productivity gains we might otherwise get. So we use our editors with bells and whistles kept to a minimum, and do a bit more up-front thinking in terms of how to structure things and what to name them.

I've worked on very large projects including the entire software stack of a robotics platform and a few enterprise apps using bare Emacs with no autocomplete added. Lack of autocomplete and bulk renaming has never been the productivity bottleneck for me[1]. And I can always tell code by those developers who get a little bit lazy -- or rush through things a little -- and let the IDE do the work, it's marked by things like class and method names that are consistently misspelled everywhere because the programmer typed in the name once (wrongly), and then let autocomplete finish it after typing the first few characters every other time -- never noticing the misspelling.

As for not bothering to write a script -- usually to smooth out my workflow I write a bit of Emacs Lisp to wrap a complicated shell command that does one of the more common tasks such as starting up/shutting down containers for my app, running tests, etc. Emacs Lisp is actually a very powerful environment optimized for this sort of work, even if it's wonky by modern Lisp standards. Then these tasks are just a keystroke away whenever I need them. Great for my ADHD, as I don't have to "stop train of thought, remember shell command(s) to do task, switch to shell, type in command(s), examine output, resume train of thought".

There's even an Emacs command built in for the example you gave: M-x find-grep.

[0] There is actual scientific research backing this up. See: https://arxiv.org/abs/2302.06376

[1] Usually the bottleneck is, I get stuck on some bug and feel the need to bro down and fix it entirely myself, rather than getting a coworker's eyes on it. I find I'm better about this now than I used to be.

Regarding the distraction, IDE can also turn off most of the features that you do not need to let you free from distraction, so you do not have to use Notepad, vi or ed to avoid idstraction.

When you say you work with very large projects, do you mind sharing an estimate of how many LoC (a poor metric, but still), language and contributors your project has? From my experience, when you do not have problem with bulk refactoring, either your project is not big enough, or do not have many change or no so many contributors so that any kind of replacement with review is not a significant issue. In these cases, it's hard to see the benefit of features offer by IDE/LSP. Just like when do you see bubble sort and quick sort have similar performance? When there is only a few items in the list.

And finally, I also an Emacs user, so I ask you to experiment one thing: instead of using find-grep, try consult-ripgrep and see what improvement it offers compare to find-grep. And remember that an IDE can do even better than that.