You can learn how to create clean, readable methods and classes with a book (1).
You can learn how to refactor old methods and classes with a book (2).
You can learn how to organize a small team to allow fast iterations with many books.
But building a project lasting more than a few months with constant changes in the requirements, new developers every month, new SDKs and frameworks every 3 days, without the code rotting to death and everything going out of control is a different story, at least for me.
I guess you just learn by watching old guys do what they do after decades of experience...unless someone has a magic book for me?
(1) http://www.amazon.com/Clean-Code-Handbook-Software-Craftsman...
(2) http://www.amazon.com/Refactoring-Improving-Existing-Addison...
I was lucky that this was one of the first things I had learned as a developer out of school. It was a little different because the projects were small enough to be solo, but it was humbling because all of the mistakes were my own.
http://www.amazon.com/Practical-Object-Oriented-Design-Ruby-...
This is a very good book on subject, very clear:
http://www.amazon.com/Practical-Object-Oriented-Design-Ruby-...