I’ll just drop this here for future easy linking convenience…
“If you’re writing the same boilerplate every day like some industrial-age cog monkey, automate it yourself. Write a library. Invent a macro. Reclaim some dignity.”
Well, I’ve done that… partially. However, since I’m not a top-1‰ superstar rock-dev, my solutions took several attempts, still make a lot of assumptions, and are generally kinda bad.
Until I’ve reached an actually good boilerplate automator, Copilot has its place.
The thing is, your attempts at eliminating boilerplate can be pretty bad and take pretty long before they’re worse than writing out the boilerplate in full.
Boilerplate code is by itself a problem. If it’s just scaffolding, i.e. you’re not duplicating logic, then it still makes code harder to read and annoying to maintain.
If you are duplicating logic, then it’s a maintenance nightmare. You fix a bug in one version of it, now you gotta update 14 other versions which the LLM dutifully generated with the same bug.
Or worse, it wasn’t dutiful (much like a human typically isn’t), so now you’ve got different bugs in different versions of it, as well as different fixes over time, and you quickly lose track which version is the good one.
I hear that. I don’t judge anyone using copilot to cover the gap between perfect and good enough. I use it that way, as well.
A coder passionately loving Copilot strikes me as a bit like a sailor passionately loving life boats.
It’s perfectly rational, and… it implies that they routinely deal with some shit that probably, ideally, ought to get fixed.
I’m projecting my own experience a lot here. When I’m working with code I’m really happy with, I find copilot getting in my way more than helping. When I’m working with code that’s newer and messier, I find copilot pretty handy.
I’ll just drop this here for future easy linking convenience…
Well, I’ve done that… partially. However, since I’m not a top-1‰ superstar rock-dev, my solutions took several attempts, still make a lot of assumptions, and are generally kinda bad.
Until I’ve reached an actually good boilerplate automator, Copilot has its place.
The thing is, your attempts at eliminating boilerplate can be pretty bad and take pretty long before they’re worse than writing out the boilerplate in full.
Boilerplate code is by itself a problem. If it’s just scaffolding, i.e. you’re not duplicating logic, then it still makes code harder to read and annoying to maintain.
If you are duplicating logic, then it’s a maintenance nightmare. You fix a bug in one version of it, now you gotta update 14 other versions which the LLM dutifully generated with the same bug.
Or worse, it wasn’t dutiful (much like a human typically isn’t), so now you’ve got different bugs in different versions of it, as well as different fixes over time, and you quickly lose track which version is the good one.
I hear that. I don’t judge anyone using copilot to cover the gap between perfect and good enough. I use it that way, as well.
A coder passionately loving Copilot strikes me as a bit like a sailor passionately loving life boats.
It’s perfectly rational, and… it implies that they routinely deal with some shit that probably, ideally, ought to get fixed.
I’m projecting my own experience a lot here. When I’m working with code I’m really happy with, I find copilot getting in my way more than helping. When I’m working with code that’s newer and messier, I find copilot pretty handy.