2 ms·
> When working on a large codebase or trying to plan out something like this -- you can't really go off of visual imagery. There's no "picture" of all the ways
by Twisol 4y ago
> When working on a large codebase or trying to plan out something like this -- you can't really go off of visual imagery. There's no "picture" of all the ways that various things in a codebase will interact, design decisions, etc.
Oddly, while I totally get the emphasis on "relationships", I definitely orient those relationships spatially. I used to play a text-only game (a MUD) where the world was laid out as a graph of rooms; the graph was only approximately metric. I initially learned to navigate by drawing my own (roughly Cartesian) maps as ASCII art, giving me a kind of global perspective in my mind's eye, but over time I "learned" the topological structure directly and relied on a less graphical (but no less spatial) local perspective.
I tend to "navigate" codebases in much the same way. Different parts of the codebase cluster more or less closely, and I perceive information flows in essentially the same way that I perceived paths through the MUD's world. I learn a codebase in much the same way, although it's much more local from the beginning (codebases tend to be even less Cartesian than the MUD's world is).