A suburb that started out with lots of very similar houses can end up with divergent colors, additions suited for different people, gardens with personal style. This should not be seen as a negative thing, it shows the history of the area and give a sense of identity to the neighborhood.
In programming we often have a drive towards standardization.
Since different software components suite different purposes, they should have style suited for different application / purpose. When you use components from different companies and open source initiatives, they will not fit your style: they can help you deliver, so don’t ignore things that don’t fit your style (since they can help you deliver).
Limiting yourself to one language also means limiting your recruitment base. Once people have started working, they usually pick up the other commonly used languages (in order to be able to modify other parts).
Developers will find their own style of coding as they mature. Different people will work in different ways. Some write text then code, some draw diagrams then code, some tests then code, et.c.. When you hire people, most probably they will not be familiar with your domain and your standards. Just because they are not familiar with your preferred style, they can still prove useful (to your organization).
Note however, if you write mobile apps or desktop applications, you can do that fully in C#.
How do you hire ok backend people? You go with Java, Python, C# or even PHP (since they are the mainstream backend languages right now).
How do you find great developers? One way is to go a bit niche. Interested developers will want to learn new things. If you have ‘cool’ tech you can attract some of these guys.
You need people to make sure that components (libraries/services) have internally uniform style. Having a good structure will make it easier to read the code. What kind of structure? I would say that it depends on the project and people working on it.
Comments or errors? Fork this post and do a pull request on github