I’m worried that @GitHubNext’s Copilot Chat will make software engineering harder to learn, not easier. Even if not, they can make it more of a lonesome experience.
Asking an unreliable LLM for advice instead of googling for a GitHub issue, or a StackOverflow answer, might be super dangerous because LLMs confabulate!
When I paste an error message into the searchbar, I have an idea of what I’m looking for. It’s either:
An issue in the repository of the library that threw the error, preferably with the maintainer’s answer I can use to quickly work around the problem.
I don’t have to validate that hard, because I know those people. I know they’ve helped me multiple times over the last 9 years, and I recognize them as people who know what they’re doing.
Over the years of their career, software engineers start to recognize GitHub handles and avatars of other people in the industry.
An artisan on their journey to mastery meets people to learn from, some master craftsmen of old, but also people on their level of experience, who encountered the same error message just yesterday!
In this, the industry is very social, community-driven.
It’s nice to see the avatars you know solving the same technical challenges you face right now. we’re social animals. Following the path of another human being always feels safer than trailblazing a new one. It’s extra nice if you get to meet one of the people you know from GitHub at a conference or a local tech meetup.
When I google for a solution, I’m looking at Medium and devto posts last, because I very rarely find anything helpful in them. It’s super easy to write some bullshit that doesn’t even work and call it a best practice.
Software engineering is very often a practice of patience and curiosity. You read your codebase, search the internet, delve deep into node_modules, time travel through somebody else’s GitHub history.
And then you validate.
LLMs can lead us to a world with way less searching, but way more validation. You can’t trust the genie, because it’s not risking its personal brand and credibility.
I’m worried that people new to the craft, on top of suffering from a need for excessive validation of LLM output, will now have less opportunities to learn from the experts, less opportunities to meet people they can trust.
Can we combine the Large Language Models with static analysis tooling and AI-generated test harnesses to make the validation easier? Can we limit AI confabulation? Can we build AI-powered analysis tooling to help our validation and eliminate ourselves from the process? Surely yes, with time.
But won’t this slowly lead us to the world where we don’t need the middle class of software craftsmen, and we all become BigCo product owners shamans orchestrating an army of machines or indie businessmen trying to carve out our little niches? Competing with each other instead of collaborating?
It sounds lonely, doesn’t it?