4 ms·
To me, programming is a mental task that requires overview and easy text manipulation. Most IDEs get in the way of me effectively navigating the code as it was
by arghwhat 5y ago
To me, programming is a mental task that requires overview and easy text manipulation.
Most IDEs get in the way of me effectively navigating the code as it was originally organized, while still maintaing my overview. "Big" IDEs that clearly sacrifice text area for widgets, or shift text around to pop up distracting inline "help" are the worst offenders. I'm looking at you, Visual Studio.
Common IDE tools like ho-to-definition usually leads to poor understanding of the code structure (and in turn doesn't train for good structures). My best anology being navigating by gut vs. being told where to go by an app - you never learn the route and scenery if you're always busy following the route instructions. And if you never start navigating by gut, you never learn to find your way in general.
I always get frustrated by how slow go-to-definition users are compared to those that just... Open the file in the tree that would logically contain that part.
This is just one example of course - another is that IDE are usually not very versatile when writing in many languages. Also, a good text editor can have IDE-like features in a non-intrusive way, but the difference between "IDE" and "enhanced text editor" would to me be the intrusiveness.
- Guid_NewGuid 5y agoThanks for your answer, out of interest what languages are you primarily working with and what sort of team and codebase size? It sounds like being forced to consider navigability would offset the tendency for codebase 'melt' in larger IDE assisted projects. Also one area I lean heavily on an IDE is I can switch codebases up to 4 times in a day between JS and Java, so I'm not going to remember structure most of the time and being able to have all kinds of crutches helps me maintain velocity. Do you find your sense of navigation when swapping is enhanced because you have a deeper understanding of the structure from memory? I'd say VS Code kind of straddles that middle ground, like an enhanced text editor++. But then full IntelliJ is where I feel most at home so obviously we have different preferences and that's fine. I just worry I'm missing out and heavily dependent on IDEs.
- arghwhat 5y agoThrough a standard work week I code in Go, C, C++, JS (React), Java and Groovy. Odd jobs add Rust, C#, Kotlin (Android) and Swift (iOS). There are several backend-heavy Go services, React web applications, kernel and user-space driver work, browser work, Jenkins plugins and pipelines, Gradle plugins. It's very varied based on the specific customer we develop for. Privately I mostly code C and Rust for open source stuff. Not that I mind Go, but I only find it to be the proper tool for network services, not local code. When you swap around this much, bad code structure goes from something you write on a tech debt ticket and brute force your way around to being absolute top priority, blocking any review immediately. Of course, memory enhances navigation speed, but the thing is that a painfully obvious structure requires no real memory of it to understand. Likewise, maybe one can cope with switching between 2 IDEs, but it doesn't scale. VSCode is decent, but it's still slow and clunky in my opinion. I'm more of a neovim and sublime text type for speed. An open sourced sublime text thing would be awesome in my opinion. (The sheer number of projects I work with is an outlier due to our company structure, but I believe the experience is universal)
- babypuncher 5y agoI get the sentiment that having features like "go to definition/implementation" can encourage poor code structure, but that is still ultimately a self-discipline issue more than a UI issue. There are tools for enforcing good code structure that work with many of these fancy IDEs (Visual Studio included). Just hitting F12 over an identifier to go to it's declaration will always be faster than manually navigating to it, no matter how fast you are with Vim, and I find these features particularly indispensable when learning someone else's codebase.
- arghwhat 5y ago> Just hitting F12 over an identifier to go to it's declaration will always be faster Nope - even if you need only one hit, you are now mildly disoriented and need to re-establish mental context in order to correctly interpret what you are reading[0]. Often, you need multiple hits to reach what you needed, in which case you are completely lost outside the single method body you're starting at. This cost is hidden, and not there during active navigation. Granted, the action is fast, but I have yet to see it make a productivity improvement. --- 0: an exception would be when you only needed a single methods implementation details, and it's nothing but primitive code that makes use of nothing else and requires no context. In this special case, being disoriented is inconsequential. However, you are usually looking for more than just what F12 throws at you.
- babypuncher 5y agoMultiple hits? Maybe in a dynamically typed language, but in a statically typed language a good IDE will know exactly what definition to go to 99% of the time. I mostly only have to pause and look at options when using the feature on an interface with more than one implementation.
- lolinder 5y ago> I always get frustrated by how slow go-to-definition users are compared to those that just... Open the file in the tree that would logically contain that part. Maybe you're not frustrated with go-to-definition users so much as people who are inexperienced with their tool. I'm having a hard time imagining navigating a file tree being faster than control clicking on a function call or opening "find anywhere" and typing the name of a symbol.
- arghwhat 5y agoI am only commenting on senior developer usage. The important aspect to consider is that F12 does not usually answer your immediate question, but just dumps you somewhere closer to what you are looking for in a disoriented state. You now need to figure out what that place is and start looking for the actual thing you needed there. When I click twice in my sidebar to open a folder and file, I am already fully aware of what is going to show up - e.g. "implementation XYZ of interface ABC". There are some cases where F12 is faster - specifically when you needed to just read a few primitive lines of the method body you opened, which requires no additional context. That's rarely the case though.
- alpaca128 5y ago> the difference between "IDE" and "enhanced text editor" would to me be the intrusiveness. I feel exactly the same. I hate it when IDEs pop up some autocompletion suggestions that cover up exactly the part of the screen I was reading. Or reformat the code while I'm still typing, making the cursor jump around like crazy. Automating such features means they're counterproductive in at least 5-10% of cases. I prefer having nothing automated but everything accessible in an efficient way. And that's why I don't care when people say their favorite IDE has a Vim plugin. That plugin won't remove the distractions, fix the tab behaviour or clean up the UI. The controls are only a fraction of what makes Vim the editor it is.