Which Technology Should I Use Next?
That's always a tough question. Java or C#? Ruby or Django? Flex or Silverlight? Drupal or Joomla? In some cases, you need to implement and use the technology. In other cases, you have some spare time and you want to invest in learning a new technology that will prove itself useful. In my case, I need to extend nWire to new languages and frameworks and I simply need to decide which technology has the greatest market potential.
I'm an innovator myself. However, in a world with thousands of options (many of them open source), following the herd means you will get better support and your selected technology will continue to grow and evolve with you. You will find more examples. You will find qualified people familiar with the technology. Needless to say, the features are only a part of the overall score when it comes to picking your winner.
You are reading this article, which means you read blogs. You care about new technologies and you probably get a good sense of what people are discussing. That "sense" is not something you want to trust, because:
- The blogosphere has a very viral nature. It is possible that a very small group is making a lot of noise. (ehm.., cough... Scala... oh, just kidding, don't flame me)
- You probably have an RSS subscription list of technology oriented blogs (or you simply follow DZone or other aggregation service). That's great. That means your sources are limited to a specific group of people posting to these sources.
The technologies you will encounter could be the latest and greatest. But, having hype around the technology does not make it mainstream.
One of the best tools for measuring trends is Google Trends. It compares search volume and estimated web site visitors. The fact that people are reading and searching for a technology, again, does not make it mainstream. It is much better than tracking the blogosphere, but it still very hype-infected.
Here's an idea: searching for trends in job postings, also known as Job Trends. The results cannot be affected by hype. People who post wanted ads already chose the technology and they are now willing to pay for a person familiar with it. Putting money on the table is one of the strongest indication that people trust the technology. It simply does not lie.
Here are some examples:
- Java versus C# - Indeed, SimplyHired
- Abode Flex vs. Microsoft Silverlight vs. JavaFX - Indeed, SimplyHired
- Struts 2 vs. Spring MVC - Indeed, SimplyHired
- PHP vs. Ruby on Rails - Indeed, SimplyHired
Very interesting stuff. Here are some caveats to watch out for:
- Make sure you are searching for all the terms people use. For example, people hiring ActionScript developers might write this as "AS3".
- Job ads may contain acronyms or words which have different meaning than what you might think. Searching for GIT vs. SVN is completely useless. In the Adobe Flex example above, people may just write Flex. However, Flex has other meanings.
- To complete the above example, people do not hire for every technology, even if they use it. I'm not sure how many companies hire dedicated SVN or GIT experts.
If you have some good examples for technology comparison, let me know in the comments.