Why CoPilot Is Making Programmers Worse

ThePrimeTime
22 Sept 202421:30

Summary

TLDRCe script discute les implications de l'utilisation des outils pilotés par l'IA comme GitHub Copilot sur les compétences des programmeurs. Il souligne les inconvénients potentiels, tels que l'érosion des compétences de base, la dépendance aux solutions générées par l'IA, et la fausse perception d'expertise. Le texte met en garde contre la 'dépendance apprendue' et encourage à maintenir une compréhension profonde du code pour innover et résoudre les grands problèmes.

Takeaways

  • 🤖 L'utilisation des outils pilotés par l'IA comme GitHub Copilot peut augmenter la productivité des programmeurs, mais cela peut également avoir des conséquences négatives sur la qualité et les compétences des programmeurs.
  • 📚 La dépendance aux outils d'assistance à la programmation peut entraîner l'érosion des compétences de base en programmation, car les programmeurs peuvent oublier les détails importants des langages si ceux-ci ne sont pas régulièrement utilisés.
  • 🧠 L'assistance par l'IA peut conduire les programmeurs à contourner les étapes clés du débogage et de la résolution de problèmes, ce qui peut affecter leur capacité à développer des compétences de pensée critique et de résolution de problèmes.
  • 🔄 L'auto-génération de code peut entraîner une dépendance aux solutions générées par l'IA, sans vérifier la correction, l'efficacité et la maintenabilité du code.
  • 🔄 Une étude a montré que le taux de modification du code a augmenté après l'introduction des LMM, passant de toutes les six mois à toutes les deux semaines en moyenne.
  • 🚩 Le code généré automatiquement peut parfois ne pas être la solution optimale pour un problème spécifique, et la confiance excessive dans ces outils peut conduire à accepter du code inefficace, buggé ou non sécurisé.
  • 👥 La dépendance aux outils d'assistance à la programmation peut mener à un manque de propriété et de responsabilité pour le code écrit, ce qui peut affecter la qualité globale du code et la productivité de l'équipe.
  • 🔗 L'utilisation d'outils pilotés par l'IA peut créer une dépendance aux plateformes propriétaires, ce qui peut isoler les développeurs des communautés de programmation et des outils open source qui encouragent la collaboration et le partage des connaissances.
  • 💡 La génération automatique de code peut donner aux développeurs une fausse perception d'expertise, les faisant croire qu'ils sont compétents alors qu'ils ne comprennent pas pleinement le code qu'ils écrivent.
  • 🚀 Les développeurs doivent éviter la 'dépendance apprendue' et la 'fausse expertise' et continuer à développer leur propre capacité à résoudre des problèmes et à comprendre le code, plutôt que de compter entièrement sur les outils d'assistance.

Q & A

  • Quels sont les outils AI-driven mentionnés dans le script qui pourraient avoir un impact négatif sur les compétences des programmeurs?

    -Les outils mentionnés sont GitHub Co-pilot et les IDE avec des fonctionnalités d'auto-complétion avancées comme les LSP (Language Server Protocol).

  • Quel est le risque majeur souligné par le script en ce qui concerne la dépendance aux outils de programmation AI?

    -Le risque majeur est l'érosion progressive des compétences de base en programmation, comme l'oubli des détails importants des langages de programmation.

  • Pourquoi le script suggère-t-il que les développeurs peuvent perdre leurs compétences en utilisant des outils AI?

    -En utilisant des outils AI pour générer du code, les développeurs peuvent oublier les détails et les mécanismes fondamentaux du code, car ils ne sont pas obligés de les écrire eux-mêmes.

  • Quels sont les effets secondaires du script sur le développement de compétences de résolution de problèmes chez les programmeurs?

    -En acceptant des extraits de code générés automatiquement, les programmeurs peuvent ne pas développer pleinement les compétences de résolution de problèmes et de pensée critique nécessaires à la programmation.

  • Quels sont les arguments avancés dans le script contre l'utilisation excessive des fonctionnalités d'auto-complétion des LSP?

    -L'utilisation excessive peut conduire à une dépendance aux outils, réduire l'incitation à refactoriser ou à réviser le code, et limiter l'apprentissage des compétences de base.

  • Quel est l'impact du script sur la perception de l'expertise des développeurs?

    -Le script suggère que les développeurs peuvent avoir une fausse perception d'expertise, en croyant qu'ils sont compétents en raison de leur capacité à générer rapidement du code avec l'aide des outils AI, même s'ils ne comprennent pas pleinement le code.

  • Quels sont les dangers potentiels mentionnés par le script de la dépendance aux solutions générées par AI?

    -Les dangers potentiels incluent l'acceptation de code inefficace, buggé ou non sécurisé, et la réduction de l'incitation à refactoriser ou à réviser le code.

  • Quelle est la position du script sur l'idée de ne pas tout comprendre en programmation?

    -Le script suggère que les développeurs ne doivent pas se fier uniquement aux réponses des outils AI et qu'ils devraient avoir la capacité à comprendre et à résoudre les problèmes eux-mêmes pour éviter une dépendance détrimente.

  • Quels sont les avantages potentiels de l'utilisation des outils AI en programmation, selon le script?

    -Les avantages potentiels incluent l'amélioration de la productivité, la facilitation de la navigation et de la refactorisation du code, et l'assistance dans la résolution d'erreurs.

  • Quels sont les défis pour les développeurs en termes de compétences et d'apprentissage soulignés par le script?

    -Les défis incluent la maintenance des compétences de base, la capacité à résoudre des problèmes sans l'aide des outils AI, et à ne pas devenir dépendant de la 'l'aide apportée' pour chaque problème.

