Let’s Not Argue About Tools

I just ran across1 a thread in which a person asserts that GitHub Copilot is a bad tool precisely because it makes it easy to write lots of repetitive code. Their argument amounts to the claim that repetitive, boilerplate code is bad, and if you find yourself writing enough of it that Copilot seems like a good idea then You’re Doing It Wrong.

Read more: Let’s Not Argue About Tools

This is a thing I love2 about public discourse: not only do people tell other folks how to live their lives, but they manage to do it while also denigrating all the ways that are not theirs. This is not even confined to short-form social media; it’s even a staple of the lifestyle sections of newspapers.3 This drives “engagement” because insulting people gets them angry and defensive, and people who are feeling strongly about stuff (like, protecting their identities or their feelings of self-worth) are pretty motivated to take some kind of action.

If I pause to reflect, however, I am not able to come up with a single instance of having changed a person’s mind about something by telling that person that they’re an idiot and they’re doing it wrong. (That may, of course, be because I did it wrong.)

You know another tool that some people say you shouldn’t use? An adjustable wrench. Oh, there are reasons, and there are many times when another tool will serve you better, but people still have them and use them. Does that make them bad people?

Oh, yeah, and the argument that Copilot makes it easy to write lots of bad code? That’s just elitist gatekeeping. That’s just saying that you had to work really hard and think really hard and learn a lot of stuff in order to write elegant code, and nobody who didn’t do that should have the ability to bang out a steaming pile of spaghetti that accomplishes the same end.

Copilot is still problematic at best. It’s been trained on a bunch of code that was released under licenses that prohibit its use in that way, and because it is treating programming code as if it were language and not actually instructions, it can make some rookie mistakes just because the training code base also includes rookie mistakes. So, there are cautions and, as I wrote before, it’s really incumbent on the person using the AI tool to understand the limitations of the AI tool.

But let’s stop clutching our pearls and gasping, and let’s also stop calling each other names because of our choice of tools.

  1. By “ran across,” of course I mean that a friend boosted someone’s bumper sticker opinion and I allowed myself to read the whole sniping series. So that’s on me. ↩︎
  2. I specifically do not love this. ↩︎
  3. …and magazines and television and books and… ↩︎

Published by pirateguillermo

I play the bagpipes. I program computers. I support my family in their various endeavors, and I enjoy my wonderful life.

2 thoughts on “Let’s Not Argue About Tools

  1. I dunno. I think it usually is a bad idea to write lots of repetitive code. And I suppose that copilot does enable that kind of thing if that’s how you use it. I do love having copilot available, though. “write me a regex that does this” or “write me a bash script that does that” or even “write the rails migration line that adds a column like such and such” has saved me hours of looking crap up that is more about semantics than design. I guess that’s the bottom line for me – if you’re using copilot to design code then maybe that’s a bad rabbit hole (right now). But it’s pretty great for spewing some correct syntax.

    1. Sure, it’s bad to write repetitive code. But writing the boilerplate system calls and exception handling for opening a file to read its contents, or to write to a file, or any of the other things that we have to do in maybe one or two places per project but which are easy to forget some corner of, that’s where it shines. I think you and I agree about this. As I wrote in the post, the absolutist, elitist gatekeeping attitude is just plain problematic.

Leave a ReplyCancel reply