A project is a small set of documents. It resides in one and only one site, to be versioned as a whole at one time. It does not show any subdirectory ; when there are any appendices, those are transitional, for personal use only, not to be referred to.
A problem is a virtual class of projects. It relates a subset of projects together that they may serve some higher cause. Designing a problem is a project, an overview one's big intellectual plans, which evolve along the project themselves. (Using them as directories is the fastest way to create a mess.)
A program is the domain of one's problems. It relates one's research to a community of researchers. It belongs to a tradition : nobody in particular can suffice usually to take care of it. There may not exist any finality to a program ; there may be inconsistencies between the problems it subsumes.
This abstract model has concrete consequences toward one's information architecture. Projects can be seen as the elementary directories, problems as the transition pages of the site of one's portfolio, a program as the entry point of the documents' architecture, coupled with the About page of one's intellectual lifework. What there is, ultimately, is a universe of projects, with a few special ones.
A flat hierarchy of portable projects, seized by size, reduces complexity. Paradoxically, hierarchy without modularization otherwise induces anarchy. For his intellectual work, a researcher usually embarks in a project which usually becomes a problem, even his program.