Outlines

00:00

🤔 Impact des outils IA sur les compétences de programmation

Le script discute de l'influence des outils pilotés par l'IA, comme GitHub Copilot, sur les compétences des programmeurs. Il est suggéré que ces outils, bien qu'ayant des avantages en termes de productivité, peuvent avoir des conséquences négatives sur la qualité et l'ensemble de compétences des programmeurs. L'auteur exprime une inquiétude que les développeurs qui dépendent de ces outils pourraient perdre leurs compétences de base en programmation, comme le montre l'exemple de l'oubli des détails de la syntaxe Rust après une période d'inactivité. Il souligne également l'importance de la résolution de problèmes et de la compréhension profonde du code pour le développement durable des compétences en programmation.

05:01

🔄 Dépendance au code auto-géré et manque de propriété

Le paragraphe aborde la dépendance aux solutions générées par l'IA, comme GitHub Copilot, qui peut conduire à une compréhension superficielle du code généré sans vérification de sa justesse, d'efficacité ou de maintenabilité. Il est mentionné un changement dans la fréquence de modification du code sur GitHub, passant de tous les six mois à toutes les deux semaines après l'arrivée des LM. Cela soulève des questions sur la qualité et la fiabilité du code généré. L'auteur exprime également son mécontentement avec la perte de sens de propriété et de responsabilité sur le code qu'il écrit, ce qui peut mener à un manque d'incitation à réviser ou à réorganiser le code.

10:03

🚫 Le danger de la dépendance aux outils propriétaires

Ce paragraphe traite de la dépendance aux plateformes propriétaires, comme GitHub, qui peuvent entraîner une isolation des développeurs des communautés de programmation plus larges et des outils open source. Il est question de la fausse compétence que les développeurs peuvent ressentir en utilisant des outils d'assistance à la codification, ce qui peut conduire à des erreurs coûteuses en termes de temps et d'argent, surtout dans les domaines complexes comme l'optimisation des performances, la concurrence et la sécurité. L'auteur remet en question l'idée que le recours aux robots est toujours négatif, soulignant que l'innovation et la compréhension sont essentielles pour résoudre de grands problèmes.

15:05

🧠 Le danger de la dépendance et de l'impuissance apprendue

Le script met en avant le risque de la 'dépendance apprendue' et de l''impuissance apprendue', où les développeurs peuvent devenir dépendants des outils IA pour résoudre des problèmes et perdre leur capacité à penser de manière créative et à trouver des solutions par eux-mêmes. Il est suggéré que les développeurs devraient éviter de devenir des 'robots' qui ne peuvent faire que ce que les robots peuvent faire et devraient instead se concentrer sur l'innovation et la résolution de problèmes plus vastes.

20:05

💡 L'importance de l'innovation et de l'indépendance de la pensée

Dans ce paragraphe, l'auteur plaide pour l'importance de l'innovation et de la pensée indépendante parmi les développeurs. Il suggère que les développeurs devraient être capables de générer des idées novatrices et de résoudre des problèmes complexes sans dépendre entièrement des outils IA. Il souligne que l'expérience de résoudre un problème et de parvenir à une solution claire peut être gratifiante et contribue à élargir les capacités de résolution de problèmes des développeurs.

Mindmap

Keywords

💡AI-driven tools

Les outils pilotés par l'IA sont des logiciels qui utilisent l'apprentissage automatique et d'autres technologies de l'IA pour faciliter certaines tâches. Dans la vidéo, ces outils sont discutés en tant qu'éléments qui peuvent améliorer la productivité des programmeurs, tout en soulevant des inquiétudes sur l'impact potentiel sur leurs compétences de base en programmation.

💡Productivité

La productivité fait référence à la capacité de faire plus de travail en moins de temps ou avec moins d'effort. Dans le contexte du script, l'accent est mis sur l'augmentation de la productivité grâce aux outils pilotés par l'IA, bien que cela puisse avoir des conséquences négatives sur les compétences des programmeurs.

💡Compétences de base en programmation

