An unfortunate reality to CMS based web development is that in most cases developers are used to working alone. When working with a CMS most of the programming involved is customization rather than from scratch development, so the need to involve multiple programmers as well as manage and coordinate a development team is minimized.
When a team is involved, a completely different work flow is involved. Proper communication channels, development procedures, code testing constructs, naming schemes, and rules for system architecture must be in place in order for a programming team to work together effectively. Moreover, developers must be well versed in these rules to work in that type of environment effectively.
The rules of a CMS are built to work within that particular system. Isolating modules into packaged pieces that can be installed with the click of a button is a common mode of operation. Within a sound application architecture, the goal is to minimize code replication so that entire logical systems can be altered from a single location over time to prevent maintenance time from growing at the same rate that the site grows.