Polyglot in the enterprise
Should everything always be as good and efficient as possible or should some things or even quite a lot of things be rather mediocre?
Polyglot, when it comes to software/system development, means that you can or should mix tools, languages etc, in order to use the best of the best everywhere, in order to create your solution, or at least the stuff that you know, like or even love.
Is this a good idea?
Talking to the software developer or software architect for an individual component/problem the answer is usually a YES! Of course everything will be better, cheaper, more efficient and a multitude of other great things if he or she was allowed to use the tools, languages, databases, operating systems, application servers etc that are optimum for each area of this specific problem.
And if the architecture compartmentalised this component in a good way = is microservice oriented (and that is cool and hot and…), this would be sooooo very easy to accomplish. And since we fully think in the microservice way and virtualise and use containers (for example docker) and of course deploy everything to the cloud. Who can object to these best of breed choices?
I do think I can and should – and not only because I’m old or boring or plain conservative. At least in an enterprise environment things (systems, information etc) doesn’t exist on their own. There are always a multitude of other systems around and all of this creates a complex environment.
And one of the largest problems in today’s enterprises is not the individual systems – it is the sum of every component and the maintenance cost, the lack of flexibility etc. And especially the security challenges that this large mix of various solutions pose.
One specific language, platform, framework etc is usually not especially better or worse than another as long as you keep them updated, patched and generally well maintained. The basic problem is however that the more tech you mix, the more work it is to maintain all of this stuff and the more competence is needed about all of these components. And since the general state of things in today’s enterprises is that the complexity is already beyond most of those organisations ability to handle increasing it is probably not the best of ideas.
So, if you are a start-up building this new and fantastic service – please go ahead and solve various parts of the problem using optimal tools. If you are successful you will probably be able to maintain it.
Even if you develop more specific products that will be sold as services and maintained by a defined team that is large enough to keep the service in shape polyglot thinking might be good for you.
But if you develop software that is about to be installed in your own or customers corporate environments and that probably won’t have a dedicated maintenance team and probably won’t be patched and upgraded as quick as possible – then the amount of technologies might be a large problem.
And NO – there are no safe places on your intranet or server network where vulnerabilities doesn’t matter, todays corporate networks should be viewed as unsecure places.