What Are the Trends in Technology Today?
ThoughtWorks has released the Technology Radar 2010 (PDF) this month, a whitepaper containing ThoughtWorks’ technology strategy and trends in four major domains: Techniques, Tools, Languages, and Platforms. InfoQ looked at this whitepaper in depth to better understand the ideas and suggestions being offered by ThoughtWorks.
For each of the four domains mentioned, ThoughtWorks has a list of items divided in four classes: Adopt, Trial, Assess, and Hold. Adopt means the item is recommended to be used in the enterprise. Trial means the item is worth investing into it but should be used for low risk projects. Assess is for items worth considering and learning how can be used and what are their potential. Hold is for items that do not deserve attention and resources at this time.

Techniques
Compared to a year ago, all techniques recommended have moved up one or more notches. “Build pipelines” has moved from Trial to Adopt, “Lean Software Development” from Assess to Trial, while “Emergent Design”, and “Evolutionary Database” has jumped from not being charted right into Trial.
Tools
When it comes to tools, there have been more diverse changes compared to a year ago. IE6 was not considered last year, and now is suggested to be terminated as product. ASP.NET MVC moved from Trial to Adopt. Subversion has moved from Adopt to Trial because “Distributed Version Control” tools have moved from Hold to Trial. The whitepaper mentions rspec and Cucumber as “Next Generation Test” tools pushing the category into Assess. Other new tools have made their debut in the Hold zone, previously not being considered: Google Wave, Language Workbenches, and Polyglot Development Environments.
Languages
Perhaps this section brings the most intriguing suggestions. JavaScript has come from nowhere right into Adopt zone, move explained by the authors as following:
While JavaScript first appeared in 1995, it is only in the past couple of years that libraries such as Prototype and JQuery have helped the language become more accessible to a wider developer audience. As developers continue to embrace JavaScript for developing rich user web applications, we increasingly hold JavaScript in the same level of esteem as any other production language, ensuring that scripts are adequately tested, refactored and maintained.
C# has moved from Hold to the border zone between Assess and Trial due to its advances in the last year:
C# has continued to move forward with the adoption of language features such as lambda expressions, extension methods, object initializers and automatic property setters and getters, all of which are available in the 3.5 release of the language. With the 4.0 release of C#, we will see the introduction of a dynamic keyword and named and optional parameters, which will continue to bring C# more in line with languages such as Ruby and well ahead of the Java language.
The authors mention the fact that Java has been slow in adopting new features lately, the initiative being taken by other languages built on JVM, “languages such as Groovy, JRuby, Scala and Clojure.” They expect enterprises to “begin to assess the suitability of reducing the amount of Java-specific code developed in their enterprise applications in favor of these newer languages.” Because of that, the authors suggest assessing the end of Java as a programming language.
Platforms
Finally, when it comes to platforms there are not many big surprises with one exception: “Rich Internet Applications” which has been downgraded from Adopt to Assess/Trial being on the border between the two. The reason:
Our position on Rich Internet Applications has changed over the past year. Experience has shown that platforms such as Silverlight, Flex and JavaFX may be useful for rich visualizations of data but provide few benefits over simpler web applications.
Given that these toolsets have limited support for automated testing, it would suggest that a more traditional web application stack provides greater value for enterprise development. We recommend only using RIA platforms for rich visualizations incorporated into web applications, not as comprehensive development targets.
Firefox has moved from nowhere into Adopt because it “provides support for the widest range of platforms”. JVM has made the same leap being a “general-purpose virtual machine for other languages such as Ruby, Groovy, Scala and Clojure.” Another platform coming from nowhere is Android which is suggested for the trial phase. iPhone is a hot technology these days, and it is proposed for Adopt.
Javascript & Flex
by
Winston Dhanraj
Re: Javascript & Flex
by
Faisal Waris
I don't think javascript is for the average corporate developer.
I personally find Silverlight much easier to work with (don't know Flex but I suspect it would be the same) than any Web application framework. I agree that automated testing of RIAs is harder but that is probably just because the test tooling has to catch up.
Java at EOL? Can you take such a thing seriously?
by
Bojan Antonovic
There are things many languages and VMs are missing today (it's a long list). The future lies in more powerful VMs, not in incomplete languages. Support of multi-core processors is a must for the next successor. Java is prepared from the language side.
Before somebody talks (again) badly about Java, or even speculate of an EOL, (s)he should present a worthy successor which can be used in large projects without being a drawback in safety. The "Java killer" is still missing like the "iPhone killer". It's not impossible, but many successor candidates are a poor replacement.
Re: Java at EOL? Can you take such a thing seriously?
by
William H
I have to say also that given the calibre of the people involved in this the resulting document seems extraordinarily dumb. Martin Fowler surely must know better. When was a list of language features ever considered a good way to assess the quality of a language? Received wisdom isthe opposite - a list of well chosen features is way, way better than a kitchen-sink full of badly chosen ones. And when did rapid evolution of a language become a good thing? If you actually think about it all the most successful languages – Java, C, even C++ - actual evolve pretty slowly (the fastest on that list is actually Java by miles).
Conspiracy theory: Thoughtworks got caught out in the Ruby on Rails hype a couple of years ago and now has lots of dynamic language people sitting on the bench with nothing to do so are trying to convince the world that dynamic languages/DSLs and other interesting but niche ideas are the way to build software…
But seriously, the idea that enterprises should all abandon Java because it doesn’t (yet) have Lambada expressions in almost laughable. Particularly given
a) It sort of does and has done since 1996.
b) It will get something more complete this year.
It will also get an invokeDynamic keyword this year, ARM blocks, and a bunch of other small but useful features. It is also getting some hugely significant improvements to the garbage collectors and other performance gains. Oh and more improvements to multicore support (both Scala and Clojure use java.util.concurrent for their actor frameworks which seems to be me to somewhat undermine another chunk of the argument in this document).
Confusing recommendations
by
Paul Grebenc
On the other hand, the "cloud" made it all the way into solid "adopt" territory, when the concept for many companies is more a marketing term than a technology. Amazon has recently been in the news regarding slowdowns potentially due to overcommitment on capacity. By most other measures this list is quite conservative. Is it really time for any but the adventurous by comparison to "adopt" the "cloud"?
Re: Java at EOL? Can you take such a thing seriously?
by
Andrea Del Bene
I just don't understand why adding syntax features makes a language better then others...
Re: Java at EOL? Can you take such a thing seriously?
by
Faisal Waris
Gosling seems to favor Scala
I believe someone who has done functional programming will miss it in a language that does not support it (to be fair, Java 7 may/will have some support for lambdas).
Personally, now, I seem to favor languages with good type inferencing over dynamically typed languages.
Mixin like inheritance is a useful feature (this is missing in C# but not in Scala).
You can't discount Language Integrated Query (LINQ) in C#.
None of the above make a language unsafe.
Tooling support is essential - lack of tooling can greatly hinder adoption. This is a risk for Scala/Clojure.
Extremely ridiculous comments about Flex
by
SAgar Jadhav
I would say in that case with this experience you should not even think about writing about RIA and Flex in particular. There is absolutely no truth about the facts mentioned about RIA and specially Flex. I would like to understand the specifics about limited support for automated testing till then I would say that this observation is completely false.
Educational Content
Co-making Great Products
Jeff Patton May 22, 2013




Hello stranger!
You need to Register an InfoQ account or Login to post comments. But there's so much more behind being registered.Get the most out of the InfoQ experience.
Tell us what you think