Is AI the Software Dev Silver Bullet?
Having used GitHub Copilot in Visual Studio Code for about a month, mainly to write small Python and C/C++ utilities for personal use, I thought it was the right moment to reflect on the results, and, more in general, on the state of AI in programming.
For those of you who do not know what GitHub Copilot is, imagine “ChatGPT” inside your development environment helping you to write software.
First point: This Is Very Cool !!!
If you have used #ChatGPT to generate software functions or entire programs, just imagine the same but with all the code that your are writing serving as the context of your AI queries. You write a comment (in python starting with a “#”) and it “complete” your work.
So, for example, the “autocomplete” functionality of the editor don’t just give you a function with its variable types, but pick up the correct variables names from the code you wrote above (to help this you should start using meaningful names for variables, a thing you should do anyway to help your coworkers ??).
You can use it as a manual to find example of package usages, explanations, explain your (colleague's) code, generate unit test functions for your code.
It can also write entire functions of course, and use your own functions when generating code (i.e. the code generation understand and uses user-defined functions… again, if you use meaningful names that helps).
You can forget about searching for code on the web, checking reference manuals, writing low-level code, and even writing unit-test functions. All these are successfully automated and done without leaving your development environment.
@Managers, be cautious: if you start using it in your organization, your programmers will never accept to work without it again (except, maybe, for the occasional real programmer still using VI).
Second point: PRODUCTIVITY
Discussing #productivity in #software #development has always been an hot topic. In a nutshell, whatever metric you adopt has side effects, not least the change in behavior. Start rewarding Lines of Code (LOCs) and you will soon end up with a repository of re-written, duplicated code. Reward people for fixing bugs and you will get a lot of bugs fixed (that should never have been in the committed code in the first place).
Whatever your view on the topic I have no doubt I experienced an increase in my productivity. Having copilot on my side I skipped a lot basic tasks, focusing on the business logic (the problem I was trying to solve) and learning things I would not have though to do on the way.
You can read an interesting blog post on the impact of GitHub Copilot: Research: quantifying GitHub Copilot’s impact on developer productivity and happiness | The GitHub Blog
But if you are a head of development in hope of AI replacing your programmers you better read my next point.
Third point: Is AI THE Silver Bullet?
If you are an old programmer, the one before object oriented, service oriented architectures, micro services, containers, Kubernetes and so on, you learn that the complexity of programming is not in the low-level tasks like writing code, classes, unit test but is in the fact that the world is full of complex problems. Otherwise, you wouldn't be trying to write software to solve them.
领英推荐
If you are an old programmer, you also have probably read the paper from Frederick Brooks Jr. titled No Silver Bullet, written in 1986. Reading the paper is still interesting and I encourage you to go find and read it. Long story short, what Brooks call “Essential Complexity” is something that is inherently embedded in the problem you are solving, and, the prediction at the time was, “…Not Only are there no silver bullets now in view, the very nature of software makes it unlikely that there will be any-no inventions that will do for software productivity, reliability and simplicity what electronics, transistors, and large-scale integration did for computer hardware. We cannot expect ever to see twofold gains every two years…”.?
Over the years there have been many technologies promising to “make programming simpler” or “make software evolution simpler”. The problem with technological solutions is that hiding the complexity under the carpet is not like eliminating the complexity. Like the dust, if hide it under the carpet it then resurface somewhere else. Discussing the software complexity like a pure matter of size, coupling/decoupling, devops/cascade development process is working on the “accidental complexity” of software development.
So, my answer is: not yet. For what I’ve seen so far, while I am incredibly excited about having a copilot (I wished I had one when I was a programmer) it does not address the essential complexity of programming and, for what I understand of the technology involved, it will not do it for quite a while.
In the end, translating complex requirements in Italian (or English) at a level that can be used by an AI is, so far, as complex as writing the software (actually current programming languages are far easier than Italian and English).
Imagine having a young person, fresh out of programming school, sat near you doing a lot of work for you: writing utility functions, generating unit tests, helping you in a lot of things: is this going to change the complexity of the problem you are solving? I do not think so.
So, let me close with some question:
@Programmers, how has #AI impacted your workflow and the way you approach coding tasks?
Do you see AI playing a significant role in areas like software architecture and design in the future? If so, how?"
@AI Experts: could you imagine AI taking over the entire software writing process any time soon? What are your thoughts and experiences with automated coding solutions?"
Looking forward for your view in the comment section.
Antonio
Fractional Manager e Business Advisor per startup e PMI. Affianco gli imprenditori nella crescita || Innovazione, strategia e tecnologia per risolvere le sfide e raggiungere nuovi obiettivi [??Scrivimi in chat ??].
1 年Ottimo articolo Antonio Romeo. So che te ne intendi di vecchi programmatori. ?? . Sono d'accordo che siamo lontani dalla "silver bullet" però potrebbe essere un bel passo verso la democratizzazione della digitalizzazione. Nel senso che più persone possono avvicinarsi alla programmazione di base e fare cose "assistite" basiche. Poi concordo con il tuo punto di vista. Per le cose più complesse meglio la genialità e l'esperienza umana. Co-Pilot in questo caso rende bene il concetto.