The "mind blowing" example of auto generating a "layout" can draw circles with a color fill or an HTML button with text. What kind of programmer needs or would use this? Should I really type, "I need a button that says Login and goes to the login page when you click it" every time that's the case? And for my second button, do I type that again with the new text? This sounds awful. If someone is amazed by an <a> tag, I would question their programming chops.
I have yet to hear even rumors of any AI that could generate anything like a real program from a conversation. Not gonna happen.
I must add here that debugging is 70% of the programmer's job. Conversational AIs don't help there at all. Can you ask it why your function returns weird output when sent something from another function? No, you cannot. Yet these are the real problems programmers face all day long.
Certainly a lot less tedious than typing a bunch of angle brackets and trying to recall which tag is used for text input fields.
The density of text simply cannot be equalled by speech. Try showing someone one of Edward Tufte's marvellous tables and see what they can glean from it, versus how long it would take you to explain the same information verbally.
There's no jumping the shark on text. It has always won on information density, succinctness, and reusability.
Yet. The current state is admittedly primitive, but Copilot certainly feels like a step towards AI being able to reprogram itself. There's no doubt in my mind we'll eventually reach that state, which would propel us even quicker towards the singularity.
"Fake it till you make it"?
When I use autocomplete I know what I want it to complete. To mee also copilot seems like a different category.
You might use autocomplete when you know what you want it to complete, but I also often find myself using it to look at the properties of an object, see what variables are in scope, "probe" the type of different variables, etc. -- all exploratory, all dialogues.
As for the way you use autocomplete -- I would say it's not that uncommon for me to use autocomplete to "fish" for stuff when I'm not sure what I want. Especially if I'm working with something unfamiliar. I'll frequently just type the dot and then scroll through suggestions.
More like, computers do what you tell them to do, and not what you want them to do, don't recall who's quote it is.
// Unify relativity with quantum mechanics.
I'm trying to say Copilot is not a fundamental shift to programming. It's what programming already is, and we already have IDEs assisting us with refactoring and second-guessing our intent with autocomplete (which in some IDEs is powered by AI now, as well).Programming is like working in a team. You try to communicate with your teammates, and then everyone does what they can according to their skills, and how they understood the task.
The shift to higher-level communication in programming is inevitable, will it look like Copilot, I don't know.
The first half of this essay I wrote last year also develops the dialogic nature of computing, using some of the ideas from Soviet philosopher Mikhail Bakhtin: https://blog.jse.li/posts/software/
There are two side of a programmer a. Intellectual - The one who solves a problem by design discussions and creating mental model of the solution. b. Robotic - The one who actually types the code, tests it, makes it free of issues and deploys it.
Just like the deployment part is taken care of by the CI/CD pipelines now, the CoPilot now attempts to automate the "typing code" part in a different way than the IDEs have approached.