This guy definitely codes, I was nodding nearly every paragraph.<p>Redundancy vs dependencies is a constant battle, even internally or inside your own head.<p>Many times it depends on the project, team size and ability of libraries to be maintained whether budget, time or goal of the project and its lifeline.<p>For instance in gaming, you might have common libs for product purchasing, profile systems, networking, data, serialization, and platform libs to abstract calls. But systems like game objects, physics, gameplay and ui aren't as lib-able unless it is a series of the same type of game or system.<p>It is better sometimes to just get it out, prototype it and iterate to ship, then harvest and integrate useful/obvious items into dependencies/libraries for the next one. If you are always organizing to dependencies first, you will end up doing lots of unnecessary optimization and sometimes impact shipping speed.<p>The balance on this is a tough one to learn and changes as you grow more experienced.