Les compétences de base en programmation comprennent la compréhension des structures de données, des algorithmes de base, de la résolution de problèmes et de la débogage. Le script aborde la crainte que l'usage excessive des outils AI puisse éroder ces compétences, entraînant une perte de détail et de compréhension profonde du code.

💡Code dependency

La dépendance au code fait référence à la pratique des développeurs de compter excessivement sur le code généré par des outils externes sans vérifier sa justesse, son efficacité ou sa maintenabilité. Dans le script, cela est discuté comme un risque potentiel lié à l'utilisation des outils AI pour la génération de code.

💡Autogénéré

Le terme 'autogénéré' se réfère au code ou au contenu créé automatiquement par un programme ou un outil, plutôt que manuellement par un être humain. Dans la vidéo, cela est lié au débat sur la fiabilité et la qualité du code produit par des assistants IA, et si les développeurs peuvent faire confiance à ces outils sans comprendre entièrement le code généré.

💡Révision de code

La révision de code est le processus par lequel un développeur examine le code d'un autre pour vérifier la qualité, la sécurité et la conformité aux normes. Le script mentionne que l'usage des outils AI peut réduire l'incitation à réviser ou à refactoriser le code, ce qui pourrait nuire à la qualité globale du codebase.

💡Propriétaires

Le terme 'propriétaires' se réfère aux outils ou aux services qui sont détenus et contrôlés par une entreprise ou une personne spécifique. Dans le contexte du script, cela fait référence à la dépendance des développeurs aux plateformes comme GitHub Co-pilot, ce qui peut créer des problèmes si les conditions de service changent ou si les frais deviennent trop élevés.

💡Expertise

L'expertise est la connaissance approfondie et l'expérience dans un domaine particulier. Le script discute de la manière dont l'utilisation des outils AI peut créer une fausse impression d'expertise chez les développeurs, qui peuvent se sentir compétents en raison de leur capacité à générer rapidement du code, sans nécessairement comprendre en profondeur le code qu'ils produisent.

💡Dépendance

La dépendance fait référence à la situation où une personne ou une entité repose excessivement sur quelque chose d'autre pour fonctionner ou réussir. Dans le script, cela est lié à la façon dont les développeurs peuvent devenir dépendants des outils AI pour générer, déboguer et optimiser leur code, au détriment de leur propre développement de compétences.

💡Innovation

L'innovation est le processus par lequel de nouvelles idées, des produits ou des services sont créés et mis en œuvre. Le script suggère que l'innovation est difficile sans une compréhension profonde, et que la dépendance aux outils AI peut limiter la capacité des développeurs à innover, car ils peuvent ne pas comprendre suffisamment le code qu'ils utilisent.

Highlights

AI-driven tools like GitHub Co-Pilot can reduce hours of work but may negatively impact programmers' skill sets.

There's a risk of erosion of core programming skills due to reliance on AI tools.

Shortcutting the learning process might have long-term consequences on programmers' abilities.

Language hopping and not regularly using a language can lead to forgetting fundamental details.

Problem-solving skills atrophy without regular practice.

AI assistants can lead to bypassing key learning steps like understanding algorithms deeply.

New programmers might not develop critical thinking skills necessary for programming due to AI assistance.

Senior developers are more skeptical of AI tools because they already have a strong foundation in programming.

Autogenerated code can lead to code dependency where developers rely heavily on AI-generated solutions.

Code generated by AI tools is updated more frequently, leading to a higher churn rate.

Autogenerated code may not always be optimal and can lead to inefficiencies or bugs.

Developers might not fully understand the code they use AI tools to generate.

AI-assisted code generation can lead to a lack of ownership and responsibility for the code.

Reliance on AI tools can create a false sense of expertise among developers.

Developers should not rely solely on AI-generated code to become better programmers.

AI tools can create a dependency on proprietary platforms, which may become too expensive or change their terms of service.

The use of AI tools might isolate developers from broader programming communities and open-source tools.

Learned helplessness is a significant risk when developers rely too much on AI tools for solutions.

Innovation is difficult without understanding, and relying on AI tools might hinder that.

Transcripts

play00:00

all right why co-pilot is making

play00:01

programmers worse at programming

play00:02

September 11th 2024 nice thank you

play00:05

Darren HS over the past few years an

play00:07

evolution of AI driven tools like

play00:16

githubschool

play00:18

opers hours of work while these tools

play00:21

have obvious benefits in terms of

play00:23

productivity there's a growing concern

play00:25

that they may also have unintended

play00:27

consequences on the quality and skill

play00:29

set of programmers

play00:31

crazy it's funny that if you shortcut

play00:34

the pain of learning that it might have

play00:37

consequences that can't be right I mean

play00:39

that that right that can't be right

play00:41

right probably not I would just assume

play00:43

that if you shortcut it it's it's it's

play00:44

actually working smart and we all know

play00:46

you should work smart not hard right

