Monorepos are gaining popularity among highly-scaled dev teams as they offer benefits such as simplified dependency management, easier code sharing, improved visibility and collaboration, streamlined releases, and standardization. However, managing a monorepo can introduce challenges like handling large repositories, maintaining clean main branches, resolving merge conflicts, avoiding bad coding practices, and dealing with noisy build notifications. To manage monorepos effectively over time, best practices include using selective builds, having a strategy for dependency management, controlling access and merge approvals, leveraging Git features to enhance repo performance, adopting trunk-based development, and queuing and verifying pull requests.