Myths programmers believe
I&#x27;ve worked on some really large cross-cutting codebases, probably the largest of which are these two:<p>- an integrated aircraft and radar simulator that was originally written in the 80s and has code from multiple languages, added and morphed over time by many generations of different staff, and still in heavy use at least as late as when I worked on it in the 00s.<p>- a suite of different search engine services for a large (Alexa top 400) ecommerce product search engine and online store.<p>My experience after working on these huge, legacy, complex codebases is that if you need a &quot;go to definition&quot; feature in your editor or IDE, it&#x27;s a symptom of a notably bad codebase (not just regular bad with all the usual suboptimalities that come up in corporate software, but notably worse than that).<p>It&#x27;s particularly bad when you have to use it to chase down an eventual base implementation in a hopelessly convoluted stack of inheritance.<p>The pieces of software I&#x27;ve seen have the longest shelf life have been written with exacting and unforgiving focus on simplicity and separating units of code, in such a way that the details of an implementation are never far.<p>It&#x27;s sort of like the code&#x27;s design is a conceptual KD-tree, so conditioned on being in a sub-section of the code, you know for sure anything you depend on is nearby and not far away, and <i>certainly</i> not hidden in a stack of inheritance.<p>This is not an argument against &quot;go to definition&quot; capabilities in editing tools. I just take a little issue when the author says,<p>&gt; &quot;Text editors can’t and don’t have features like autocomplete, go to definition, …&quot;<p>&gt; &quot;This usually shows up in the same discussions where Emacs is a terminal program. It also usually comes up when someone says an IDE is needed because of the features above. I don’t program without them, I think it’d be crazy to.&quot;<p>I use Emacs and I never want autocomplete or &quot;go to definition&quot; features. I hate them. In the cases when I unfortunately <i>need them</i> it&#x27;s a symptom of exceptionally bad software, not an endorsement that these features are themselves good things generally, except in so far as they offer help in exceptionally bad codebases.<p>Insecticide is not a good thing generally. It&#x27;s a good thing in bad cases when there&#x27;s an insect problem, but if you find yourself in that situation really often, and you need insecticide so often that it becomes as familiar to you as your morning coffee, then it&#x27;s a sign of a much bigger problem.