play00:48

like why would you ever work hard that's

play00:50

what AI are for I just work smart why

play00:53

would you ever learn something you could

play00:54

look up I refuse to learn how to do a

play00:57

for Loop and go refuse never waste your

play00:59

brain space um anyway sorry I just hate

play01:04

I just put all the phrases together that

play01:06

I hate and turn it into one 30 second

play01:10

talk erosion of core programming skills

play01:12

one of the most significant risks of

play01:14

relying on tools like co-pilot is the

play01:15

gradual erosion of fundamental

play01:17

programming skills I mean this just

play01:18

happens like anybody that does language

play01:20

hopping that goes around and likes to

play01:22

learn a lot of different languages you

play01:24

know that this is just a fact of life if

play01:26

you aren't on the ground programming it

play01:29

you forget get all the little things

play01:30

like yesterday I haven't programmed rust

play01:32

in 8 months and so I opened it up to

play01:34

just quickly import a library from rust

play01:36

and do something and I forgot that you

play01:38

have to first mod the thing and then you

play01:40

can use the thing you know like you

play01:42

forget all the little details you still

play01:45

understand like the basics of it but

play01:46

it's it's it's easy to forget the little

play01:48

details and so when you actually do the

play01:50

thing yourself you're just like crap um

play01:53

shoot uh for is it in or is it of like

play01:57

when TJ and I were doing co- programming

play02:00

said in and it should have been of and

play02:02

just that's simply because I haven't

play02:04

done it you just you just forget the

play02:06

little things and they're really easy to

play02:07

rehydrate right but they're very easy to

play02:10

forget and so when you do none of the

play02:13

little teeny tiny things when it comes

play02:14

to problem solving when you don't do

play02:16

those hundreds if not thousands of

play02:18

little problem solvings every day that

play02:20

little problem solving atrophies

play02:23

anything you don't do atrophies

play02:26

completely normal no one should be

play02:28

surprised by that take I think everybody

play02:30

should just 100% uh agree like I can

play02:33

look at rust code generally I can look

play02:35

at almost any rust code that's not super

play02:37

Advanced pin project ones and I can just

play02:40

go oh yeah this is what's happening I

play02:42

can still read rust code I just can't

play02:44

program it off my T the tips of my

play02:46

fingers that well in the past learning

play02:48

uh to code involved Hands-On problem

play02:50

solving debugging and deep understanding

play02:51

of how code works at various levels from

play02:53

algorithms to low-level implementation

play02:55

details AI assistants while useful often

play02:57

allow developers to bypass these steps

play02:59

for instance rather than deeply

play03:01

understanding the underlying structure

play03:02

of an algorithms or learning how to

play03:03

write efficient loops and recursion

play03:06

programmers now just accept

play03:07

autogenerated code Snippets over time

play03:09

this could lead developers who can't

play03:12

effectively solve problems without AI

play03:13

assistance because they never fully

play03:15

developed the problem solving and

play03:16

critical thinking skills necessary for

play03:18

programming I think this is why so many

play03:20

senior devs were so into AI to begin

play03:23

with we already all had this this notion

play03:26

built into our head and so it was really

play03:29

easy

play03:30

to just go oh yeah this is right this is

play03:32

wrong this is right this is wrong

play03:34

whereas new people don't even have that

play03:37

right new people don't even have that

play03:38

that that that whole thing right and AI

play03:42

made it really

play03:43

easy and so I can see this being a this

play03:46

was a problem for me and I I'll give one

play03:48

more quick story uh when I was when I

play03:50

was building a plugin with Lua is when I

play03:52

kind of quit using co-pilot uh in I

play03:54

forget what it was April maybe or March

play03:57

I used co-pilot since the day they oh

play04:00

the day they announced that Nat fredman

play04:01

CEO at that time of GitHub gave me

play04:03

personal access to GitHub all the way

play04:05

until just last March so I used I used

play04:07

it a lot I'm not saying oh I only used a

play04:10

little bit I knew that I knew uh what's

play04:12

his name the pope T Pope was writing the

play04:15

plugin before co-pilot was even out like

play04:16

I knew these things and so I knew neovim

play04:19

was going to have a plugin I knew all

play04:21

the stuff I was completely on board I

play04:23

thought it was fantastic I was very

play04:24

excited about it I still remember my

play04:26

first experience having an llm generate

play04:28

me code and and it

play04:30

was absolutely

play04:33

incredible but then when I turned it off

play04:36

I realized I couldn't write a a for Loop

play04:38

in Lua and that's when I was like all

play04:40

right I got to stop I I've I've

play04:43

accidentally handed my skills to

play04:46

something else and I don't want to do

play04:47

that now you could argue you do want to

play04:49

do that because you believe that at some

play04:50

point those skills are worthless due to

play04:52

AI improving I'm saying hey I don't know

play04:56

if they're going to get there anytime

