I got by using vim (or sometimes emacs) and grep for twenty years, but it stopped working when I encountered large codebases written by people who have abandoned (or never learned/embraced) modularity. The current fashion seems to be splattering related definitions and (tiny bits of) code across hundreds of files all over a huge monorepo, with no rhyme or reason or comments. If you can hold such a huge pile of loosely-connected garbage in your head right from the start then great, but I think the common advice should still be to let your tools do the cross-referencing and indexing.