in reply to Code re-use: productivity gains vs. skill deprecation

I think that the first, excellent question asked has been very thought provoking, and has generated much discussion.
Is it possible to learn coding fundamentals without coding?
It is very important here to define terms here. You need to define exactly what you mean by coding. To answer the question as it stands, I would say "not usually". This is from looking at my own cognitive experiences learning new programming languages (OK, my head is full of syntaxes and techniques from other environments, but that's why people hire me). I would also suggest that there is a danger of cargo cult programming and all the evils that entails.
Is general knowledge of an algorithm or data structure (such as a linked list) enough to write quality code, or does a developer need to know the implementation details of each algorithm and data structure?
I would definitely say yes. This is what is meant in OO speak by encapsulation. This is a GOOD principle, which leads to loose coupling and high maintainability. What is important here is the interface definition. Before you can call another module, you must understand its interface, and be able to predict results from it without running any code.
  • Comment on Re: Code re-use: productivity gains vs. skill deprecation