I'll share an anecdote from the opposite: an almost entirely polyglot culture.<p>There are business advantages to being a company of generalists (in the service field) - you can get lots of different work. We do web, mobile, desktop, embedded, pretty much everything. There is variety, if you want to work on something different - you can change projects and not have to change jobs.<p>The downside is that nothing is ever quite as good as if you were specialists. You can apply general software best practices but you lack the deep knowledge about the best way to do something in a given platform. You end up with Rails projects that feel like .NET projects ported from C# to Ruby. You have Android projects written like a web app. There is little re-use between projects; write a cool utility for a WPF desktop app? Great, except the next project you are working on is an embedded Linux app.<p>There seems to be a lack of focus when it comes to learning and sharing with the developer community. If all you do is iOS, you probably see the value in blogging about iOS, going to iOS meetups, etc - if you are generalist who changes technologies every 6-12 months, it is hard to get a foothold or to justify putting in time for something that you might not use again for 2 years.<p>My current thought is that the best mix would be a company that is "generalist" - but instead of having 100 polyglot engineers, have 5 squads of 20 specialists to cover the major platforms. Each squad has a focus and can do deep and learn the platform-specifics, the company can still win lots of work, and employees can still move between squads for variety.