Well I know there is some sort of ego involved, I am a polyglot developer for the ability to solve any problem. Being able to choose the right tools for a problem is very empowering.
Developing is all about the logic, once you know how to form that, the languages come easy. Every languages have the same set of basic operations: conditionals, loops, single and multiple objects. After you know how to combine operations logically, it just takes a small amount of time to learn the syntax of the language.
After you know how to write code in the language you need, it becomes all about learning the small details for the platforms you want to work with. Luckily for us all, developers thing a like and when faced with similar problems, we come up with similar solutions. So when dealing with similar typed platforms, like mobile, desktop, or web service, the features and restrictions of one platform can be found in the alternate platform. For example, if you are writing a application for Windows, OS X, iOS, or Android, you can’t update UI off the main thread.
How did I get here
About six years ago, I was working on Jing and I had the opportunity to change from developing the Windows (.NET WPF) application to developing on OS X. Since it was my first professional project, it was a great opportunity to see just how much two code bases can be different for the same exact feature sets. After a few months of developing a few features on OS X, I was put back to working on Windows, but there was something that drew me towards working on both platforms.
After a few years, I got moved onto a team that had OS X, Windows (C++ MFC), Windows Server (.NET), iOS, and Android applications. The team had the goal to make everyone on the team being able to work on any of the applications. The approach the team was using was to have developers that excelled at one platform be mixed together into Ranger Teams so that knowledge could spread. When I came on to the team, I was an expert on any of the platforms, so it was really easy to pick up tasks for any of the platforms and work faster than those with expertise in another platform.
Today, I still work on different platforms, however I have not had the opportunity to work on the same feature on different platforms at the same time. I have been able to work on different platforms for the same project, even crossing from application to the web service we were using.
What I wish I could change
I really wish I could work on a project with all polyglot developers, working on multiple platforms. Unfortunately there is always at least one person that doesn’t want to work on some platform. When I have had the opportunity to work in a subgroup across platforms, I have found that we develop similar implementations and are able to have higher level discussions pushing features further than originally planned.
I wish there were polyglot developer conferences and user groups, because it is difficult to choose which groups I should split my time with. These platforms have the ability to drive adoption and teach new technology, but they are focused on one language or even more specifically one platform. It’s easy to create content for a specific topic and even easier to fine people that want to learn.