play04:57

soon so maybe you don't want to hand

play04:59

them off quite yet this is not like a

play05:01

phone in memorizing phone numbers this

play05:03

is a little bit different you may not

play05:05

want to do the same thing LSP does the

play05:06

same thing in some level in LSP does do

play05:08

the same thing over Reliance on

play05:10

autogenerated code with tools like

play05:12

co-pilot developers can quickly produce

play05:13

working code without fully understanding

play05:15

its mechanics this leads us to what is

play05:17

known as code dependency where

play05:18

developers learn too heavily on AI

play05:20

generated Solutions without checking for

play05:22

correctness efficiency and

play05:24

maintainability uh by the way the

play05:25

maintainability one is interesting there

play05:27

was a study done that showed that code

play05:28

generated between like 2018 to 2021

play05:32

right before llms came onto the scene in

play05:35

coding every line of code on GitHub on

play05:37

average changed every six

play05:39

months after llms up until this

play05:43

point it's every two weeks on average it

play05:46

just goes to show churn rate of lines

play05:49

has greatly changed now I don't know if

play05:51

that's

play05:52

true universally I don't know how many

play05:55

projects they looked at I don't know all

play05:57

the things that they applied this study

play05:58

to but it is a very interesting study

play06:01

just by itself when you can produce code

play06:04

faster you can get more churn and

play06:06

correctness may be less

play06:08

frequent one key with uh one key issue

play06:10

with autogenerated code is that it may

play06:12

not always be the optimal solution for

play06:14

the specific problem with proper vetting

play06:16

programmers might accept inefficient

play06:18

buggy or insecure code that works at

play06:20

first glance but causes problems in the

play06:21

long run this Reliance reduces the

play06:23

incentive to refactor or even review the

play06:25

code which could harm the code bases and

play06:26

team productivity over time yeah I mean

play06:30

something that people don't talk about

play06:32

is uh watch this watch this little thing

play06:34

this is kind of like an interesting

play06:36

thing uh Twitter feel free to

play06:38

participate in as well press one if you

play06:42

enjoy code reviews if you enjoy

play06:44

reviewing code generally speaking it's I

play06:48

would say about two-thirds probably are

play06:51

not huge fans of it reviewing code I

play06:53

think that's a pretty fairish statement

play06:56

people generally don't like to review

play06:58

code AS AIS go one that will be like as

play07:01

the more you inte the more you integrate

play07:04

with AI the more you're just reviewing

play07:06

code you're not even writing code and

play07:10

for me that's like such a hard trade-off

play07:12

because I don't enjoy the process of

play07:14

reviewing code I tend to not look as

play07:17

closely when I review code and so when I

play07:20

do that I find that I don't look as

play07:23

closely as I should and I often let bugs

play07:26

slip in with co-pilot I was never I was

play07:28

never a great reviewer of code I've

play07:30

never been a great reviewer of code some

play07:32

people I feel like are just much better

play07:33

at reviewing code I've never been good

play07:35

at reviewing code I kind of always I

play07:37

feel like I always have to bring things

play07:39

down and run it and debug through it for

play07:41

me to really get how someone else thinks

play07:43

and why they do stuff like then then

play07:45

helps me but I often review code and I

play07:47

just find that I I miss easy bugs but

play07:50

when I review my own code by the way

play07:51

here's a pro tip a really big Pro tip

play07:54

before you make a poll request load up a

play07:56

diff on GitHub or on stash or whatever

play07:59

process you use and look at your own

play08:02

code and what you should you'll be able

play08:04

to pick out so many problems and it's

play08:06

because when you go onto GitHub or you

play08:08

go onto stash you go into code reviewer

play08:11

mode but then you already have your own

play08:13

kind of you already have your full

play08:15

understanding of the code and you will

play08:16

find so many little things you go oh

play08:19

yeah I see I dude I totally messed I

play08:20

could do that way better oh I see that

play08:22

oh I could definitely do that one better

play08:24

right it's actually a really good

play08:25

process to uh help improve yourself is

play08:27

doing the difference between writing

play08:29

your code and reviewing your code I I

play08:32

and I don't believe and and and I know

play08:34

some people say they can do it I don't

play08:36

think you should do it from within your

play08:37

editor you should do it in GitHub UI

play08:40

because you you you switch modes because

play08:42

if I do something within Vim I'm doing

play08:45

it within my Vim my Vim mode I'm not

play08:48

doing it within reviewer mode very

play08:50

different experience yeah being able to

play08:52

see your changes at once helps to see

play08:54

what you've done yeah because I know you

play08:55

can do that in vs code you can do that

play08:59

in in Vim it's not hard to do it in Vim

play09:01

I can look at diffs in Vim it's just the

play09:04

fact that it's my mentality changes when

play09:07

I'm on GitHub versus when I'm in my

play09:09

editor and it's subtle and I try not to

