Live data from Hacker News

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

news.ycombinator.com

531–540 of 652 posts

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

#531
> and recently copilot

I, for one, have never even used ChatGPT. ¯ \ _ ( ツ ) _ / ¯

I'm a software engineer, pretty highly regarded as very skilled by everyone around me, almost entirely self-taught (programming since age 7), and have worked at 2 household-name companies (and now a spin-off of a third). The only computer science class I've ever taken was a PhD-level introduction to machine learning, in the mid ’90.

I've never seen any task _where the details matter_ that AI appeared to be any good at. For example, I've seen a coworker trying to demo for me how quickly an AI coding assistant could fix a bug in a parser's state machine… but the AI made a mistake, which I spotted immediately.

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

#532
Yeah. I don't use autocomplete, LSPs, or copilot. You just remember as best you can, choose better variable/type names that aren't a full sentence, etc. Most of my time isn't spent typing.

I do use and really like go-to-definition, though. LSP is one way of doing that (probably the right way) but historically we used tools like "ctags" for this (and I still do, just because I've already got that workflow set up).

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

#533
For most of my projects, the key value I can add is in understanding business needs, translating them to technical requirements, and ensuring sensible choices of data structures, APIs, libraries, etc. Rarely is code generation the rate limiting step.

I do find autocomplete and language servers useful for avoiding typos, but typically there is already some form of compilation, type checking, or linting to ensure valid code.

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

#535
I have to use VS for work and Intellisense can be so annoying. Too slow (I've already completed the word), or unhelpful. Example: Accessing elements in a 3d vector, having already typed "var." it pops up with the options, x, y, or z, every time. It's not saving me any keypresses, especially after I've already accessed some elements so I know the members of the struct. Also, how about matching to variables or types from the local scope outwards rather than offer something in a system header not present in any preceding code.

So I have it disabled and just search for things (another thing VS can go complete blank on), keeping the relevant file open in another window for reference, which means I also get to read all the comments in the code before using it.

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

#536

The shell is my development environment. I open up new terminals and shells willy nilly. I find cli tools like find/fd/grep/rg are useful because I rarely need to find only the definition of a function, but rather other call sites too, to find out how it is being used. I think being surrounded by the code and being able to slice and dice it leads to a certain kind of familiarity that a tool that takes you right there…

> The shell is my development environment

*Hell

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

#537
post #200

When you have a good mental model of the code base you're working on (and the libraries you use), you don't really need a lot of IDE features, and IDE features can sometimes hamper the formation of such a model. Let me explain: Twenty years ago, my IDE was two terminal windows running VI, vertically tiled. On the left, I open header files, and on the right, source files (I was a C++ programmer). When I wanted to look…

I’m not a developer but someone who is curious about development, can you explain what it means to have a good “mental model of the code”. Does that mean where you understand all code and what it does?

That's at the deepest level. I'd say you can stop one level up: knowing which function serve which purpose, which functions call which functions, which objects maintain which state etc. If you can trace any input/request from the event handler all the way to the database and back, then that's a very good start.

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

#538
post #215

In one of my earlier jobs a few years back, we were training deep learning models on VMs with GPUs, back then the tooling was not as extensive (vs-code did not have the remote ssh then) as it is is now. So, we would use SSH into the VM and do our work. This also involved a lot of debugging of code through vim since it's quicker to make in-place edits and re-run experiments, this taught me a lot on effective debugging…

I'm interested in any tips you figured out for debugging in that environment. I find a GUI debugger to be an essential tool for this kind of work. It's the thing that keeps me using vscode remote vs just vim on the server (which I'd prefer if all I needed was editing).

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

#539
post #96

Not sure about others who commented in this post, but all guys I met in real life who refuse to use advanced features of an IDE like autocomplete, refactoring ... are either: 1) have never work in a truly large scale projects (and usually familiar only with weak type languages - which IDE cannot help much so they cannot grow over a certain limit - chicken and egg?). 2) do not know what are the differences between a r…

There is some low-key ableism in comments like this. Not all of us have our productivity enhanced by videogame shit happening in our field of vision while we're trying to code, or by software tools attempting to get ahead of us and do or check our work while we're typing. These things are distractions, and the price of distraction, especially for people with certain forms of neurodivergence[0], is very, very steep, nullifying or negating any productivity gains we might otherwise get. So we use our editors with bells and whistles kept to a minimum, and do a bit more up-front thinking in terms of how to structure things and what to name them.

I've worked on very large projects including the entire software stack of a robotics platform and a few enterprise apps using bare Emacs with no autocomplete added. Lack of autocomplete and bulk renaming has never been the productivity bottleneck for me[1]. And I can always tell code by those developers who get a little bit lazy -- or rush through things a little -- and let the IDE do the work, it's marked by things like class and method names that are consistently misspelled everywhere because the programmer typed in the name once (wrongly), and then let autocomplete finish it after typing the first few characters every other time -- never noticing the misspelling.

As for not bothering to write a script -- usually to smooth out my workflow I write a bit of Emacs Lisp to wrap a complicated shell command that does one of the more common tasks such as starting up/shutting down containers for my app, running tests, etc. Emacs Lisp is actually a very powerful environment optimized for this sort of work, even if it's wonky by modern Lisp standards. Then these tasks are just a keystroke away whenever I need them. Great for my ADHD, as I don't have to "stop train of thought, remember shell command(s) to do task, switch to shell, type in command(s), examine output, resume train of thought".

There's even an Emacs command built in for the example you gave: M-x find-grep.

[0] There is actual scientific research backing this up. See: https://arxiv.org/abs/2302.06376

[1] Usually the bottleneck is, I get stuck on some bug and feel the need to bro down and fix it entirely myself, rather than getting a coworker's eyes on it. I find I'm better about this now than I used to be.

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

#540

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…

I greatly enjoyed this comment of yours daltonpinto. Thank you. I do not rejoice with code bases where every file has no logic or code in it but there are hundreds of methods and files with everything spread out. I have no idea how those projects fit together because the actual logic is spread out. For my personal side project hobby work it's all in one file.

The bane of "functional. No such thing as objects or classes, just a bunch of shotgun spread state fragments.

Cargo cult runneth strong on web.

Post reply on HN