Small, hyper-productive teams of around 5 people are often more effective than larger teams for software projects. They can work faster through practices like pair programming, code reviews between members, and face-to-face communication while removing impediments and unnecessary processes. For very large projects, using multiple small functional teams each focused on a specific part of the project can help maintain speed and productivity overall.