Programming Tools Part 2
A lot of people contacted me about my last post on Sony’s development tool choice for the upcoming PlayStation Suite. Many people agreed with me, but many others did not and honestly believe that Microsoft/C#/Visual Studio is really the best, easiest, and most popular way to program software.
I can summarize my rebuttal to that in three words: The Strange Loop. This is one of the best, if not the best, programming conferences that covers the most cutting edge programming concepts, applied technology, and paradigms. There are lots of programmer conferences and meetups, but this is the main event. This really gives you a feel for what the brightest programmers of today are really passionate about. (by the way, this is a yearly event, going on right now, and my current manager, and several coworkers, flew to St. Louis on their own dime because it is that good).
Skim through their session list. You can see lots of excitement and use of the JVM (Java Virtual Machine), which you will notice almost no one is using for the Java language but the newer, more elegant languages such as Scala, Clojure, and Groovy. There’s also lots of excitement about Git, monads, cloud computing, iPhone/Android, HTML5, etc. The number of sessions that are interested in Microsoft developer tools are very few. Absolutely zero mention C# or Visual Studio. There’s one speaker from Microsoft (speaking on category theory and monads) and another session about F# (which is Microsoft’s more elegant, cutting edge language), but that’s it.
Secondly, most of the recent success stories in software don’t use Microsoft development tools. The developers at Twitter are fanatical about Scala. The Facebook developers write lots of PHP, but their core fancy massively parallel database (Cassandra, which they open sourced) is completely written in Java. Mint and Pandora were created on Java/JVM development stacks. Amazon has a heavy investment in Java and a few other non-Microsoft infrastructure pieces (going by their job postings and past Amazon developer speakers).
Most people think Netflix is all Microsoft tech, because they have an exclusivity deal with Microsoft on the web client to only use Silverlight, and that’s the piece that people see, but internally, Netflix predominantly uses Java and some C. Talk to most of the programmers working with university academics in the natural science, and Python is prevalent (see the SciPy conference). Even look at Microsoft’s Bing: you think it’s built in C# or .NET or Visual Studio? Nope, it’s all Java and Hadoop on the server-side (well they basically acquired it from Yahoo).
I will say this. In the English speaking video gaming blogosphere, particularly among the non-programmers or very light programmers, Microsoft’s developer brands have by far the most brand awareness influence. This is for a few reasons:
- The big video game competitors, Nintendo and Sony, don’t have a stake in software development tools and brands. They don’t have their own IDEs, languages, and VMs, and don’t have interest in that field either.
- The other big players in development tools don’t have such a large consumer presence as Microsoft. There are tons of smaller companies pushing game development kits for hobbyists. Adobe Flash has probably been the most successful at making game developer tools that are successfully used by hobbyist and entry level developers. But Microsoft is really the only company with both a large consumer presence and a large investment in developer tool brands that is heavily advocating to the hobbyist game developers.
This may change in the near future with Google, who is under strong lawsuit pressure to move away from Java, which has serious interest in video games on the web and on Android, and has two large programming language projects (Dart and Spot) rumored to be near unveiling.
- The Microsoft fan culture, among adult managers, is generally all Microsoft all the time. Even if 99% of people think that the Microsoft web browser is ridiculously inferior compared to the competition, Microsoft fan mangers enforce it’s adoption rigorously, just because it’s Microsoft. Somehow, they mentally equate using Microsoft software with maturity, and anyone who prefers another product for any reason is being childish, silly, and just being a hater.
Go to a SharePoint Saturday conference: you will see seemingly normal looking adults who obsess about pushing obscure bits of Microsoft tech on others for no apparent reason. Contrast that with the Java/JVM community or the Python community. The Python community has a heart of its own and isn’t centrally driven at all, which you can tell by the general refusal to adopt Python 3.x. Most of the people who are writing amazing software in Java, actually hate Oracle, and have zero loyalty to Java as a language or the corporate backers. I’m talking about the guys who wrote Scala or Clojure or Fantom or Hadoop or Cassandra or Lucene or all of the other big success software projects that use Java internally.
The great part about this, is that technologies and paradigms generally don’t gain traction because the corporate backer says so and spent a bunch of money on developer advocacy and expensive media circus keynote speeches, but, instead, because the stuff is actually good. The downside is that you don’t have a strong central voice to do the consumer style advocacy that are needed to win over the more consumer driven minds of the video gaming crowd.