I'm not a "programming teacher" so will only add to the question - for which I really have no answer.
First, I think the basic comment is quite accurate - not only for "programming" texts but for those for such tools as Office and Photoshop. The situation is worse for magazines - a typical Photoshop "tutorial" spends about half the time just giving a list of filters and parameter settings without giving any idea as to the "why" behind the settings.
Second, for OOP, there is an additional problem (though the Alice texts are pretty good here - just rather low level, which is also appropriate considering their overall goal). All too frequently, after repeating the litinay of OOP buzzwords, a "tutorial" will then present a largely proceedural example. One of the good features of Java (vs. C++ or VB) is that this is a bit harder to do than in C++ or VB. There may even still be cases (especially with databases) where a proceedural approach
is preferable - but
don't call those solutions "object oriented."
Regarding separating design and actual coding - I think that is a problem of a type that is typical for engineering in general. Both the concept word and the implementation are important - and if done right, can easily be done by groups in widely separated geographical locations, which is certainly the current practice. (Hold out for your companion group being located in a nice phyical location.
)