This short video from a major player in the coding sphere (JetBrains) has a remarkably good take on when and where AI in coding has its uses especially in the early stages of learning to code. Of...
This short video from a major player in the coding sphere (JetBrains) has a remarkably good take on when and where AI in coding has its uses especially in the early stages of learning to code. Of course they're pushing their own Academy and products, however that doesn't dilute the importance of their take.
To put words in their mouth, it's best if you actually learn to code and use your tools, and only ever ask the AI to do something you know how to do yourself, especially when starting out. Later, when you're more confident and better at coding, you could integrate AI more intelligently into your tool chest.
I don't disagree with the conclusion, but I feel the two examples given were pretty unfair. Student B already had programming experience, and thus was able to start writing code without relying on...
I don't disagree with the conclusion, but I feel the two examples given were pretty unfair. Student B already had programming experience, and thus was able to start writing code without relying on a third-party resource. Her use of auto-complete seems completely appropriate.
Student A, meanwhile, was completely new. She started on the right track, probably with prompting from the study, as she wrote: "Help me to understand how to solve this task WITHOUT giving me the solution". But then she just... ignored the explanation, and started copy/pasting code.
This isn't exactly uncommon, as novices do this from Stack Overflow in exactly the same way. However, the AI answer was no worse than your typical SO post. In fact, it was far better. The explanation was tailored to the problem, went over the needed concepts (incrementing variables, while loops), and gave some generic syntax for those constructs. Exactly as asked, it provided the building blocks but required the learner to put them together. If confused, the student could have probed further into any one of these points.
However, as Student A didn't even read the LLM text, she never evaluated the learning capability of this system. To use this as an example for all new learners feels one-sided, or at least I hope it is. Whether you're learning from a book, a Stack Overflow post, or an AI chat, you still need to engage with the content to absorb the material.
Maybe there's something about chatbots that encourages people to skim more often. Or maybe the temptation to just copy is too much for people. But I would guess that being a motivated learner is still the most important variable in this equation.
You have a point. I know for me it wasn't until I buckled down and forced myself to engage with the explanations proper that I started to gain any skill at coding, and that was very much pre-AI...
You have a point. I know for me it wasn't until I buckled down and forced myself to engage with the explanations proper that I started to gain any skill at coding, and that was very much pre-AI and some of it was pre-readily-available-internet as well. It was tough fighting my ADHD, but I needed hands-on trial and error as well, I just made sure that my trial and error remained in scope. Learning scope was truly the hardest part.
I just don't know. When I was in college the primary coding instructor made us use Notepad when learning Java. I understand why she did this, but really I don't think it taught us much of anything...
I just don't know. When I was in college the primary coding instructor made us use Notepad when learning Java. I understand why she did this, but really I don't think it taught us much of anything about programming concepts. Sure, I could eventually write out all that boilerplate and the imports without looking them up, but that doesn't translate to other languages and it didn't make me better at writing a for loop.
Is this more like not letting kids use calculators in elementary school or is it more like forbidding use of an ide? Right now it looks to us like the former, but things are changing so quickly I'm not confident it's going to stay that way.
I also learned Java (from a book) with Notepad, but for me the benefit wasn't about Notepad per se, but more in using the command line javac/jar etc directly and not having that stuff hidden...
I also learned Java (from a book) with Notepad, but for me the benefit wasn't about Notepad per se, but more in using the command line javac/jar etc directly and not having that stuff hidden behind the magic buttons in an IDE. I think if I'd used an IDE from the start, I would've had a harder time understanding things like the classpath, jar structure, and compilation workflow; and I also would've taken a lot longer to get comfortable with the command line environment and missed some of those benefits.
Now I live in Emacs and use the command line for all sorts of things, but at this point it's a matter of preference, I can still hop to an IDE if that's where the best tooling is for whatever I'm working with.
I definitely agree with that. Java performs a lot of magic under the hood that is worth understanding. Even for web design, starting with an index.html and slowly pulling in CSS and JavaScript...
for me the benefit wasn't about Notepad per se, but more in using the command line javac/jar etc directly and not having that stuff hidden behind the magic buttons in an IDE.
I definitely agree with that. Java performs a lot of magic under the hood that is worth understanding.
Even for web design, starting with an index.html and slowly pulling in CSS and JavaScript files can give you a much better understanding of how these things work together. I feel those starting in bootcamps with React are missing out on some foundational knowledge.
Similarly, when I onboard new moderators on reddit, I go through the basics of how the site and tooling works first. This is how to remove a comment, write a removal message, and disclose it as a mod. Later, I introduce the tooling to automate all of that into one step. It's important that they understand what's happening under the hood, so they can fix it or make changes when the need arises.
For some things, I believe a bottom-up approach is too difficult to get started with. Nobody learns how to use a computer by programming an EEPROM. But for a lot of skills, it does seem the appropriate starting point.
I tend to struggle with the balance of using LLMs for assistance, vs relying on them because I don't feel like thinking. I've notice the latter happens when I should really just step away and go...
I tend to struggle with the balance of using LLMs for assistance, vs relying on them because I don't feel like thinking. I've notice the latter happens when I should really just step away and go to bed.
I'm self taught over 10+ years, so I don't have professional experience to draw from. I find myself thinking of the solution to the problem in my head, but then asking the LLM for a solution and comparing. I've realized lately if it can't give me a straightforward answer, I'm probably approaching the problem incorrectly (square peg, round hole).
I do find them very useful as a glorified search engine. I don't know if I've lost the ability to search by keywords, but it's so difficult to find anything mildly obscure these days.
I've noticed the same thing (if I'm offloading more, I should stop for the day). Personally this was one of the things that first made me realize the genuine utility of the LLMs, was just doing...
I've noticed the same thing (if I'm offloading more, I should stop for the day).
do find them very useful as a glorified search engine. I don't know if I've lost the ability to search by keywords, but it's so difficult to find anything mildly obscure these days
Personally this was one of the things that first made me realize the genuine utility of the LLMs, was just doing basic search. Having a tool that can search based on a concept is incredible. It solves one of the inherent flaws of keyword based search - if you're just starting to learn a new topic, you don't even know the correct vocabulary for the things you're trying to learn. On top of that, having the ability to refine the search (eg "that's not quite it, it was more like X and less like Y") feels way more powerful than just trying different keywords.
It's also able to search 100s of results and find me the most relevant basically instantly. I'll always check the source it pulled from, unless it's widely available knowledge. For example: "Can...
It's also able to search 100s of results and find me the most relevant basically instantly. I'll always check the source it pulled from, unless it's widely available knowledge.
For example:
"Can penguins fly?" has a very straightforward answer, with the correct answer replicated in its training set.
vs.
"How do I use this library's function, but the new version not the old one?" it's likely going to get the answer wrong, unless I tell it explicitly to search online. Even then, it's better to just read the relevant documentation directly.
The biggest issue, however, is I end up missing context or solutions that may be in another part of the documentation. I could be beating my head into a wall trying to solve something a specific way, but it turns out there's a way better way - if I just RTFM.
That's my primary concern with AI. The few times I've begun to lean on it I find it so quickly sanding off my hard-earned edges. My major use case for it at work is to generate corpo-blather for...
That's my primary concern with AI. The few times I've begun to lean on it I find it so quickly sanding off my hard-earned edges. My major use case for it at work is to generate corpo-blather for customers when I want to shoo them away but not have the leave a negative review. So far it does a pretty excellent job of that. But now I find it really hard to write soothing banalities to customers on my own, and I've had to force myself not to use the tool except as a last resort.
Personally I kind of skipped the whole doing things the non-LLM way throughout my process, really makes me constantly feel like something is missing but at the same time everyone is encouraging...
Personally I kind of skipped the whole doing things the non-LLM way throughout my process, really makes me constantly feel like something is missing but at the same time everyone is encouraging it. It does not help that for a novice coder the amount of borderline wrong information is actively hostile; I block geeks4geeks and freecodecamp from my search results.
Even something supposedly "beginner friendly" like python has docs that are really hard to navigate and extract something useful. (rust does this better, imo, followed by java). I do get that people cut their teeth on forums like stack overflow but really some few individuals just turn off newcomers (telling people to RTFM is fully justified but honestly it's a separate problem in async communication where one can spam)
At the same time, even my undegraduate computer science curriculum didn't guide me through making design judgement (like in the video, explaining why you use a binary tree over a linked list). I went through a whole independent research on whether there exists such a teaching on designing programs, and after a year I yield that it can only be done through trial and feedback from someone more senior. Kind of a depressing sink-or-swim thing imo, either you come out the other end and "get it" or you don't.
Any particular pointers on why these two are bad (for the uninitiated)? G4G has a slight SEO spam vibe to me but I thought it seemed decent overall, while I was under the impression FCC was...
geeks4geeks and freecodecamp
Any particular pointers on why these two are bad (for the uninitiated)? G4G has a slight SEO spam vibe to me but I thought it seemed decent overall, while I was under the impression FCC was reasonably well-regarded.
it's personal preference mostly. G4G is indeed SEO driven, and I find it not useful if I try to go a bit deeper; I prefer Baeldung for explaining CS concepts. FCC has a lot of care put into it and...
it's personal preference mostly. G4G is indeed SEO driven, and I find it not useful if I try to go a bit deeper; I prefer Baeldung for explaining CS concepts. FCC has a lot of care put into it and the most valuable thing is the community you can ask questions. I just find the tutorials of FCC tend to lead you into handholding tutorial hell, in which you get really lost when you try to do things extending from their tutorials; it does assume a lot of background knowledge. personally i prefer something that would be a bit wider - introduce libraries and their purpose/potential uses, but I've yet to find one (the awesome-repos are kind of hoarding for the sake of it rather than curation with reviews)
Baeldung looks great, thanks for the rec! And that makes sense about the other two; I've never gone more than a page or two deep on G4G and a lack of useful depth is what I'd expect from an...
Baeldung looks great, thanks for the rec! And that makes sense about the other two; I've never gone more than a page or two deep on G4G and a lack of useful depth is what I'd expect from an SEO-driven site. As for FCC, I haven't actually used it yet, I just know it by reputation and have poked around a bit. Good to have some perspective here.
Baeldung has saved me numerous times on Java Spring Boot complexities, I highly recommend it. They get into oauth, though how helpful that is depends on your setup.
Baeldung has saved me numerous times on Java Spring Boot complexities, I highly recommend it. They get into oauth, though how helpful that is depends on your setup.
Python started out fairly simple, but it's a pretty complicated language nowadays. Asking an LLM questions seems like a good source of hints as long as you don't trust the answers and verify them...
Python started out fairly simple, but it's a pretty complicated language nowadays.
Asking an LLM questions seems like a good source of hints as long as you don't trust the answers and verify them another way.
There are for sure better ways to learn to code than just RTFM as it work. Learning HOW to read the manual is actually pretty paramount. It's something that's not really taught. Also this book on...
There are for sure better ways to learn to code than just RTFM as it work. Learning HOW to read the manual is actually pretty paramount. It's something that's not really taught.
This short video from a major player in the coding sphere (JetBrains) has a remarkably good take on when and where AI in coding has its uses especially in the early stages of learning to code. Of course they're pushing their own Academy and products, however that doesn't dilute the importance of their take.
To put words in their mouth, it's best if you actually learn to code and use your tools, and only ever ask the AI to do something you know how to do yourself, especially when starting out. Later, when you're more confident and better at coding, you could integrate AI more intelligently into your tool chest.
Now if we could just convince management...
I don't disagree with the conclusion, but I feel the two examples given were pretty unfair. Student B already had programming experience, and thus was able to start writing code without relying on a third-party resource. Her use of auto-complete seems completely appropriate.
Student A, meanwhile, was completely new. She started on the right track, probably with prompting from the study, as she wrote: "Help me to understand how to solve this task WITHOUT giving me the solution". But then she just... ignored the explanation, and started copy/pasting code.
This isn't exactly uncommon, as novices do this from Stack Overflow in exactly the same way. However, the AI answer was no worse than your typical SO post. In fact, it was far better. The explanation was tailored to the problem, went over the needed concepts (incrementing variables, while loops), and gave some generic syntax for those constructs. Exactly as asked, it provided the building blocks but required the learner to put them together. If confused, the student could have probed further into any one of these points.
However, as Student A didn't even read the LLM text, she never evaluated the learning capability of this system. To use this as an example for all new learners feels one-sided, or at least I hope it is. Whether you're learning from a book, a Stack Overflow post, or an AI chat, you still need to engage with the content to absorb the material.
Maybe there's something about chatbots that encourages people to skim more often. Or maybe the temptation to just copy is too much for people. But I would guess that being a motivated learner is still the most important variable in this equation.
You have a point. I know for me it wasn't until I buckled down and forced myself to engage with the explanations proper that I started to gain any skill at coding, and that was very much pre-AI and some of it was pre-readily-available-internet as well. It was tough fighting my ADHD, but I needed hands-on trial and error as well, I just made sure that my trial and error remained in scope. Learning scope was truly the hardest part.
I just don't know. When I was in college the primary coding instructor made us use Notepad when learning Java. I understand why she did this, but really I don't think it taught us much of anything about programming concepts. Sure, I could eventually write out all that boilerplate and the imports without looking them up, but that doesn't translate to other languages and it didn't make me better at writing a for loop.
Is this more like not letting kids use calculators in elementary school or is it more like forbidding use of an ide? Right now it looks to us like the former, but things are changing so quickly I'm not confident it's going to stay that way.
I also learned Java (from a book) with Notepad, but for me the benefit wasn't about Notepad per se, but more in using the command line
javac/jaretc directly and not having that stuff hidden behind the magic buttons in an IDE. I think if I'd used an IDE from the start, I would've had a harder time understanding things like the classpath, jar structure, and compilation workflow; and I also would've taken a lot longer to get comfortable with the command line environment and missed some of those benefits.Now I live in Emacs and use the command line for all sorts of things, but at this point it's a matter of preference, I can still hop to an IDE if that's where the best tooling is for whatever I'm working with.
I definitely agree with that. Java performs a lot of magic under the hood that is worth understanding.
Even for web design, starting with an index.html and slowly pulling in CSS and JavaScript files can give you a much better understanding of how these things work together. I feel those starting in bootcamps with React are missing out on some foundational knowledge.
Similarly, when I onboard new moderators on reddit, I go through the basics of how the site and tooling works first. This is how to remove a comment, write a removal message, and disclose it as a mod. Later, I introduce the tooling to automate all of that into one step. It's important that they understand what's happening under the hood, so they can fix it or make changes when the need arises.
For some things, I believe a bottom-up approach is too difficult to get started with. Nobody learns how to use a computer by programming an EEPROM. But for a lot of skills, it does seem the appropriate starting point.
I tend to struggle with the balance of using LLMs for assistance, vs relying on them because I don't feel like thinking. I've notice the latter happens when I should really just step away and go to bed.
I'm self taught over 10+ years, so I don't have professional experience to draw from. I find myself thinking of the solution to the problem in my head, but then asking the LLM for a solution and comparing. I've realized lately if it can't give me a straightforward answer, I'm probably approaching the problem incorrectly (square peg, round hole).
I do find them very useful as a glorified search engine. I don't know if I've lost the ability to search by keywords, but it's so difficult to find anything mildly obscure these days.
I've noticed the same thing (if I'm offloading more, I should stop for the day).
Personally this was one of the things that first made me realize the genuine utility of the LLMs, was just doing basic search. Having a tool that can search based on a concept is incredible. It solves one of the inherent flaws of keyword based search - if you're just starting to learn a new topic, you don't even know the correct vocabulary for the things you're trying to learn. On top of that, having the ability to refine the search (eg "that's not quite it, it was more like X and less like Y") feels way more powerful than just trying different keywords.
It's also able to search 100s of results and find me the most relevant basically instantly. I'll always check the source it pulled from, unless it's widely available knowledge.
For example:
"Can penguins fly?" has a very straightforward answer, with the correct answer replicated in its training set.
vs.
"How do I use this library's function, but the new version not the old one?" it's likely going to get the answer wrong, unless I tell it explicitly to search online. Even then, it's better to just read the relevant documentation directly.
The biggest issue, however, is I end up missing context or solutions that may be in another part of the documentation. I could be beating my head into a wall trying to solve something a specific way, but it turns out there's a way better way - if I just RTFM.
That's my primary concern with AI. The few times I've begun to lean on it I find it so quickly sanding off my hard-earned edges. My major use case for it at work is to generate corpo-blather for customers when I want to shoo them away but not have the leave a negative review. So far it does a pretty excellent job of that. But now I find it really hard to write soothing banalities to customers on my own, and I've had to force myself not to use the tool except as a last resort.
Personally I kind of skipped the whole doing things the non-LLM way throughout my process, really makes me constantly feel like something is missing but at the same time everyone is encouraging it. It does not help that for a novice coder the amount of borderline wrong information is actively hostile; I block geeks4geeks and freecodecamp from my search results.
Even something supposedly "beginner friendly" like python has docs that are really hard to navigate and extract something useful. (rust does this better, imo, followed by java). I do get that people cut their teeth on forums like stack overflow but really some few individuals just turn off newcomers (telling people to RTFM is fully justified but honestly it's a separate problem in async communication where one can spam)
At the same time, even my undegraduate computer science curriculum didn't guide me through making design judgement (like in the video, explaining why you use a binary tree over a linked list). I went through a whole independent research on whether there exists such a teaching on designing programs, and after a year I yield that it can only be done through trial and feedback from someone more senior. Kind of a depressing sink-or-swim thing imo, either you come out the other end and "get it" or you don't.
Any particular pointers on why these two are bad (for the uninitiated)? G4G has a slight SEO spam vibe to me but I thought it seemed decent overall, while I was under the impression FCC was reasonably well-regarded.
it's personal preference mostly. G4G is indeed SEO driven, and I find it not useful if I try to go a bit deeper; I prefer Baeldung for explaining CS concepts. FCC has a lot of care put into it and the most valuable thing is the community you can ask questions. I just find the tutorials of FCC tend to lead you into handholding tutorial hell, in which you get really lost when you try to do things extending from their tutorials; it does assume a lot of background knowledge. personally i prefer something that would be a bit wider - introduce libraries and their purpose/potential uses, but I've yet to find one (the awesome-repos are kind of hoarding for the sake of it rather than curation with reviews)
Baeldung looks great, thanks for the rec! And that makes sense about the other two; I've never gone more than a page or two deep on G4G and a lack of useful depth is what I'd expect from an SEO-driven site. As for FCC, I haven't actually used it yet, I just know it by reputation and have poked around a bit. Good to have some perspective here.
Baeldung has saved me numerous times on Java Spring Boot complexities, I highly recommend it. They get into oauth, though how helpful that is depends on your setup.
Python started out fairly simple, but it's a pretty complicated language nowadays.
Asking an LLM questions seems like a good source of hints as long as you don't trust the answers and verify them another way.
There are for sure better ways to learn to code than just RTFM as it work. Learning HOW to read the manual is actually pretty paramount. It's something that's not really taught.
Also this book on Game Programming Patterns by Bob Nystrom and his other book on Crating Interpreters may not give you the template to software architecture but it may give you some good thoughts on how to think about the code itself.