play09:12

like no matter how much you think you

play09:14

can do it I don't think you can do it as

play09:17

well because it's just it's just a

play09:19

completely different like think about it

play09:20

this way when you work in the same place

play09:23

you always work it's really easy to be

play09:26

in your work Zone but when you go and

play09:28

work somewhere else

play09:30

it creates a different feel right and so

play09:32

if you go to a coffee shop to try to

play09:35

only crank out code when you really need

play09:37

the crank out code the once every week

play09:39

or once every couple week trip to the

play09:41

coffee shop is like your your raging

play09:43

programming session and for whatever

play09:45

reason you could just jump into it and

play09:47

do it so well it's because you know

play09:50

environment matters environment plays a

play09:52

large role in how you think and do

play09:54

things uh all right lack of ownership

play09:56

and responsibility AI assisted code

play09:58

generation can lead to the pH phenon

play09:59

where developers become detached from

play10:01

the code they write when a developer

play10:03

writes every line of code manually they

play10:05

take full responsibility for Its

play10:06

Behavior whether it's functional

play10:08

functional functional secure or

play10:10

efficient in contrast when AI generates

play10:12

specific portions of code it's easy to

play10:14

shift the sense of responsibility onto

play10:15

AI assistance I'm not sure I I guess I

play10:17

don't feel that that's kind of it's a

play10:20

unique take maybe people feel this I

play10:21

don't really feel this but it's

play10:25

interesting by the way I did say

play10:27

something about LSPs and not learning

play10:29

what I mean by LSPs and not learning

play10:30

just so everybody understands is that

play10:33

how many people know the standard

play10:35

library of what they use really well or

play10:38

have you offloaded the learning of the

play10:40

standard library to your LSP so that it

play10:42

autocompletes and um autocompletes and

play10:45

shows you what it is I'm I think I think

play10:46

LSPs are great by the way I love them

play10:49

for navigation I love them for finding

play10:50

references I love them for refactoring

play10:53

uh as far as autocomplete itself goes I

play10:56

think it it makes things easy so I use

play10:58

it but I don't know if it's great right

play11:01

like I don't know if it's always a

play11:03

perfect win so it's kind of like a I see

play11:07

both the benefit in the uh the

play11:08

negativity I'd love to just have LSP

play11:10

navigation oh that'd be so good uh when

play11:13

a tool hands you the solution

play11:14

immediately you're less likely to seek

play11:16

alternative approaches also very fair

play11:18

this is a very fair statement uh

play11:19

experiment with different methods or

play11:21

fully understand the trade-offs of

play11:23

different implementations this

play11:24

convenience while beneficial in the

play11:26

short term reduces the number of

play11:27

learning experiences that contribute to

play11:29

long-term skill development this is fair

play11:32

this is fair are you going no LSP as an

play11:34

experience experiment uh I'll talk to TJ

play11:37

and I'm going to see if I can disable

play11:39

autocomplete and just disable

play11:41

autocomplete and that's it keep

play11:43

everything else but autocomplete I think

play11:44

it'd be a lot of fun to really uh I

play11:46

think it'd be really fun to be able to

play11:47

still have like Auto Imports to be able

play11:49

to still have refactoring still be able

play11:51

to have jump to definition still be able

play11:53

to have find references go to

play11:54

declaration like go through all of those

play11:56

things but not have auto complete cuz

play11:59

navigation I think is really important

play12:01

navigation is a fundamental time right

play12:04

disable compy I'm going to play around

play12:05

with it just disable neovim compy yeah

play12:08

well I want I I'm curious the levels of

play12:10

things I can do you know I've been I I

play12:13

want to experiment with is that actually

play12:14

good I don't know dependency on

play12:16

proprietary tools another downside of AI

play12:18

driven tools is the dependency they

play12:20

create on proprietary platforms like

play12:21

GitHub co-pilot when developers start

play12:23

using these tools they become

play12:24

increasingly reliant on them to generate

play12:26

troubleshoot and optimize their code I

play12:28

know I know there was uh for let's see

play12:30

free for verified students teachers and

play12:32

maintainers of popular open source

play12:34

projects I want I want to say that again

play12:37

free for verified

play12:39

students I want you to ask yourself if

play12:41

you are going to a 4-year University

play12:44

that's going to teach you about data

play12:45

structures where you have to program and

play12:47

create data structures do you think

play12:50

co-pilot is a net benefit or a negative

play12:54

and what do you think that is with the

play12:55

Reliance of them right here I think it's

play12:58

negative

play12:59

depends on you use it you're probably

play13:01

right depends on how you use it if you

play13:03

don't use it it's probably better than

play13:04

if you use it but I I mean you do have

play13:07

to realize that if you type the function

play13:10

quicksort and then you start writing

play13:13

each line will be autocom completed

play13:14

perfectly According to some

play13:16

