When I took a close look, I saw that they lacked a domain model, or even a common language on the project, and were saddled with an unstructured design.
Could we also take into account here the case for anemic domain models, in the sense that a structure to the project could be provided over such objects (moving the domain logic to the use case classes for example)
Via an use cases driven structure the project would be tightly integrated with the user flows, another fundamental element very important into attaining a comprehensible and maintainable codebase.
(Don't forget the control flow vs task duality here)

