6 ms·
"(If you want to use AI to help you solve puzzles, I can't really stop you, but I feel like it's harder to get better at programming if you ask an AI to do the
by postalrat 3y ago
"(If you want to use AI to help you solve puzzles, I can't really stop you, but I feel like it's harder to get better at programming if you ask an AI to do the programming for you.)"
I'd say that whatever "better at programming" is quickly evolving. AI is a tool like high level languages, IDEs, autocomplete or all the different types of code analyzers. How is ignoring a powerful tool like AI going to get you better at programming?
Programmers who think they are better programmers without AI may quickly be replaced with "lesser" programmers who get things done much quicker.
- SimplyUnknown 3y agoMaybe better programmer not so much, but I'd say the spirit of AoC is to crack a puzzle and translate the solution into code. Solving this using LLM will not help you getting better at solving puzzles, solving puzzles, or grasp the main concepts of a programming language. In that sense, ChatGPT is not a pedagogical asset in this particular instance.
- postalrat 3y agoObviously they get to defined whatever better means in the context of AoC. But better at AoC does not mean a better programmer in any way.
- SimplyUnknown 3y agoSurely not, but if you practicing to get better at programming using AoC, LLMs are unlikely to help you.
- deleted 3y ago[deleted]
- lsedgwick 3y agoI think the right context for thinking about the quoted advice is for a person's education. If true beginners didn't ever handwrite a recursion algorithm, a list sorting algorithm, a CRUD application, an assembly interpreter, a neural net forward pass, etc., because they copied the code from an LLM, would they benefit from that? And if it's true for beginners, is there ever a point in one's learning journey where it stops being true and we don't have to learn or practice anything anymore which can be solved by an LLM, or never have to understand new concepts and tools even though the LLM can work with those concepts and tools for us? I think there's a both-and answer for the contest. Maybe have one competition where the unenforceable spirit of it is, don't use LLMs for help, and another one where the challenges are just made... quite harder... so that even people who use the LLMs still need to marshal great ingenuity to use them better than others (e.g. the #1 spot is someone who used RAG and chain-of-thought better than the #2 spot, and also had better intuition of what to trust vs challenge from the LLM outputs).
- Grambles 3y agoI've always liked the premise that you should be competent one level below where you do your daily work. The tools you use should be more efficient for you, not necessarily the only way you can get your work done. If you don't know how to use a drill, you shouldn't use a drill press. By that token, using AI to solve AoC really seems like one would be doing themselves a disservice. You might tell yourself you fully understand what the AI spits out, and maybe you do, but you won't build the same sort of comprehension that you would from solving it yourself. Nor will you retain it for as long.
- falsenapkin 3y agoProgramming != software engineering > Software engineers who think they are better without AI may quickly be replaced with "lesser" software engineers who get things done much quicker. Using AI to program is just ctrl-c ctrl-v software engineering, very clearly not the point of programming competitions. High level tools as you mention don't make you a better programmer, they make you a better software engineer. I think the discussion you're raising is a good one it's just not relevant to a programming competition.
- beepbooptheory 3y agoI know we have seen some recent advancements with the Large Language Models, but I'm pretty sure they still can't, say, generate a working python Flask server for my specific REST API through only some prompts, can they? Because that would be incredible.
- meiraleal 3y agoIf this isn't /s, yes you can easily do that. With tests and doc.
- simonw 3y ago"I feel like it's harder to get better at programming if you ask an AI to do the programming for you" I've been thinking about this for a full year now, and I'm ready to present my opinion: I think AI assistance makes it easier, not harder to get better at programming. Sure, if you're lazy you won't learn anything because you'll get the AI to do all the work for you. But if you're that lazy I imagine you wouldn't have even tried to learn programming without access to AI assistance, so you're still doing better here! If you're curious and dedicated to self-education, LLM assistance is a gift that never stops giving. You have to learn HOW to learn with it first, but once you've figured that out you can really fly with it.
- uvesten 3y agoI’m sure you feel like you’re getting better by working with an AI, but make sure to test your skills without any AI help. The ”illusion of competence” effect can be really strong, and it sneaks up on you without you noticing it.
- polygamous_bat 3y agoI am curious, why is this an illusion? I have experienced the same (or at least similar) feeling of getting better after getting my hands on a search engine like google. I never stopped using a search engine since then to check if I am suffering from this “illusion” you’re talking about. Should we?
- withinboredom 3y agoI seriously suggest getting a book and typing out a listing totally from scratch. It's interesting to actually type out another person's style of solving a problem because not only is it alien feeling to "solve it that way", it's also interesting to physically solve it that way. I did this recently and was surprised to see myself solving the problem "that way" at work. It was much more elegant and more readable than what the AI was suggesting.
- 3y ago
- _proofs 3y agoif i'm trying to practice problem solving, why would i feed my problem into something that's going to spit out -- in the best case -- suggestions depending on the completed-ness of my input, and worse case: a proposed solution. if i'm trying to practice handwriting -- why would i use a type writer, or word processor? i am not sure how using a machine to do the work you're trying to practice makes you better at that practice, since it's doing the.. mechanics.. for you. as another commenter pointed out i feel there is a distinction between programmer vs. software engineer just as there is a distinction between writing and say, novelist. i understand the notion of practicing, and getting better at an evolved workflow for producing results -- but we're practicing foundational skills, not trying to reduce everything simply to achieving results by any means necessary. i feel that producing results without understanding is a short-sighted investment, and not exactly the point of AoC imo.
- TrianguloY 3y agoUsing AI is basically asking your college for the solution. It helps if it's used on the right occasions, but will make you very dependent if abused. It's the same for tools, not gonna lie, but usually you need to understand how to use a tool before using it (and it's better if you know what the tool is doing). Is the difference between telling someone to do something versus asking how to do it.
- grenoire 3y agoThere's a distinction between the short-term economic incentives of using AI (work gets done quicker, more code gets written, output is created faster) versus the long-term personal incentives of not using AI early on. I believe mathematics and various natural sciences benefit from having a complete understanding of the tools, their inner workings, and their potential use-cases within your head. I think programming is similar too. If you are already a skilled programmer who is able to construct complex-and-reliable (engineering incentives) systems with great accuracy and reliability, then AI will add speed to your conquests. However, if you are a beginner who is not clear on what fits where, and how a canoe is built before a cargo ship, then AI will hinder the quality of your work, and eventually put you out of a job because you're just a mere puppet to the tool.
- cproctor 3y agoThis is an insightful comment. I have been thinking about why I prefer CLI-based tools over GUI tools; one important difference is that with CLI the affordances are more in my head than in the tool (though the distinction is fuzzy). I just got a typewriter for my birthday, and have been reflecting on how different writing feels. When I write on my laptop, I process language less in my head and more on the screen--I type scattered fragments and then clean them up into sentences and paragraphs. Writing with the typewriter is slower and much harder to edit, so I need to do more composition in my head. I lose some of the affordances of the external medium (including whatever AI might contribute), but necessarily devote more attention to interrogating and composing the ideas.
- kaba0 3y agoThat’s like saying that going to the gym is worthless, because you can rent a forklift which can lift so much more weight without even a sweat. The human brain/body requires resistance/challenges, otherwise it will always choose the lazy road and won’t improve.
- miki123211 3y agoThis same sentiment we now have against AIs has existed in the past, mostly against what was then called "high-level" languages, that is C, Pascal and maybe C++. Similar opinions were once held against memory-wasting languages (those with garbage collection) and languages that are too easy (the ones with dynamic typing and no pointers). Programmers that write "slow C" instead of "fast assembly" were once regarded as lazy and incompetent, same for programmers that write "slow Java instead of fast C" or "slow Python instead of fast Java."
- mountaineer 3y agoRight, the policy seemed fine to me until it got to this part. AI can be a way to get better at programming too. When I was learning Elixir, I watched José Valim work through the AoC puzzles[0] and followed along, typing in what José had and then working to understand it. José was doing the programming but it helped me get better at programming I think. [0] https://www.twitch.tv/collections/YDM6eKu6bhV1Nw https://www.twitch.tv/collections/YDM6eKu6bhV1Nw
- talideon 3y agoIn that case, you're not actually competing in the competition, and that kind of thing _is_ useful. However, it'd be very much against the spirit of the competition to take those answers and use them as your own, and that's really what the policy is getting at.
- mountaineer 3y agoAgreed, that was the sentiment I was aiming for, separating the competition aspect from the getting better at programming aspect. The policy with respect to competition seems fine. The follow-on in parens to the policy was the part I was referring to: > (If you want to use AI to help you solve puzzles, I can't really stop you, but I feel like it's harder to get better at programming if you ask an AI to do the programming for you.)
- drusepth 3y agoI remember older programmers making fun of me for using an IDE and autocomplete when I was learning to code as a kid, claiming I'd never learn if I relied on tools like that to "do the job for me". This feels very similar.
- danjoredd 3y agoFor the same reason giving a 5 year old a calculator to "learn" addition doesn't teach them math. You still need to know why shit works in order to use it in a fully educated way. Otherwise you are just "putting magic words into the text editor" and your code will be held together with bailing wire and chewing gum. For day-to-day use, as long as you know what the code is doing when you run it, its fine. But to get to the point where you understand what the code is doing, you have to have written code manually.
- tmtvl 3y ago> For day-to-day use, as long as you know what the code is doing when you run it, its fine. I think that'd exclude most Python, Ruby, Java, JS, Haskell,... developers. Heck, it'd even exclude a bunch of C developers who don't appreciate the fact they're not working on a PDP-11.
- danjoredd 3y agoIncorrect. While you might not understand the lower level systems, as long as you understand the logic of it you are good to go. Just plopping in code from ChatGPT or even Stack Overflow without vetting it is a dangerous game. You have to know what the code does before using it, or else the likelihood of introducing security vulnerabilities and bugs goes WAY up.
- drdaeman 3y ago> 5 year old a calculator to "learn" addition doesn't teach them math Yes, using machines to give an answer, without providing any explanations of the process is not learning. One cannot generally give a young kid a calculator and expect them to learn how adder in the calculator's ALU works. However, using machines to get an answer that you know how to get to is beneficial. No learning is involved in either process, and it saves time. So if you give a kid, who already knows well how to perform addition, understands the principles, and knows the properties, a calculator to quickly get through their homework, it merely saves their time. You know, just like most people don't exactly like to write boilerplate code that they can type in their sleep. And using machines that can provide explanations how they got to the answer then reading it is learning. And learning by example could be powerful in certain situations - e.g. when one already knows some stuff, but needs some hints how to apply it to a different problem. Surely, just asking the machine to solve a puzzle is unlikely to get one anywhere. Asking the machine to guide towards a solution might be very beneficial (if it manages to get things right, of course).
- manicennui 3y agoAt best CodeGPT helped semi-incompetent developers who relied on SO to do their jobs work a little faster. No one competent is in any danger.
- ebiester 3y agoWhat if I'm looking to practice my ability to augment myself using AI? (This isn't theoretical - I've done Advent of Code a few times, but I don't get to code too much these days. I am curious about its abilities and having a fun way to approach it might be a reason to do Advent of Code.) That said, I'm not trying to push to the top of the leaderboard.