It’s All About the Plugin

As a keen observer of most of the new programming languages that have appeared over the last decade, I am constantly disappointed that whilst a lot of them have some great features, I choose not to use them. Why? Because they fail my “Pain versus Gain” checklist:

  1. Can I develop a large application of hundreds of classes? (most of them are Object oriented, so this is a useful metric of size)
  2. Is it so much better than one in my current arsenal(Groovy/R/Java/JavaScript) to be worth the pain of switching?
  3. Can I leverage the Java ecosystem easily?
  4. How good is the tool support?

Let’s skip all those that fail to address less than three of the points above and stick with the candidates which get three or all of questions right.

I find that nearly all the new languages only score three out of four and hence I end up not using them. This depresses me, but the reality is, any new applicant to join my development toolbox needs to be ready for industrial grade work. Maybe not by today, but by the day after tomorrow at the latest.

Nearly every language is fine for toy projects of several thousand lines of code or less (even REXX). You can get by with a text editor, command line builds and a little duct tape. The problem is, I don’t care about toy projects. I care about serious apps which I often write single handed (I have no friends – sorry Kevin, you were demoted to ‘acquaintance’ last year). These apps can get quite large, and need to be deployed for real, to people who might even pay to use them.

So which question do most of the new languages fall down on? Yep, you guessed it – question 4, Tool Support.

To me, any new language needs to have strong tool support before any major revisions or new features are added.

So instead of this…..

 Sad Story Number 3,403

  • I download the exciting new language EmeraldSnake to try it out, because the hype is awesome and I can impress my friends.
  • Running some basic examples via the command line interface work just fine. All that crufty Java code can be replace by one line (or less!) of EmeraldSnake code. I start to get excited.
  • Some other examples showcase how you can use your Java, Perl and COBOL libraries together to run mainframe apps on your smart phone. I have seen the light and have become a true believer.
  • I decide to write a small but real application and start hunting for plugins for my IDE (IntelliJ). After a couple of hours, I only find one for my IDE and it hardly works at all – no refactoring, it freezes all time, and if open more than 10 source files it crashes. There is an Eclipse plugin as well, but I don’t have the strength…the forums appear to suggest it’s just as bad. That plopping sound is my bubble being burst.
  • The afterglow wears off and EmeraldSnake goes on the discard pile. I go for a walk outside.
  • With a sigh, I start my little app as a new Java/Groovy project in IntelliJ. I finish it in a couple of days.

I get this…..

 Happy Story Number 3

  • I download the exciting new language TurboCOBOL and try it out, because the hype is awesome and I can impress my friends.
  • Running some basic examples via the command line interface work just fine. All that crufty Java code can be replace by one line (or less!) of TurboCOBOL code. I start to get excited.
  • Some other examples showcase how you can use your Java, Perl and COBOL libraries together to run mainframe apps on your smart phone. I have seen the light and have become a true believer.
  • I decide to write a small but real application and start hunting for plugins for my IDE (IntelliJ). I find a plugin which is at version 0.5 (potentially a bad sign), but it downloads and installs fine. Code refactoring, syntax highlighting and web server deployment all work first go. There are some issues but they don’t affect my productivity. Looking good…
  • I start writing my small app in TurboCOBOL and am amazed at how quick, intuitive and fun it was. It takes half the code that my current languages do and I feel a lot more productive, even though I am a newbie.Wow.
  • I finish my pet project, and add TurboCOBOL as worthy addition to my coding toolset. I start thinking about some other things on my todo list….

The only languages released in the last couple of years that passed my “Pain vs Gain” Test are Dart and Kotlin. Surprised? So was I. This list is depressingly short and there a lot of languages which I like which did not make the cut. No doubt there are more that would pass my test, but I have tried all the major dynamically and statically type newcomers – and they failed. Some of the failures were few years ago and maybe things have improved. Sometimes I revisit the latest version, but mostly I don’t. Who’s got the time? Sorry guys, you lost me on plugin version 0.9 in 2012.

So my message to all those language developer is this:

  • I love your work – keep it up. Nobody liked Basic anyway.
  • Start the IDE plugin work as soon as possible. I know it’s boring and tedious (I have shared your pain and now walk with a limp) – but it’s crucial. Make your efforts stand out from the crowd.
  • Fix those critical plugin bugs before adding new language features. I don’t care about the new recursive, multithreaded anonymous block support you are adding – stop my IDE from crashing every time I try to rebuild my project!
  • Don’t even think about writing your own dinky little IDE from scratch – leverage the millions (?) of man-hours spent on the major IDE’s (even Eclipse). You may be a genius but you will die of old age before your homegrown IDE is half as good as the major ones.
  • Did I mention the plugin?

“I would prefer to use the third best language with the best plugin, rather than the other way around”.

Every single time.

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>