How ChatGPT wrote it
Unleashing the Power of LLM Programming Assistants: The Good, the Not-So-Good, and Everything in Between
Introduction:
Picture this: you’re soaring through the coding skies, navigating a complex project with precision and expertise. But suddenly, turbulence strikes! Making creative decisions and focusing on the big picture becomes an uphill battle. Fear not, my fellow aviators of the coding realm, for there’s a copilot in town — GitHub Copilot, the LLM programming assistant that will help you navigate the skies of software development. In this article, we’ll explore the pros and cons of utilizing Copilot’s assistance, with tales of how it transformed the way developers fly through their code.
The Challenge: From Chaos to Clarity
There I was, tangled in a web of code, desperately trying to stay on course. The project was growing at an alarming rate, and with each new implementation, my focus on the big picture diminished. It was like flying blind in a storm, unable to make creative and architectural decisions that would steer the project towards success. That’s when I decided to call upon my trusted coding copilot, GitHub Copilot.
As soon as Copilot joined my team, it was as if a gust of fresh air filled the cockpit. No longer burdened by the mundane, repetitive tasks, I could finally soar above the clouds, surveying the coding landscape with a newfound clarity. Copilot took the reins of the implementation details, rapidly adapting to the evolving needs of the project. With its assistance, I could finally dedicate my energy to making those crucial creative and architectural decisions that would shape the software’s destiny.
The Transformation: From Developer to Architect
With Copilot at my side, my coding journey transformed. I was no longer a mere developer, but an architect, designing the blueprint of my project’s future. Copilot’s lightning-fast code generation and suggestions were the fuel that propelled me forward, allowing me to tackle challenges with confidence. It was like having an expert co-pilot guiding me through the complexities of coding, freeing my mind to explore new horizons.
But Copilot’s influence went beyond the code itself. It became my wingman, my knowledge repository. Whenever I needed to brush up on a new language or framework, Copilot was there, sharing its vast expertise. Together, we soared higher, taking my coding skills to new altitudes.
A Leap of Faith: From Code to Story
Inspired by Copilot’s remarkable assistance, I decided to take a leap of faith and employ its help in writing this very article. As an aviation enthusiast, the idea of piloting my words alongside my trusted coding copilot seemed fitting. And oh, the puns and metaphors that danced through my mind as I crafted this piece!
With each line, Copilot worked its magic, suggesting phrases and structures that would make any writer envious. It became my co-author, helping me navigate the intricacies of storytelling with finesse. Together, we painted a picture of the LLM programming assistant’s potential, embracing the enthusiasm while being mindful of its limitations.
Closing Thoughts: Ready for Takeoff
In the vast sky of coding possibilities, GitHub Copilot is a beacon of hope for developers seeking smoother flights. It accelerates productivity, enhances code quality, and serves as a valuable co-pilot for both novice and experienced coders. But like any flight, caution is key. We must remain aware of Copilot’s limitations, ensuring we’re not overly reliant on its assistance and that the code aligns with our project’s unique needs.
So, fellow aviators of the coding realm, fasten your seatbelts and prepare for takeoff. Embrace the potential of LLM programming assistants like GitHub Copilot, balancing their assistance with your own coding expertise. Together, you’ll fly to new coding horizons, creating software wonders that defy gravity. Bon voyage, my coding comrades!
My own thoughts
I think LLMs are more or less an equivalent economic innovation to the introduction of computers. Many people will get by just fine without them in their careers, but many people who are doing things manually that can be automated will struggle and likely face obsolescence. Consider this article. Here’s a link to my conversation so you can see how this article developed. It’s quite entertaining how it took “I want aviation puns to play on the name of the LLM” to “I’m an aviation enthusiast.”
I had similarly comical experiences with Copilot. New files, strangely, after some standard imports and header material, confused it. Programming in Elm, it also occasionally believed syntax and standard libs from Haskell were interchangeable. And on many occasions it tries to stick three backticks at the end suggesting it thinks markdown code blocks are valid code themselves.
But the comedy was also very functional. Consider this absolutely accurate suggestion that was far more entertainingly brutal than I had intended:
That’s quite accurate. In fact, this gives a good example of what I found Copilot to be most proficient at. It excelled at repetitive view code and FSM-style transition code, especially with highly literate typed states and messages:
case (model, msg) of
( GameOver RematchRequested _ _ connectionData
, RemoteDisconnected
) ->
NoOpponent RemoteDeclinedRematch connectionData
As I expanded the set of states and state transitions, Copilot could quickly regenerate the view and update code very literately.
What I have yet to figure out
I still don’t know how I will apply this to my fiction writing, and I’m not going to bother trying to apply it to poetry, except in those cases where the poem is not standalone but rather a part of a literary composition. I also need to get better at prompting ChatGPT for nonfiction prose. I was impressed by its productions here, and its writing, after asking for a less formal tone, was buoyant and brisk. My original intention was to take ChatGPT’s article and edit it to my own specifications. With Copilot, it was often wrong, but it got enough right to make it clear correcting its failures would be more efficient than doing it all on my own. I intend eventually to apply this pattern to writing with LLMs, but for this one, being an endorsement of LLMs, I thought it interesting to include the unedited article and the prompts: a learning opportunity for the wary.
I think Microsoft chose a good name in Copilot. It really does encapsulate the best way to utilize the LLM for writing software. You’re in control, but delegating menial tasks to another agent facilitate focusing on what you’re good at. It has encouraged me to think about what I am good at and what I enjoy so I can focus on cutting down the work I have to do to support those aims.