I always like these kinds of questions, and I ask it about myself all the time. For me, the best way to gain the information you are looking for was to work with/learn from other more experienced developers and see what they do. I also browse code on projects that are more "mature" and have industry experienced professionals writing it. Take a look at some major open source projects in the language of your choice. You may be able to pick up some patterns and ideas that make you say "Oh, I wouldnt have thought to do it this way". It might also help you if when you feel you have some problem code to post it here and ask for input. I have seen many devs on here give some valuable feedback on how to organize or refactor things.
Sorry I don't have any books or visual aids that have helped me. =(
Generally though, books on software architecture and "best programming practices" type articles would be something to look for.