I sometimes like to compare the tools a software developer prefers to the way a chef might have particular ingredients that he prefers to use when cooking a meal. Sure a chef may use a wide variety of ingredients depedning on what the meal calls for, but they have opinions and preferences towards certain ingredients over others. Software developers are not that different. They often prefer a set of tools and ingredients when building applications. Reusing the same tools and ingredients helps developers become more efficient in building applications.
For years I was a developer focused on .net development. However in recent times I've gravitated towards javascript. Once node was born and we could now use javascript on the server becoming a 'full stack' developer seemed much more palpable. Today we can write cross platform desktop applications using electron, native mobile applications with [react-native](https://facebook.github.io/react-nativ