Remix.run Logo
shakna 5 days ago

> bikeshedding function names

... Function names compose much of the API.

The API is the structure of the codebase.

This isn't some triviality you can throw aside as unimportant, it is the shape that the code has today, and limits and controls what it will have tomorrow.

It's how you make things intuitive, and it is equally how you ensure people follow a correct flow and don't trap themselves into a security bug.

AirMax98 5 days ago | parent | next [-]

I really disagree with this too, especially given the article's next line:

> ...You’ll be forever tweaking individual lines of code, asking for a .reduce instead of a .map.filter, bikeshedding function names, and so on. At the same time, you’ll miss the opportunity to guide the AI away from architectural dead ends.

I think a good review will often do both, and understand that code happens at the line level and also the structural level. It implies a philosophy of coding that I have seen be incredibly destructive firsthand — committing a bunch of shit that no one on a team understands and no one knows how to reuse.

tossandthrow 5 days ago | parent [-]

> for a .reduce instead of a .map.filter...

This is distinctly not the api, but an implementation detail.

Personally, i can ask colleagues to change function names, rework hierarchy, etc. But leave this exact example be, as it does not have any material difference difference - regardless of my personal preference.

jffhn 5 days ago | parent | prev | next [-]

Agreed. A program is made of names, these names are of the utmost importance. For understanding, and also for searchability.

I do a lot of code reviews, and one of the main things I ask for, after bug fixes, is renaming things for readers to understand at first read unambiguously and to match the various conventions we use throughout the codebase.

Ex: new dev wrote "updateFoo()" for a method converting a domain thing "foo" from its type in layer "a" to its type in layer "b", so I asked him to use "convertFoo_aToB()" instead.

000ooo000 5 days ago | parent | prev | next [-]

This blog gets posted often but the content is usually lousy. Lots of specious assertions about the nature of software development that really give off a "I totally have this figured out" vibe. I can't help but feel that anyone who feels so about this young industry that changes so rapidly and is so badly performed at so many places, is yet to summit Mt. Stupid.

glimshe 5 days ago | parent | prev [-]

I think I'd actually have a use for an AI that could receive my empty public APIs (such as a C++ header file) as an input and produce a first rough implementation. Maybe this exists already, I don't know because I haven't done any serious vibe coding.

jeroenhd 5 days ago | parent | next [-]

As long as you're reinventing the wheel (implementing some common pattern because you don't want to pull in an entire dependency), that kind of AI generation works quite well. Especially if you also have the AI generate tests for its code, so you can force it to iterate on itself while it gets things wrong the first couple of tries. It's slow and resource intensive, but it'll generate something mostly complete most of the time.

I'm not sure if you're saving any time there, though. Perhaps if you give an LLM task before ending the work day so it can churn away for a while unattended, it may generate a decent implementation. There's a good chance you need to throw out the work too; you can't rely on it, but it can be a nice bonus if you're lucky.

I've found that this only works on expensive models with large context windows and limited API calls, though. The amount of energy wasted on shit code that gets reverted must be tremendous.

I hope the AI industry makes true on its promise that it'll solve the whole inefficiency problem because the way things are going now, the industry isn't sustainable.

stuaxo 5 days ago | parent | prev | next [-]

Yeah it can, though rough is definitely the word.

And sometimes the LLM just won't go in the direction you want, but that's OK - you just have to go write those bits of code.

It can be suprising where it works and where it doesn't.

Just go with those first suggestions though and the code will end up rough.

simonw 5 days ago | parent | prev | next [-]

The leading models have been very good at this for over a year now. Try copying one your existing C++ header files into GPT-5 or Claude 4 or Gemini 2.5 as an experiment and see how they do.

shakna 5 days ago | parent [-]

They certainly invent new functions whenever I try.

IanCal 5 days ago | parent | prev [-]

You can do this already, the most useful things to help with this are either writing tests or having it write tests and telling it how to compile and see error messages so you can let it loop.