Live data from Hacker News

Ask HN: Programmers who don't use autocomplete/LSP, how do you do it?

news.ycombinator.com

451–460 of 652 posts

Re: Ask HN: Programmers who don't use autocomplete/LSP, how do you do it?

#451
At some point, python became the language I use the most. And its IDEs… are frankly not really great. They are doing their best, but given the dynamic nature of the language, the experience of using autocomplete and other similar features is often jarring enough, when it doesn't do what you want it to do, to be annoying.

So I mostly stuck with really simple text editors (first likes of notepad++, geany and gedit, later switched to barely customized vim). You learn the language, you learn its standard lib, you learn the libraries you use often, you learn to navigate their docs. You learn the project you are working on, and remember how things are named. I do use a simple autocomplete (ctrl+n in vim), but it's more of a typo preventer (or a typo propagator, depending on how you look at it). It autocompletes every word in open files. Which might be more handy than it sounds, because it will autocomplete stuff not typically being autocompleted in IDEs, like json keys, or file names in the open directory listings, or even outputs in the open terminal session.

As for navigating unfamiliar code bases and "go-to-definition": it's grep. Just search for a substring in the whole project. You will find the definition. You will also find some other interesting stuff, which "normal" IDE tools wouldn't look into. Heck, you'll find interesting comments, interesting name clashes, interesting usecases for a thing you were looking for. And it's a language agnostic skill. You don't need another bespoke IDE, you don't need to configure some weird LSP to navigate unfamiliar code base even in not so familiar language.

Re: Ask HN: Programmers who don't use autocomplete/LSP, how do you do it?

#452
This post just gave me an epiphany. I work with some programmers in their 20s. They are some of the best programmers I've ever met. But they never seem to enter "flow state". In fact, they welcome distractions. And now I think I know why.

When I was coming up, you needed to enter flow state to be a good programmer. Because you had to keep track of all the functions and their signatures, all the different flows and objects, all the different files. And if you got interrupted, you had to reread the code to "load" all that back into your working memory.

But now the tools do that for them. They can click on a function and see the definition. The copilot and autocomplete will keep track of all the minutiae for them. So they don't need flow state to be productive.

This revelation may get me to actually switch from vim to something with all these modern features. Maybe it's finally time for me to try VSCode.

Especially since my kids never let me hit flow state anymore even if I wanted to!

Re: Ask HN: Programmers who don't use autocomplete/LSP, how do you do it?

#453

This thread is certainly eye opening. It reminds me of a post I saw somewhere, maybe on Reddit, where someone was describing their experience working as an intern at an old-school tech shop. All of the developers there were hardcore Vim/Emacs users with 20+ years of experience. The intern was tasked with a large-scale refactoring of some modules which the senior devs estimated would take months of work to complete. A…

As someone who used InteliJ before working in Emacs full time (20+ years of experience), these are just bad developers.

btw, LSP is not the only way to make go to definition work.

Re: Ask HN: Programmers who don't use autocomplete/LSP, how do you do it?

#454

This question reminds me of the first time I met a blind programmer. I asked him how he managed to code, and he replied with something that stayed with me: a good programmer should organize software in such a way that every piece of code has a clear and logical place. The organization should be so intuitive that anyone could build a mental model of the structure and navigate it easily, even without seeing it. It felt…

This is the AWS SDK for Python. Everything is “logically organized” am I suppose to remember every method on every class? The C#, Java, Go and other SDKs are the same (they are all auto generated by the same definition file) It doesn’t matter how well structured a codebase is, once it gets large, you’re not going to remember every method on every class

Of course, but there is a difference between programing using sdk/library/api and some glue, and actually engineering some self standing solution, and everything in between that. I belive blind programer wouldn't fare well in fast churn ci/cd every minute startup, but would be amazing in embedded space with multi year release cycles.

Re: Ask HN: Programmers who don't use autocomplete/LSP, how do you do it?

#456
post #127

Earlier quoted context omitted.

