Pompous Statement
On twitter I posted the following tweet:
Quote me on this "Erlang will replace Java in the next 2 years as the standard for Enterprise Applications."A fair number of people were either outraged or excited by this statement, but one thing is sure people wanted to know my justification for this statement. I feel that it was deserving of a full blog post rather than a random assembly of 140 character messages. A little background first, I have built many applications in a wide range of disciplines from Security Policy Management products to project management web applications and have coded in nearly all the "standard" set of languages. Programmers and their language selection is little more than a tool for management types to tout, blame, or confuse based on the situation and as such my statement is indeed controversial, especially since most programmers rarely get to pick the tool for the task, let alone the right tool. I have been on both successful and unsuccessful projects and one thing is true, developers have a short period of time to accomplish something great before managers apply their "business savvy" to the mix and it all goes sour. This is why Ruby is seeing such a limelight at this point, because you can quickly get something out before the "others" have a chance to fark it up (trying to be PG). So without question, the quickness to a win is the key to success within the development community especially when you have any layer of management. Java, .Net, and even Ruby take a long time to develop an Enterprise solution because they are not designed for the inherent concepts of distributed computing, messaging, and even data persistence. They all farm out some other solution for these problems. If you code in Rails or merb, how often to you fire off a background process to do something that "needs special care"? If you code Java or .Net how many times are you dealing with an ORM because you need an enterprise database (SQL Server, Oracle, DB2)? Most of the time in Enterprise development is spent tricking the language into being enterprisy and globbing on often times incompatible technologies (relational != object) just because "it has to be that way". When you break down Enterprise development, the key factors to it are:
- High Availability
- High Performance
- High Scalability
- Robustness of operation
- Perform a business function