I don’t really like supportive tooling for writing code. I work in vim and prefer bazel (with occasional support from a language server client for things like large scale renames).

I’m a reasonable person I swear to god. I know that’s just a preference, my coworkers who prefer IDEs or whatever are equally valid, and I try to help them where I can. If they say they can’t use generated files because they don’t autocomplete with their IDE, or if they want 4 repos instead of 1 because they can’t have multiple languages at once, I’m cool with that, really, I try to be accommodating, I try to help where I can.

that said, my coworker who writes his code with chatgpt is just not working out for me. I mean for one thing the code is just a mess: meaningless parameters passed everywhere, error checks that can never trigger because the implementations of the interfaces don’t throw the errors that are being checked.

but the main problem is that it’s not *designed* at all. every single one of these things is like Alton Brown used to say about unitaskers. this code passes the (generated) unit tests and that’s it. trying to use it for anything that it wasn’t explicitly and specifically designed and tested for is like trying to use a pork puller bear claw when what you want is a fork.

it’s not extensible, it’s not maintainable, if you want to add a parameter or tweak an implementation detail the only reasonable call is to rewrite it from scratch.

And what’s so frustrating about that is that it LOOKS fine at a glance. It even looks fine in code review, one chunk at a time!

I’m three hours into trying to edit in a ListFoo call to a client which already does GetFoo, CreateFoo, and DeleteFoo. all it does is delegate to a different, existing client which has all the CRUDL methods. Even so, the code to do this is seven hundred lines long. the tests are over a thousand lines.

it should have been a five minute task but nothing that I would need to be able to do this has been done. there’s no “convertFooToBar()”, there’s three slightly different implementations for the three existing methods - each reasonable but none possible to trivially consolidate, because the tests fail if you use the version in Get for the Create call. and then you have to figure out why, and there’s no *reason* it’s that way, it just *is*. there’s no *why*, just *how*.

I could leave it, I could write a fourth convertFooToBar(), but - come on, really? no I can’t. everyone knows that will be a huge problem someday even if we don’t know why or when. So now I’m 3.25 hours in because I needed a coffee break to bitch about this and it’s gonna take another 2. I coulda redone the whole thing from scratch in 5 and I feel like a chump for not noticing that an hour or two ago.

@gnat so, your colleague is getting "more" work done and your work is slowing down ... 🙁 That's not going to play well, at all. #condolences
@deborahh ah, thanks for the concern! You’re very kind. It’s not gonna cause me a problem, though. I’m a senior swe, no one’s holding a stopwatch to my work. And I got this done yesterday; a one-day problem.

@gnat I coach software folks, though, and suddenly, a year ago, everyone started worrying about their "performance".
I don't think it's unrelated 😢

("Performance" so often is a euphemism for random personnel reduction).