dwyl / technology-stack

🚀 Detailed description + diagram of the Open Source Technology Stack we use for dwyl projects.
284 stars 26 forks source link

`GitHub Copilot` Your AI Pair Programmer? `#discuss` #119

Open nelsonic opened 1 year ago

nelsonic commented 1 year ago

A non-coder (learning to code) friend messaged me this morning with the following question:

image

"I just read an Economist article about this. I'd be interested to get your thoughts."

https://github.com/features/copilot 🤖

I'm on the record https://github.com/nelsonic/nelsonic.github.io/issues/733 as saying that I think AI will replace most "knowledge work" jobs, or at least the "junior level" ones in the coming years. GitHub Copilot and ChatGPT are only the very beginning. ⏳ AI isn't science fiction, it's inevitable.

I was an early Alpha tester for Copilot a while back (invited by GitHub as I appear to have amassed quite a few thousand hours of JavaScript experience over the years ... who would have thunk it? Deliberate Practice pays off ... eventually! ⏳)

I found it more frustrating/annoying than useful so I stopped using it. Like an overly enthusiastic puppy that keeps getting in the way instead of being useful. But as with all things in Tech they keep iterating and eventually become useful. I haven't looked at it this year simply because I haven't had time.

The writing is very much on the wall: people who are "average" at their job or just don't have much experience will not be required in most companies because a handful of excellent engineers will use "AI" (Language Learning Models: https://www.mlq.ai/what-is-a-large-language-model-llm ) to assist in writing the "boring" bits of code. i.e. any "CRUD" or tests that are generic. We will reach the point where a skilled (technically literate) Product Owner and one (senior) engineer can do the work a team of 10+ people because the hardest part is defining the problem that needs to be solved. As we've seen recently ChatGPT can write SQL queries: https://news.ycombinator.com/item?id=34521149 So given access to the dataset the junior DataScientist job might be at risk too.

The brilliant @0atman put it superbly in his recent No Boilerplate episode: "1,000 AI interns for everyone": https://youtu.be/glpR1MD1UoM

1000 AI interns

Read through the comments on YouTube, they are insightful. If you don't already subscribe to his channel, do it now. You won't regret it!

Bottom line is this: tools like GitHub Copilot will be the "intern" that can do research and make suggestions for you. But it won't be the 20+ year experienced full-stack engineer with battle scars and Design Experience that knows What to build and what to reuse from elsewhere. The best engineers know what code not to write. Unless Copilot also knows how to evaluate 3rd Party Libraries (which isn't a stretch given the data they have from @dependabot ...) and know when to resuse a function that is available from a dependable/maintained lib ... I'd say that the job of the senior engineer is "safe" for now.

GitHub Copilot is the How not the "Why?" or "What?" Understanding the organisation/industry problems and teasing out requirements is still going to be the "hard" part. Crafting great UX will eventually be automated, but the responses of AI tools are still to generic to compete.

seaneady commented 1 year ago

Thanks @nelsonic ! An insightful perspective on a fascinating topic.

nelsonic commented 1 year ago

Interesting discussion about someone embracing GitHub Copilot: https://news.ycombinator.com/item?id=34579579

I’m still very much undecided on this. On the one hand someone learning to code can get a lot of helpful hints. I would have found that useful when I was learning in the pre-stackoverflow days… ⏳👴 But as the top comment on HN points out: it’s going to make the copy-paste (but didn’t understand) crisis much worse. If lazy programmers use it to write code for them they haven’t solved the problem themselves and don’t understand the solution. That means they cannot maintain the code themselves and GitHub Colilot becomes a permanent crutch. 🩼

Think about it this way: Imagine you are someone who knows how to cook a few basic dishes but instead you live off takeaway/delivery. You eat fancy sushi 🍣 🍱, Thai and other cuisine that you have no idea how to make. One day you are stuck without your trusty Food Delivery App and have to make dinner from scratch for other people e.g a dinner party or family event … you have all the ingredients in front of you but no recipes because the internet is unavailable. Where do you even start? 🤷‍♂️ Can you make it up on the spot? Of course not! You’re just gonna have rice with a vegetables 🥕... It will be “OK” but disappoint your “stakeholders”. 🫠

this is obviously a hypothetical situation for most people writing code. Like when am I ever going to be writing code without access to the internet? Well, I’ll tell you where: in a job interview. 💭 When you most need to show your skills you won’t have them. “Oh, but can I just install copilot?” - you’d be laughed out of the building! Another far more common situation where copilot would fail miserably is in debugging a production bug in code that it wrote! Copilot (or any of these “AI”/ML tools) only has a superficial “understanding” of what it has written. When something inevitably goes wrong it won’t “know” where to even start unpicking the issue.

For now I wouldn’t want a “junior engineer” on my team to use Copilot because they wouldn’t have the difficulty and resulting learning + muscle memory of writing the code from scratch.

It’s like the up-coming pandemic of children using ChatGPT to write their high school essays for them. Why would I read great expectations if I can just ask ChatGPT to write a book summary for me?! This will make the lazy kids muuuuch lazier and the kids who understand the value of effortful but joyful and rewarding learning 10x more valuable.

However, for someone has already put in their Ten Thousand Hours and understands the problem domain well and just needs help with syntax, it could be useful. đź’­

I still think I prefer to hand-write the code. At the most I would use Copilot to sense-check and help with formatting or using more idiomatic expressions. đź’­