I think that everything, or almost everything, should be written in the form of a library and that little, almost everything, should enter the code of the application.
Most of the X code of the application can go into myXlibrary or into configuration files.
Another thing that I prefer is to have a lot of small libraries with few dependencies rather than large libraries with a lot of dependencies (especially external ones).
All classes, functions, and function members should be as small as possible.
Last but not least, unlike the basic cpp guidelines (if I remember correctly), I prefer separate classes in different small headers, instead of putting everything in one.
How do you manage the complexity? is this a correct way to do it?