I don't believe that non trivial apps can be built with conversational programming and we've had plain English programming since COBOL, so no to that either.<p>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.<p>I have yet to hear even rumors of any AI that could generate anything like a real program from a conversation. Not gonna happen.<p>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.
I think you've nailed why copilot is so exciting, so irresponsible, yet so <i>not</i> novel. The other comment in this thread who compares it to tab complete gets it too — tab complete is a dialogue as well, as is every "utterance" in the feedback loop between you and your computer.<p>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: <a href="https://blog.jse.li/posts/software/" rel="nofollow">https://blog.jse.li/posts/software/</a>
Even if this ends up good enough that it can reliably generate programs from natural-language comments, being able to specify what you want precisely enough in English will be a skill that only a few will be good at: if anything, writing specifications of behavior in English is _more difficult_, than implementing the behavior in code because Natural Languages are ambiguous and communication in them relies heavily on a the “common sense” of your interlocutor.
There are comments saying they agree with the article, that it's like autocomplete - the opposite of what the article is arguing ("autocomplete is the wrong mental model")!<p>When I use autocomplete I know what I want it to complete. To mee also copilot seems like a different category.
Someone else on here said it was a glorified tab complete that was really nice and that seems to be my impression too. It looks productive but it doesn't look like it totally changes the nature of programming to me.
Programming is already conversational. I'm telling a computer what I want, it does it, I see what it does, and elaborate or correct myself where necessary. Repeat endless times, until product exists.
This is what I understood:<p>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.<p>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.