I have been typing grep -rn and find . -name since before some of my colleagues could walk, and I was quietly proud of it. That muscle memory is the problem, it turns out. It was the only reason I hadn't switched to ripgrep and fd years ago. The tools have been ready for a while. I was the holdup.
The thing that finally did it was a search across a moderately large monorepo. grep -rn "thingyName" . went off to chew through node_modules, the .git directory, a few hundred megabytes of build artefacts and some minified vendor blobs, and I sat there waiting and feeling like it was 2004. A colleague ran the same search with rg thingyName, got the answer before I'd finished resenting my own command, and rg had skipped all the junk without being told to, because it reads .gitignore by default.
That's the actual selling point, and it's easy to undersell because it sounds like a footnote. Speed is nice. ripgrep is genuinely fast, multithreaded, built on a proper regex engine that won't fall over on a big alternation. But the thing that changed my day-to-day is that it respects .gitignore out of the box. The overwhelming majority of my searches were never meant to include node_modules or target/ or dist/, and for fifteen years I'd just been tolerating the noise, or building up baroque --exclude-dir incantations I had to remember.
fd is the same story for find. The find syntax is a thing I have never once typed correctly on the first attempt. Predicates, the trailing semicolon you have to escape, the -print0 dance when filenames have spaces. fd pattern does the obvious thing: searches the tree, skips ignored files, handles the regex sensibly, and has flags a human can remember.
# old
find . -type f -name '*.go' -not -path './vendor/*'
grep -rn 'TODO' . --include='*.go'
# new
fd -e go
rg TODO -t go
The -t go there is the other small joy: type filters. rg TODO -t go searches only Go files, -t py only Python, and you can list the built-in types if you forget them. No glob gymnastics.
I'll be fair to the old tools, because they earned it. grep and find are everywhere. They are on every box I'll ever ssh into, including the ancient ones, and ripgrep usually is not. So I have not unlearned them, and I never will. When I'm on a strange server at two in the morning, grep -rn is still right there in my fingers and I'm glad of it. But on my own machines, for my own daily work, the better tool won and it wasn't close.
The lesson, such as it is: being good at the old tool is not a reason to keep using it. It's just sunk cost wearing a clever hat. The muscle memory rebuilds faster than you'd think. Took me about a week before rg came out of my fingers without conscious effort, and now reaching for grep -r on my own laptop feels like reaching for a rotary phone.