I came away from my Java project with some unstructured ideas about what I liked and didn't like about Java .. what I liked and didn't like about software development for that matter. Recently I sprung for a book that is helping me put it in perspective, Component Software - Beyond Object-Oriented Programming. A good discussion (441 rather dense pages) about what might make seperately deliverable software componets work. (As a subtext, I wonder if Microsoft is on to something when they hire these guys.)