Article Discussion
A Business Case for New Languages
Summary: Unsure about when to adopt a new technology? Do you think your old technology is "safer"? Maybe ... or perhaps sticking with it offers risks of its own. This article discusses some of the benefits of adopting Scala rather than staying with Java.
26 posts.
The ability to add new comments in this discussion is temporarily disabled.
Most recent reply: April 20, 2011 2:33 PM by robert
    Bill
     
    Posts: 409 / Nickname: bv / Registered: January 17, 2002 4:28 PM
    A Business Case for New Languages
    April 14, 2011 9:00 PM      
    In this article, author Dianne Marsh lays out a business case for using new languages by comparing Java and Scala:

    http://www.artima.com/scalazine/articles/a_business_case_for_new_languages.html

    What do you think of the author's argument?
    • Daniel
       
      Posts: 11 / Nickname: djimenez / Registered: December 22, 2004 0:48 AM
      Re: A Business Case for New Languages
      April 15, 2011 8:19 AM      
      One more thought.

      Licensing issues aside, the technology team rarely asks permission of the business team to bring in new libraries or frameworks (unless their use results in a large scale rewrite).

      Yet we agree that a case must be made in order to upgrade to a new language.

      If we focus on the differences between bringing in a new library and upgrading an entire technology base, that might give us a boundary on the areas we need to cover when making our upgrade case.
    • James
       
      Posts: 128 / Nickname: watson / Registered: September 7, 2005 3:37 AM
      Re: A Business Case for New Languages
      April 16, 2011 10:52 AM      
      I think part of the problem is that these kinds of arguments boil down to "newer is better" which is really not a rational argument at all. Sometimes newer is actually worse. If we think back to why Java was able to gain traction, I think might help to explain the kind of reasons a person with business training needs to justify this kind of switch:

      * Java promised (and largely delivered) portability across operation systems. This gives a strategic advantage. Anyone who knows basic game theory understands this. This was the strongest business argument for Java.

      * Java promised robustness. You can argue about how much it delivered on this but things like garbage collection and array bounds checking play to minimizing uncompensated risks.

      * Java promised simplicity. Again, arguable but the pitch here is that finding qualified people would be easier and therefore less costly.

      If you want to sell a new language like Scala, you need to make these kinds of arguments. One of the big problems that you have is that if a business chooses a language that is not widely adopted, its generally very disadvantageous. New languages are not not widely used which limits their adoption. A bit of a Catch-22, I would say. If you can show that companies are adopting it or that developers can either be found or easily trained, this might help. As far as Scala goes, there's a general impression that its hard to learn which is likely (assuming that doesn't change) to prevent wide adoption.

      Lastly, the smaller your organization, the easier its generally going to be to adopt a new language. At larger organizations, the people choosing languages and tools tend to not be the people who use them or have the skills to understand the merits of one over the other.
    • Casper
       
      Posts: 1 / Nickname: mrmorris / Registered: November 14, 2007 6:46 AM
      Re: A Business Case for New Languages
      April 16, 2011 10:51 PM      
      I don't think this is sufficient argumentation for why an org should embrace Scala. Businesses wants established standards over the latest flavor, and Scala is still quite a unique flavor that divides more than it unites. That's just a fact when you look around! Scala is like salt liquorice. We need something more like chocolate or fruit gum.
    • William
       
      Posts: 1 / Nickname: 73557 / Registered: October 12, 2010 10:56 PM
      Re: A Business Case for New Languages
      April 17, 2011 3:51 AM      
      First, I thought the automotive analogy was a bit confusing. Since Java and Scala run on the JVM, there isn't anything you can do in Scala you can't do in Java, so cigarette lighters, poor fuel efficiency, etc. don't really seem valid. That's just bad, outdated coding.

      I do believe there is a business case to be made for Scala, but don't think this article makes it. First, there are no numbers! That's essential for a business case. The author made some comments that could lead to a business case, but I believe more on the amount of code reduction along decrease in testing and bugs because of less and more expressive code with numbers to back up the argument would be helpful. For me personally, I find that using Scala reduces my code base by about 50% (very rough estimate). That's less code I have to write, test, and debug.

      However, as someone who knows C, C++, Java, Groovy, Ruby, and several other languages, I find Scala to have a pretty serious learning curve and the tools are still a bit less supportive than those for Java (although getting better). Switching to Scala requires getting the programmers to not only learn a new syntax, but also new ways of coding (functional, for instance)

      I believe that over time Scala, or something like it, will replace Java simply because it does let those who take the time to learn it writer better code with a lot less work, but it's going to be a tough sell that probably needs to start at the bottom and work up.

      One last thought. The addition of actors and functional programming's ability to scale should be a major part of the business case. These are much more difficult in Java, but are becoming major requirements for software.
    • Jiri
       
      Posts: 7 / Nickname: goddard / Registered: May 17, 2007 0:16 AM
      Re: A Business Case for New Languages
      April 18, 2011 2:12 AM      
      - name all the companies that use scala. best is to name those which products your management uses - twitter, linkedin, maybe foursquare? :)
      - recreate existing module in scala during your work time and claim it, so management can see and compare how much time you spent on module development in java comparing to scala. show them the cashflow! :)

      in general, business people want to see at least a prototype. they need to see a result before they put a single thought to something new. sad? but true.
    • Achilleas
       
      Posts: 98 / Nickname: achilleas / Registered: February 3, 2005 2:57 AM
      Re: A Business Case for New Languages
      April 18, 2011 3:51 AM      
      A new language has a chance in a business environment if it can either cut the costs or increase the profits or both in a substantial degree. In other words, the benefit should be big enough to justify the change.

      I don't think Scala offers something significantly better than Java for most business cases. Especially for smaller shops, anything else than Java seems to be an overkill.
    • robert
       
      Posts: 35 / Nickname: funbunny / Registered: September 23, 2003 5:08 AM
      Re: A Business Case for New Languages
      April 18, 2011 10:17 AM      
      What was the business case for java? It made it easier for the Fortune X00 to build nicely interactive web sites with applets.

      Oh, you don't remember the last time you coded or visited an applet page? Unless you're on a X00 intranet, not likely.

      Prior to java, the Fortune X00 coded mostly in COBOL and C. Some (many?) tried to repurpose COBOL coders to java; I watched and chuckled. COBOL and C persist, now with java the default web environment, although that sort of java tends to be structured just like COBOL but without the SCREAMING CAPITALS. One might conclude that COBOL won.

      With java webservers and servlets, java was saved from an early death. Applets won't be missed.

      The unholy trinity will go on for quite a long time until there is a new platform that none works very well with.
      • Jiri
         
        Posts: 7 / Nickname: goddard / Registered: May 17, 2007 0:16 AM
        Re: A Business Case for New Languages
        April 18, 2011 11:09 AM      
        the web was still young, that's why java caught up ;) now, everything seems settled as you described.
    • Daniel
       
      Posts: 11 / Nickname: djimenez / Registered: December 22, 2004 0:48 AM
      Re: A Business Case for New Languages
      April 15, 2011 8:16 AM      
      I've attempted this argument (or ones like it) with business staff before, with similar reasoning (though without car analogies :-).

      I always get the response that this line of reasoning is more about why moving to a newer technology is not as bad as it sounds, not why it is actually a good choice.

      Before we get to the bottom line reasoning that is really the only thing business-types seem to ever respond to, I think we need a stronger, positive case for why upgrading our technology stacks is appropriate, not just less bad than the worst case a non-technologist can dream up.

      For example, there are some studies showing that programming in higher-level languages is more efficient. How about a comparison of how much more efficient, versus the time it takes to learn the language well enough to be proficient.

      Measures of what types of people learn new languages fastest would also help, because new hires are more likely to need that language training. Information on when the transition of various systems to the new language needs to occur must be provided (granted that this is less of an issue with Java to Scala). Library support needs to be determined (again less of an issue with Scala). Etc etc.

      I think this article is good at presenting necessary information to decision makers. I just think it's not a sufficient amount, and we should work to put together a more fully-developed case for upgrading.

      Thanks for a thoughtful post!
      • Krisztian
         
        Posts: 7 / Nickname: skrisz / Registered: March 16, 2009 2:31 AM
        Re: A Business Case for New Languages
        April 19, 2011 3:09 AM      
        > Measures of what types of people learn new languages
        > fastest would also help, because new hires are more likely
        > to need that language training. Information on when the
        > transition of various systems to the new language needs to
        > occur must be provided (granted that this is less of an
        > issue with Java to Scala).

        I am not on the Java field nor in Scala but somehow I am interested the ideas of the new languages so I just checked Artima's online Scala tutorial (at least for the first few pages).
        So I just checked the doc as an outsider of the Java biosphere.

        These thoughts came my mind during reading through the first pages:
        - the paper admits that it clearly adopted some of the benefits of the new scripting languages, namely maps in for example Python. The example gave me the impression that the code is still longer than it would be in Python. This makes me no feel that this language could be a better scripting alternative.
        - Erlang is mentioned many times, however that language IMHO did not really proved apart from one of the products of Ericsson.
        - When someone to new Java and Scala wants to learn Scala, it is disturbing to see that the simple hello world uses some other product from a different language; namely it uses java.lang.String . Does it mean if one wants to learn Scala, he/she is needed to know Java before?

        Any correction or criticism welcomed.
        • Jiri
           
          Posts: 7 / Nickname: goddard / Registered: May 17, 2007 0:16 AM
          Re: A Business Case for New Languages
          April 19, 2011 3:36 AM      
          >Does it mean if one wants to learn Scala, he/she is needed to know Java before?

          with scala, you're moving onto a whole new platform - the jvm. although you can create a language that runs on jvm and doesn't contain anything from java, still you better learn something about jvm.
          it's not needed, but it's often assumed and yes, it feels strange. actually, it might be quite challenging to create a tutorial that doesn't mention java, just jvm as a prerequisite. scaladoc is very brief and doesn't describe apis in detail, but again relies on javadoc.
          this is maybe? one of the areas where scala folks could do better job despite the possible duplication of information. i think that for scala noobs (like myself), it'd be worth it to explain some apis in greater detail
    • Kondwani
       
      Posts: 7 / Nickname: spike / Registered: August 24, 2004 2:43 PM
      Re: A Business Case for New Languages
      April 20, 2011 2:24 AM      
      Her analogy with the cars fall flat due to versioning. Java syntax changed drastically from 4 to 5. The introduction of Generics made the language much less verbose. Greater functionality can be achieved with less code because of Generics, e.g. Generifying your persistence layers takes away from a lot of repetition. Frameworks like Wicket enable re-usable components, enhancements to refactoring tools in IDE's, the enhanced for loop etc. So I don't quite agree with that analogy it distorts things - apples to oranges??
    • Alpha
       
      Posts: 3 / Nickname: alphadog / Registered: December 11, 2008 2:24 AM
      Re: A Business Case for New Languages
      April 18, 2011 8:43 AM      
      This article is a great example of how many developers don't understand the business world.

      A business case is an ROI.

      Where's the ROI for Scala versus Java in that article? ROI analysis (or similar tool) would quantify things like efficiency gains, reduced expenses, risks mitigated, etc.
      • James
         
        Posts: 128 / Nickname: watson / Registered: September 7, 2005 3:37 AM
        Re: A Business Case for New Languages
        April 18, 2011 11:57 AM      
        > This article is a great example of how many developers
        > don't understand the business world.
        >
        > A business case is an ROI.
        >
        > Where's the ROI for Scala versus Java in that article? ROI
        > analysis (or similar tool) would quantify things
        > like efficiency gains, reduced expenses, risks mitigated,
        > etc.

        ROI is just one way of judging the financial value of a project and really not a very good one. The financial value of a project is important but it is not the only thing that should be considered in a business decision. Its useful to attempt to quantify everything about a decision but the point is to help provide insights; not to dictate a choice.
        • Alpha
           
          Posts: 3 / Nickname: alphadog / Registered: December 11, 2008 2:24 AM
          Re: A Business Case for New Languages
          April 18, 2011 0:52 PM      
          I'll add that it's different strokes for different folks, but for anyone to push a change in a business based solely on intangibles should realize that the dot-com 90s have come and gone. There's got to be at least some hard returns.
          • James
             
            Posts: 128 / Nickname: watson / Registered: September 7, 2005 3:37 AM
            Re: A Business Case for New Languages
            April 19, 2011 7:26 PM      
            > I'll add that it's different strokes for different folks,
            > but for anyone to push a change in a business based solely
            > on intangibles should realize that the dot-com 90s have
            > come and gone. There's got to be at least some hard
            > returns.

            I don't disagree per se but often the values put on things are somewhat arbitrary. You can't make too much of them. Generally, people will fudge the numbers to make their preferred choice look better.

            For example, something like "this project will make us 20% less likely to suffer a security breach in the next year which would on average cost us $10,000,000" might be reasonable but are by no means 'hard' numbers. The numbers are simply guesses. Educated guesses at best. Sometimes trying to boil down things to numbers can hide really important information. It might be that a security breach could destroy a company. Does it help to explain the value of continuing to exist vs. not existing as a company? I'd say not, in most cases.
        • Alpha
           
          Posts: 3 / Nickname: alphadog / Registered: December 11, 2008 2:24 AM
          Re: A Business Case for New Languages
          April 18, 2011 0:43 PM      
          If the classic ROI analysis is "not very good", what is a distinctly different and better way to quantify the business value of a change of technology to users?
          • James
             
            Posts: 128 / Nickname: watson / Registered: September 7, 2005 3:37 AM
            Re: A Business Case for New Languages
            April 19, 2011 7:13 PM      
            > If the classic ROI analysis is "not very good", what is a
            > distinctly different and better way to quantify the
            > business value of a change of technology to users?

            Net present value (NPV) is the preferred method. ROI ignores the time value of money and has other technical issues such as you can have a ROI of a one year but then lose money for 10 years following that.
          • Frank
             
            Posts: 135 / Nickname: fsommers / Registered: January 19, 2002 7:24 AM
            Re: A Business Case for New Languages
            April 18, 2011 9:21 PM      
            This is an issue I'm dealing with right now. I personally like a Scala a lot, and have been writing all of my new (server-side) code in Scala for the past 1.5 years. I can personally see big efficiency gains, better code quality, better design, possibly more scalability, more agility of the codebase - I can see all that using Scala.

            That said, I suppose the discussion about Scala as a business keys should be qualified as using Scala to write new code - old code, by definition is already written - or even in a new project.

            If we restrict the discussion to new code or a new project, then I think almost any business today has to consider time to market as a key criterion for architectural, including language, decisions.

            With that narrower context, the question then is, To what extent does Scala help you deliver a project / product to market quicker than technology / language X?

            That more defined question then brings into play some of the considerations a business manager would have to weigh, such as: How easy is it to staff the project (given a finite budget)? How do the language and tools support reliable delivery in the face of a changing specifications and requirements, which are common in new projects? How easy is it to leverage existing infrastructure from the language (as compared to language / framework X)? And what kind of developers would Scala attract compared with, say, language X, and are those the kind of developers the project really needs? Etc.

            Answers to some of these are more obvious than to others. Clearly, good luck trying to find experienced Scala developers (at an affordable rate, compared to, say, Java developers). Scala IDEs truly lack behind mature Java IDEs (even with the recently released excellent Eclipse Scala IDE and IntelliJ) -- expect those tools to get in the way quite a bit still, which will waste time. But Scala may attract some of the top developers to a project, so that's a huge plus, provided that your project needs top-notch developers (every project needs them, of course, but few can afford them!).

            Introducing anything new, of course, causes a temporary dip in productivity. The question is, can you make that up as you gain more experience, given that your competitors may be working on similar solutions using some other technology which they may be experts in already? My experience is definitely "yes" -- however, it would be a mistake to underestimate the Scala learning curve, which may be bigger than the Java learning curve was for C++ or COBOL programmers.

            You *will* traverse down blind alleys in design and implementation, and will end up throwing away code and redoing work, as Scala dictates fundamental design choices that only become apparent with experience. That's great for learning, of course, but there's a time factor involved. (Even after 1.5 years of writing mostly Scala code, I would not consider myself an expert. That was definitely not my experience moving to Java - first learning Java in 1995, by 1997 I certainly felt mastery of all the Java language and design constructs.) You definitely have to consider available training as a business requirement.

            My experience is that Scala is still 1-2 years away from the tipping point where using it in general would make a compelling business case. The inflection point maybe a truly great IDE, some API or framework, I'm not sure. Once that point is reached, though, lots of business managers will be ready to embrace Scala, because the benefits will be obvious to them.
            • Dianne
               
              Posts: 1 / Nickname: dmarsh / Registered: October 15, 2007 0:26 PM
              Re: A Business Case for New Languages
              April 19, 2011 11:12 AM      
              If we can't get the businesses on board with adopting a new language, those who choose to do so will be taking risks. Those risks sometimes pay off, and articles about those migrations (like the one at guardian.co.uk:http://www.infoq.com/articles/guardian_scala ) will provide good case studies. I find the guardian.co.uk discussion fascinating because they seem to have totally backed into Scala development, as a result of starting from writing tests in Scalatest.

              And, as is pointed out above, new language adoption is a chicken/egg problem.

              What will strengthen the call for adoption, and what I think several people here are saying, is a killer app for Scala, something that you can do in Scala that is super hard to do in other languages. I wonder if the parallel collections in 2.9 might drive toward that (and suspect that they might).

              My frustration as a developer is that "kids these days" (grin) seem to be content with "their father's Buick", wanting to stick with the old tried and true languages and complain about other languages being too hard, when in fact they have simply forgotten that there was a learning curve to languages like Java too. ;-)

              As a business owner, I have seen my developers thrive using new technologies and create apps easily in the new languages or toolkits. Furthermore, they often take ideas back to the older technologies and make apps that run on those technologies better (e.g., more maintainable, more clearly written, etc.) as well.
              • Frank
                 
                Posts: 135 / Nickname: fsommers / Registered: January 19, 2002 7:24 AM
                Re: A Business Case for New Languages
                April 19, 2011 0:28 PM      
                > My frustration as a developer is that "kids these
                > days" (grin) seem to be content with "their father's
                > Buick", wanting to stick with the old tried and true
                > languages and complain about other languages being too
                > hard, when in fact they have simply forgotten that there
                > was a learning curve to languages like Java too. ;-)

                Hmm, I don't think Java's learning curve was as steep, though: Most people (perhaps not those reading Artima) just happily write
                static void main{..}
                , or
                doPost() {..}
                , etc., and then write one statement per line between the curly braces, maybe divide every 100 lines or so into a method... I bet that many Java apps are just basically that, and you can no doubt create lots of functionality just doing that, e.g., generate HTML, process reports, etc. And most Rails apps are probably like that, too, and probably most COBOL apps, PHP, Perl, etc. The language is not that important in that paradigm, really. I'm not sure when the repertory of things that can be done with that paradigm runs out, but it has not yet. Maybe concurrency will force people to think differently, I'm not sure. But Scala certainly makes that paradigm look outdated and clumsy, and forces a different thinking on someone. Java didn't. This may also partly have to do with the culture of the Scala community vs the Java community. As far as I can tell, the Scala community tends to attract rather sophisticated developers who enjoy learning new paradigms. I don't recall that the Java community early on (ca '95/'96) had that sort of a sentiment.
                • robert
                   
                  Posts: 35 / Nickname: funbunny / Registered: September 23, 2003 5:08 AM
                  Re: A Business Case for New Languages
                  April 19, 2011 2:47 PM      
                  > But Scala certainly makes
                  > that paradigm look outdated and clumsy, and forces a
                  > different thinking on someone. Java didn't. This may also
                  > partly have to do with the culture of the Scala community
                  > vs the Java community. As far as I can tell, the Scala
                  > community tends to attract rather sophisticated developers
                  > who enjoy learning new paradigms. I don't recall that the
                  > Java community early on (ca '95/'96) had that sort of a
                  > sentiment.

                  Even if it did, by 1999 (or thereabouts) java had been co-opted pretty thoroughly by the Fortune X00 types, and turned into New COBOL. Like New Coke, it too got replaced (semantically, of course) by the thing it was supposed to replace. For that reason alone, Scala isn't likely to be much of a player in the Enterprise. There's some R and C and even smalltalk there, but only in niches.
                • Bill
                   
                  Posts: 409 / Nickname: bv / Registered: January 17, 2002 4:28 PM
                  Re: A Business Case for New Languages
                  April 19, 2011 11:07 PM      
                  > > My frustration as a developer is that "kids
                  > these
                  > > days" (grin) seem to be content with "their father's
                  > > Buick", wanting to stick with the old tried and true
                  > > languages and complain about other languages being too
                  > > hard, when in fact they have simply forgotten that
                  > there
                  > > was a learning curve to languages like Java too. ;-)
                  >
                  > Hmm, I don't think Java's learning curve was as steep,
                  > though...
                  >
                  Java's learning curve wasn't nearly as steep in 1995 as Scala's is today, but I think that's also true of Java's learning curve today. Java's learning curve today is a lot steeper than it was in 1995, and it will get steeper still in the coming releases once they add more features, like closures.

                  One thing Java did that may have helped its adoption was start out with a very minimalist set of features. It didn't have enums. It didn't have generics. It didn't have much in the way of collections. It didn't and still doesn't have closures. This did make it quicker to pick up, but the downside was it made it more clunky to actually use. But that appearance of simplicity might have helped it get adopted, even though some of the features that were lacking made programmers lives more complicated once they adopted it. (Look at the first edition of Effective Java, at the mass of code recommended to work around the lack of an enum, for example.)

                  Scala by contrast is far more a feature-complete language than Java was originally. So that makes it more complex as a language, but those features make programmers lives simpler once they actually start using it. So it is kind of the opposite tradeoff of early Java.
                  • Krisztian
                     
                    Posts: 7 / Nickname: skrisz / Registered: March 16, 2009 2:31 AM
                    Re: A Business Case for New Languages
                    April 19, 2011 11:29 PM      
                    > Java's learning curve wasn't nearly as steep in 1995 as
                    > Scala's is today, but I think that's also true of Java's
                    > learning curve today. Java's learning curve today is a lot
                    > steeper than it was in 1995, and it will get steeper still
                    > in the coming releases once they add more features, like
                    > closures.

                    For me it seems Scala would like to turn existing Java users into Scala users, but what is the rationale behind Scala for the totally newcomer? It is more than strange to learn Java, forget it a bit, then learn Scala.
                    It would be also more than strange to tell someone to learn some Assembly first then C++ because the language is not "self contained". Do I miss something from the picture?
                    • Bill
                       
                      Posts: 409 / Nickname: bv / Registered: January 17, 2002 4:28 PM
                      Re: A Business Case for New Languages
                      April 20, 2011 0:38 PM      
                      > > Java's learning curve wasn't nearly as steep in 1995 as
                      > > Scala's is today, but I think that's also true of
                      > Java's
                      > > learning curve today. Java's learning curve today is a
                      > lot
                      > > steeper than it was in 1995, and it will get steeper
                      > still
                      > > in the coming releases once they add more features,
                      > like
                      > > closures.
                      >
                      > For me it seems Scala would like to turn existing Java
                      > users into Scala users, but what is the rationale behind
                      > Scala for the totally newcomer? It is more than strange to
                      > learn Java, forget it a bit, then learn Scala.
                      > It would be also more than strange to tell someone to
                      > learn some Assembly first then C++ because the language is
                      > not "self contained". Do I miss something from the picture?
                      >
                      I think maybe you're missing what "Java" means in this context. It doesn't mean Java the language as much as Java the platform. Scala is just a user interface in a way that allows you to program Java the platform. You definitely need to know about the platform you're programming. (You could also use Scala to program the .Net platform, in which case you'd need to know a lot about that platform.) In practice, though, you'd very often need to know Java too, because that's the lingua franca of the Java platform, and there's lots of Java code all over the place that you might encounter and need to read and understand while working on a Scala project.
                      • robert
                         
                        Posts: 35 / Nickname: funbunny / Registered: September 23, 2003 5:08 AM
                        Re: A Business Case for New Languages
                        April 20, 2011 2:33 PM      
                        > In practice, though, you'd very often need to know Java
                        > too, because that's the lingua franca of the Java
                        > platform, and there's lots of Java code all over the place
                        > that you might encounter and need to read and understand
                        > while working on a Scala project.

                        One of the selling points of Scala is "access to all that java code living in libraries", so there is some weight to the point that Scala coding is Scala/java coding. The same is true for any jvm hosted language. I don't know enough about .NET/CLR languages to know whether C/C++/C# is as important over there.