Writing code that someone else has already shown you is not programming.
Programming is writing your own code to solve your own unique challenges for your individual project.
I wanted to point out those 2 sentences because everyone tells me, and not just me, that you shouldn't reinvent the wheel, you shouldn't write what someone else already has written, to save time, and at some cases to save money.
How would you respond to this statement?
Yes, code reuse and not re-inventing the wheel are really important. But if someone's use of "tutorials" is not to learn from the tutorial, but to copy+paste the code and then smush it into place in their own projects, regardless of how well it fits, that's not actually learning the concept the tutorial is teaching. Sometimes people say with English, "Say it in your own words" to make sure you understand something and aren't just rehashing what someone else said. Well, if you understand the concept a tutorial teaches, you should be able to "write it in your own code" even if you choose not because of time/money/labor costs.
Copy+pasting tutorial code to help you learn the tutorial - compiling the tutorial's code and then modifying it to see how it works - is perfectly fine. Experimenting with code you don't understand is a good tool to help you understand. But googling for code to copy+paste when you encounter a challenge in your own non-practice projects is not fine, for several reasons:
A) It teaches you to avoid creatively thinking up solutions yourself, and instead using other people's code.
B) It's almost never a perfect fit, so it'll have to be kinda duck-taped together, likely resulting in bugs.
C) You won't actually understand the code, and since you'll need to modify to expand it's capabilities, you'll likely introduce bugs.
D) If you want to sell your game (or even just release it for free...), you'll have licensing issues over the copyright of the code you didn't write.
If there's a problem you don't understand, yes, researching the problem is very good! Trying to create your own solution without knowledge isn't good, but just copying someone else's solution without understanding it also isn't good. Using third party libraries or whatever is fine (even, and especially, if the 3rd party libraries make up 99% of your project), you aren't required to learn how the libraries work inside, but your game that interacts with those libraries shouldn't be just a frankenstein of sewn together flesh from other people's projects or tutorials. The code that you write, should actually be written by you.
If I'm using a 3rd party library, and using functionX(), I don't need to know how functionX() is implemented, but I absolutely shound understand what functionX() does. Otherwise programming just becomes alchemy ("If I mix X and Y, then Z is magically produced. But I don't know why, that's just the way I've "learned" (copied) it").
I'm probably not wording this properly. Using 3rd party code (libraries, tutorial/article code, code snippets from forums) is great! But make an attempt to understand programming, even if you don't have time to learn how every piece of code works, at least you should know how the code you yourself are writing works. Using 3rd party libraries is great. Copying a code snippet that uses 3rd party library, and being unable to rewrite that code snippet in your own code means you don't actually know how to use the 3rd party library.
Now, some amount of copy+pasting from tutorials is part of the learning process, especially for new programmers. The distinction I'm trying to make is, copy+pasting and experimenting with it to understand it is fine, copy+pasting and then just moving on to the next part of your project without even making an attempt to understand it, isn't fine. If that happens in a few places, well okay, you'll learn those pieces of code anyway over time. But if the entire project is like that, then that's not actually learning to program.
If someone needs a tutorial that says, "How to make my specific videogame, with feature X, Y, and Z", then they need to learn how to actually program. Part of that programming process is learning how to break down projects into tasks and subtasks so you can wrap your mind around it and code what you can yourself, researching problems you don't know how to solve, and using the acquired knowledge to write the solution in a way that meshes seamlessly with the rest of your code.
(Bleh, it takes me seven paragraphs to write what someone else could probably explain in two sentences)