implementation of quicksort I just think

play13:18

this the dependence thing is kind of an

play13:20

interesting argument which is this is a

play13:23

form of selling you a product now you

play13:26

could argue this is a good form of

play13:27

selling a product I'm not saying it's a

play13:28

good good or bad form I'm just saying it

play13:30

is a form of selling a product and the

play13:32

fact that they're intentionally selling

play13:34

it to students for free there is

play13:36

something about that that feels I'm just

play13:38

saying it feels a little strange okay

play13:41

it's like hey bro just come on it's just

play13:43

a quick line of it's just like a little

play13:45

quick line it's not a big deal you know

play13:46

you're not just hey I wantan to I want

play13:48

you to have a free night out on me okay

play13:50

first drinks on me it's not a big deal

play13:53

don't worry don't

play13:56

worry uh this Pro this creates a problem

play14:00

where the tools fail change their terms

play14:01

of service or become too expensive

play14:03

additionally this uh dependency on AI

play14:05

tools can isolate developers from

play14:06

broader programming communities and open

play14:08

source tools that encourage peer

play14:09

collaboration and knowledge sharing

play14:11

further hindering their growth skill set

play14:13

um I don't know if that I I I can't I

play14:16

can't agree with this one in any sense

play14:18

because I just don't see how that

play14:20

happens the first one's free classic

play14:22

yeah it's really is the first one's free

play14:24

uh classic uh perhaps one of the most

play14:26

concerning effects of AI code generation

play14:28

is that it can create a false sense of

play14:31

expertise among developers a developer

play14:33

might feel proficient in a programming

play14:35

because it can quickly generate or

play14:37

because they can quickly generate code

play14:38

with the help of co-pilot even though

play14:40

they don't fully understand the code

play14:41

this is actually a really really great

play14:43

this is actually a really amazing

play14:45

statement and I never thought about this

play14:47

which is you can most certainly get this

play14:49

idea that you are an expert when you're

play14:51

actually not an expert like if you start

play14:53

using rust and you find that you can

play14:55

start kind of programming a lot of

play14:56

things kind of easy you might you might

play14:58

think that by the way I see I see myself

play15:00

in this article even me who's good

play15:02

enough I kind of feel this I feel this

play15:04

is real uh do do we not feel the uh that

play15:08

way about script kitties too no script

play15:10

kitties are just attempting to cut and

play15:11

paste and do what they got to do right

play15:13

they're not attempting to become

play15:15

programmers as far as I can tell they're

play15:17

just using what they can to make

play15:18

something happen and that's okay like if

play15:21

your goal with programming is just to

play15:23

make a product then you're going to use

play15:24

the least the least friction path right

play15:27

you will always choose the path to where

play15:29

you're trying to learn it's just how it

play15:31

goes so if your only goal is to produce

play15:33

a product that works for people to use

play15:35

you will probably choose the thing that

play15:37

can produce the product as fast as

play15:39

possible you're not thinking about

play15:40

maintenance you're not thinking about

play15:42

all the other stuff you're just choosing

play15:44

the thing that is done so you could you

play15:46

know so if you're using these things I I

play15:48

I I actually really agree with this

play15:49

because I also I also had the exact same

play15:52

problem I was not as good at Lua because

play15:56

I was using it all the time to generate

play15:58

code like co-pilot was just generating

play16:00

the code so I I just wasn't as good uh

play16:02

this can be particularly dangerous when

play16:03

developers move into more complex areas

play16:05

of software engineering like performance

play16:07

optimization concurrency and or security

play16:09

especially security remember the last 10

play16:12

years of software has been Rife with

play16:14

security bugs GitHub has been trained

play16:17

off the last 10 years of software put

play16:19

those two ideas together okay where a

play16:21

deeper understanding of the code is

play16:23

critical without the foundational

play16:25

knowledge developers can make mistakes

play16:26

that are costly in both time and money

play16:28

in short if you are a developer do uh do

play16:31

not let's see if you as the developer do

play16:34

not understand the code do not

play16:35

understand how you got to where you are

play16:37

do not understand how to solve the

play16:38

problem yourself copying and pasting

play16:40

code from an llm and being spoed F the

play16:42

answer is not going to make you a better

play16:43

programmer it's going to make you more

play16:45

reliant on the robot and you will never

play16:47

be able to do anything that the robot

play16:49

can't already do cuz I think I think the

play16:52

problem I have with this takeaway is

play16:54

that why is it bad to rely on the robot

play16:57

right if if people are correct we're

play16:59

inevitably uh always marching towards

play17:01

better and better llms then why is it

play17:04

bad to rely on the robot and that's the

play17:07

question you have to answer because it

play17:09

doesn't matter that I don't like doing

play17:10

that it that's the real question because

play17:13

if if this is true if robots are always

play17:16

going to get better they're going to

play17:17

keep on getting better at the rate