> I work with someone that navigates the tree structure of all our directories every time they need to look for something Counter example: I’m working with LSP dragging codebase where basic code lint takes 45s. My colleague takes a break after each change so that their code navigation starts working again. Inefficient people are inefficient. Not using LSPs isn’t guarantee of efficiency just as using LSP isn’t one. Di…

Needs more RAM? I've been doing work on a Raspberry Pi project, which got large enough that it took forever to get code nav back after an edit. I switched to using VSCODE remote from a beefier machine with 32GB of memory (and an admittedly better processor). Editing response is now under 10 seconds. Sweetness and light! And even the compiles (which still take place on the Pi) run about 6x faster.

Nope, we are working on beefy machines. Problem are circular dependencies that trigger recompilation multiple times and macros sprinkle on top.

We’re refactoring it and get there eventually but without LSP and types (stack is dynamic) there is only so much that can be done.

Re: Ask HN: Programmers who don't use autocomplete/LSP, how do you do it?

#457
For me part of this is a matter of context. The time when I was coding in a single language uninterrupted for months (I think I went a couple of years in one case) are long gone. Once you start context switching between languages, platforms and frameworks, things are very different.

Perhaps the easiest way to explain it might be CSS. If you work with CSS all the time, you retain and recall approaches to solving problems and, more than likely, have developed reusable code to copy-paste-modify. However, those of us who don't touch CSS full time always run into the dumbest of issues (centering and alignment come to mind).

For me modern autocompletion tools are like asking for a capability being loaded into the Matrix. This allows me to switch between just polar opposites as Javascript and Verilog and almost not miss a beat.

Given the right context, I would not fault anyone for relying on these tools. Solving problems computationally isn't about remembering ridiculous syntactical differences between languages but rather about data structures, algorithms, performance and process. If you have a solid background in CS and experience developing software, not remembering the differences between C, C++, Objective-C, Swift, JS, etc., etc., etc. isn't that important.

One caveat: There are domains where you need to have a certain level of expertise without assistive tools. One example of this is mission critical real time systems. Than again, this isn't about remembering syntax and more so about being able to write performant code that is safe.

Re: Ask HN: Programmers who don't use autocomplete/LSP, how do you do it?

#458

The sibling comment about a blind programmer is very worth reading, because it is relevant to what I've observed about other (non-blind) programmers who are highly skilled: they do not need tools to tell them what to do, because they have completely internalised the structure of the program and can think about it as a whole. Incidentally, one of the things I often do when solving a problem --- be it finding a bug or…

> because they have completely internalised the structure of the program and can think about it as a whole

This state is definitely how you can be most productive.

However, I've written multi-millions of lines of code and many different still active applications. It's gotten to the point where if someone asks me if an app has a particular feature, I have to open it to check even if I wrote the whole thing.

Not all projects I work on are one's where I still have the whole thing internalized.

Re: Ask HN: Programmers who don't use autocomplete/LSP, how do you do it?

#459
I use eclipse for most of my Serious Work. With most "clever" features turned off. The kind of code-completion that lets me browse a list of partial matches is very useful (e.g. was it foo.bar() or foo.baz()?). Other than that, I like to do my own thinking. I enjoy writing software, not maintaining software that was generated by some tool.

Do I remember every type and every field? Of course not. But my codebases are structured. There are naming conventions in place. I generally have an intuition of where to find things. And of course there are many ways of searching for stuff...

Re: Ask HN: Programmers who don't use autocomplete/LSP, how do you do it?

#460

I think purism is a slippery slope for experienced people, I too suffer from this to a certaint extent. It's natural to fight change as you get older and it's part of the struggle to change your behavior and adapt to the changing times. Short comment regarding syntax highlighting, unless you have some impairement, I think everyone benefits from this. It's something that helps you recognize patterns much faster and yo…

I don't benefit from syntax highlighting and don't see how anyone does. It's pretty, but doesn't convey useful information that isn't already right there in the syntax itself.

Keywords vs. variables vs. functions <-- these all look the same.
Post reply on HN