Generative AI

Certainly one of the biggest topics in modern software is generative artificial intelligence. So far I haven’t directly used it but have read a fair amount about it.

AI Copilots as Enablers for Practical Skills

Recently I’ve been involved in the first screening panel from engineering candidates since AI copilots have become a practical concern. As a combination of those conversations, wider engineering cultural conversations, and reading one of the stream of articles about the imact on education has made me realized that in probably most contexts such copilots are an enabler for more practical skills as a practictioner.

It’s a fairly widespread (though not inarguable) stance that knowledge and attention to syntactical details may provide little value of an engineer over a compiler, but a further extension is that the majority of the code that an engineer will typically work with is not that which they have written and instead will be a combination of inherited (“legacy”) code, code from teammates, or third-party code. This in turn leads to perspectives such as the ablility to read and maintain code outweighing that of producing fresh code (at least in terms of time if nothing else). In terms of day-to-day work this manifests not only in discovery related to work being done directly, but also efforts such as reviewing pull requests which can act as a vital channel for distributing knowledge across a team (in addition to the more obvious goals of butt-covering and potential compliance).

All of this suggests that the use of Generative AI in coding can transcend “this can produce my code faster” to “this can enable development of the more rounded set of skills that are crucial to a software engineering organization.”

As a disclaimer, I personally do not yet use copilots and my untested opinion is that they are a largely outsized solution that are a side effect of somewhat stagnant perspectives on coding that could be addressed by more deterministic tactics…but that’s unhelpfully idealistic given the current state and in either case the result is that less time should be spent writing code but there remain plenty of other things to worry about.