play17:18

they've been getting good at then why

play17:21

does it matter and if you can't answer

play17:23

that question then I don't think I don't

play17:26

think your argument is worth a lot and

play17:28

so even though you handed out all these

play17:30

these these ideas which I think are

play17:32

pretty good which is you know you you

play17:34

have this uh reduced ability to kind of

play17:38

uh you you have this dependency you

play17:40

create a dependency you have a reduced

play17:42

narrow thinking which I think is really

play17:43

good this this narrowed critical think I

play17:45

think is a really good section but in

play17:47

the end you're only solving big problems

play17:48

now you're not solving little problems

play17:50

so why not just have the robot to it why

play17:52

do you care if the robot does it so let

play17:54

me invert it for a quick moment and and

play17:56

try a different approach to this let me

play17:59

let me get my words together the robot

play18:00

can't innovate and innovation without

play18:02

understanding is very difficult and

play18:03

unlikely yeah Fair uh because if the

play18:06

robot makes mistakes uh you should be

play18:07

the one who judges well you could also

play18:09

get an llm to explain errors that happen

play18:12

remember that llms are really good at uh

play18:15

explaining errors and so therefore you

play18:17

could even use an LM to solve your

play18:18

errors yeah I didn't realize this was

play18:20

one of his articles I don't think pirate

play18:22

software is a a hypocrite I think pirate

play18:24

software has done really great things so

play18:26

I don't think so uh disagree I would say

play18:29

it this way one of the

play18:31

worst aspects of programming in general

play18:35

and one of the things that I think is

play18:36

most destructive in people's careers is

play18:39

learned helplessness where the problems

play18:43

and the things you can solve you need a

play18:45

definite answer

play18:47

for I think llms can enhance that

play18:52

problem and so perhaps does it matter

play18:54

you understand all code I don't think it

play18:56

I don't think it does matter that you

play18:57

can that you need to understand all code

play18:59

I think that code that is confusing to

play19:00

you I think it could be really great if

play19:02

you learned how to read it by having an

play19:03

LM explain it to you I don't think that

play19:05

there's anything wrong with that uh

play19:06

maybe that would even help me move

play19:08

faster in code I'm deeply unfamiliar

play19:10

with the real problem comes to right

play19:12

here you don't understand where let's

play19:14

see you don't understand how you got to

play19:15

where you are if you are helpless and

play19:19

you constantly have to rely on something

play19:21

else to tell you every single time the

play19:23

steps you need to take you are creating

play19:25

an unhealthy dependency you are offload

play19:28

in your critical thinking and your

play19:30

ability to solve problems larger than

play19:32

small things in front of you right like

play19:35

you probably know how to filter a list

play19:36

of items based on ID or based on some

play19:38

property you can do that but if you

play19:40

can't see how to set these bigger things

play19:42

up you know you have a blind spot so fix

play19:46

the blind spot do not become helpless

play19:49

for me llms and all this stuff I I don't

play19:51

worry about most of it what I worry

play19:53

about is learned helplessness it's that

play19:55

everything you do this one false sense

play19:58

of false sense of expertise is a form of

play20:00

learned helplessness right dependency is

play20:03

an obvious form of learned helplessness

play20:05

not being able to think uh through

play20:07

problems because you see a solution and

play20:09

then you can only think of a solution

play20:10

through one box is a form of learned

play20:12

helplessness right you you just you turn

play20:15

yourself into a smaller and smaller and

play20:17

smaller and smaller point and I just

play20:18

don't think that that is good flip take

play20:20

that out the

play20:22

name is be novel come up with you know

play20:26

Ponder be inspired do the things that

play20:29

make you great at being creative if

play20:31

you've never like there is something So

play20:34

Glorious about sitting there thinking

play20:35

through a problem and then what feels

play20:37

like a flash you can almost just see the

play20:41

entire layout of kind of what you want

play20:43

to build and then you got to go and

play20:46

build that thing and that's an amazing

play20:48

and great experience and it's something

play20:50

that makes like it it makes it so that

play20:52

you can have really big problems that

play20:54

you can solve and you don't have to feel

play20:56

so small or confined to just like the

play20:58

space you're working in but you feel

play21:00

like anything that you come across you

play21:02

can get to a solution whether or not

play21:04

it's the best solution and that's a

play21:06

great place to be and I'm not saying

play21:08

llms uh will take away or will make you

play21:11

better or worse at that but if you only

play21:13

rely on things to give you the answers

play21:15

all the time it will make you worse the

play21:18

ability to do that yourself is the skill

play21:20

you're after and programming is the

play21:23

expression of that

play21:27

ability the name is the primen

Rate This

5.0 / 5 (0 votes)

Связанные теги
ProgrammationIACompilateurDépendanceHabiletésOutilsGitHubDéveloppeursProductivitéDébat
Вам нужно краткое изложение на английском?