always be prompting

I've used ChatGPT/Copilot a lot in the last few months. I still haven't arrived on a really clean workflow, but my usual process looks something like a one of/a combination of the following:

  • Using ChatGPT to format some boring XML/JSON/Whatever that is approximately zero-thought. E.g., create me a Grafana dashboard that has these metrics. I'll make the necessary tweaks myself.
  • Using Copilot to fill out functions to accomplish something. E.g. "make a request to these two databases, compare the response for each". This usually gets me 80-90% of the way there, and is typically correct, but I'll make a few small changes.
  • Using ChatGPT to create something I don't know much about. E.g., "I don't know Ruby, please correct this Python script to generate a Ruby script using the templated variables I've provided."

In almost all the cases, I'm providing the design of what I want, ChatGPT/Copilot generates an adequate response, I make edits to get what I want, cycle starts over.

I feel like I should be really comfortable with writing out some subprocess.run() function but I don't do it that often. I may not have it fully committed to memory in the way I would with something like requests.post() . What if I'm actually not able to do this without the tool? The tool is certainly an accelerant. I can get a lot more done when I'm merely doing design and review of the generated outputs. Is this, as an engineer, fine?

One might observe that the big tech billionaires of the 90s were tended to have something in common - they had access to computers growing up in the 70s (rare). During their youth, the computer was complicated but not so much that a bright young man with a lot of free time couldn't get a solid understanding of what was completely happening. Because they understood the hardware and software, they were able to write code that could solve business problems. Decades later, I think that the complexity of modern software and computers has become so great that there's only a few people on Earth who actually understand what's going on from top to bottom.

This is fine, because people specialize, software has abstractions, and so on. It's fine to not understand what's going on at the hardware level concretely, because I'm writing business logic. Who cares, right? My code is still going to work.

Still, I can't help but feel it's like the sun rising after a late-night party. You see the sky getting lighter and realize that the magic is over. The engineer writing code and wowing others with his cleverness has a few more years, but eventually it'll be a commodity job. Flipping burgers at a keyboard. I had fun.