"If you start with reusing code, you will never be able to code anything new but will always rely on copying other people. You will also always copy other people's mistakes without noticing."
I disagree. Not sure in what capacity you are speaking of "starting" (ie. third line or third language), but I find this statement to be (in my experience) false on both ends of the spectrum. Maybe I am just arguing an irresponsible use of "always" and "never". :)
I started with reusing code, by copying BASIC out of books and magazines by hand, I'm sure many of us did, and I've definitely created new code a few times!
It's worth considering that you had to type those BASIC programs yourself. Even if you didn't understand it, you had to look at every line. Compare that to Ctrl-A-Ctrl-C-Ctrl-V.
I'm a CS teacher, and at first, when I give code to students for them to type in / modify, I make it a screenshot just so they CAN'T copy and paste. It takes me quite a bit more time vs. just typing the code and putting up a link, but I really agree that having to type the code in is fairly important.
Slavish copying, then the inevitable debugging; then modifying others programs; then writing ones own things and referring to others code for syntax hints and such. I never really went as far as copying algorithms. At this early stage I never learnt code reuse in the sense of having libraries and such, that probably held me back quite a bit. But then any instruction at that stage would have helped I think.
I disagree. Not sure in what capacity you are speaking of "starting" (ie. third line or third language), but I find this statement to be (in my experience) false on both ends of the spectrum. Maybe I am just arguing an irresponsible use of "always" and "never". :)