Generating code was never the hard part
2023 was quite the year for generative AI and, specifically, large language models (LLMs). With all the discourse on generative AI came a familiar reprise: “is this the technology that will replace software developers?”
On the face of it, I totally understand. If you open ChatGPT and give it the prompt, “Write an adder function in typescript” it will dutifully generate the following code:
function adder(a: number, b: number): number {
return a + b;
}
// Example usage:
const sum: number = adder(3, 5);
console.log(sum); // Output: 8
Impressive! But here’s the problem: generating code was never the hard part.
The value I bring to my job is not generating code. I mean, I suppose that is a part of it in the end, but my value is largely in the work that happens before I generate the code: things like requirements clarification, negotiation, technical design, and tradeoff analysis.
One of the best traits I feel I bring to the table is quickly understanding where requirements fall short: either by being underspecified or overly-prescriptive of a solution. In my simple adder
example, the model probably should have asked me questions like “how many numbers will need to be added?” or “what if no input or an invalid input is used?” Even before that, the model should have understood the use case to determine whether an adder
function was truly needed. Once it did determine an adder
function was needed and how to implement it, then it would presumably have to determine how best to integrate the function into a large codebase.
Now, imagine these kinds of requirements clarification questions and technical design considerations but on a much, much larger scale: the requirement is typically not to write an adder
function but rather something much more complex and integrated into an existing, complex codebase.
Of course, this is all a bit unfair: ChatGPT is a generative AI model and was not designed to be a software engineer. But that’s the point—as impressive as it may be to see code being generated, I have yet to see any AI that can do these other things—the truly hard parts of being a software engineer.
If you enjoyed this article, consider subscribing on Feedly or your favorite RSS consumer. If you'd like to chat, I'm most active on Bluesky.