BT

Facilitating the Spread of Knowledge and Innovation in Professional Software Development

Write for InfoQ

Topics

Choose your language

InfoQ Homepage News Thoughtworks Technology Radar July 2011

Thoughtworks Technology Radar July 2011

This item in japanese

Bookmarks

ThoughtWorks recently published its Technology Radar; a report to help technology leaders understand emerging technologies, identify strategic platforms and tools and prepare their organizations for them.

The ThoughtWorks Technology Advisory Board is a group of senior technology leaders within ThoughtWorks. [...] The content provided in this document is kept at a summary level, leaving it up to the reader to pursue more detail when needed. The goal of the radar is conciseness, so that its target audience understands it quickly. The radar is graphical in nature, grouping items into techniques, tools, languages and platforms. Some radar items could appear in multiple quadrants, but we mapped them to the quadrant that seemed most appropriate. We further group these items in four rings to reflect our current position on them.

All recommendations are categorized into one of the following categories; Adopt, Trial, Assess, Hold; in decreasing order of strategic importance and risk. The report is divided into four quadrants that deal with Techniques, Platforms, Tools and Languages. According to the report some of the strategic programs the study identifies are:

  • Tools for effectively delivering and testing mobile web
  • Simple techniques for testing and obtaining performance
  • Several new approaches to business intelligence
  • Continued emphasis on continuous delivery and web based architectures

Techniques

Continuous delivery

Continuous delivery focuses on maximizing automation including infrastructure as code, environment management and deployment automation to ensure your system is always ready for production. It is about tightening your feedback loops and not putting off anything until the end.

Evolutionary Architecture

It provides the benefits of enterprise architecture without the problems caused by trying to accurately predict the future. Instead of guessing how components will be re-used, evolutionary architecture supports adaptability, using proper abstractions, database migrations, test suites, continuous integration and refactoring to harvest re-use as it occurs within a system. 

The report contrasts the RESTful architectures vs. traditional SOA in the context of evolutionary architecture and provides guidance on building service oriented architectures

RESTful APIs have become standard in our industry. A good REST API provides a simple, lightweight means of building customizations and integrations. One of the goals of SOA has been to decouple services by exchanging human-readable business documents instead of programming parameters. [...] The consequences of this are additional layers of complexity with no improvement in business flexibility. To avoid this, implementers of SOA should first understand the business meaning of their services, then implement human-readable contracts that are independent of legacy system implementation.
[...] Previously our advice has been to tread carefully when using the WS-* stack beyond the basic profile. Given the progress and acceptance of simpler web-as-platform techniques such as REST and OAuth and the known issues with the WS-*, it should only be used cautiously.

The report also shares opinions on development techniques and patterns such as command-query seperation, event sourcing, business intelligence techniques to build a data-warehouse

Disappointingly, we continue to see development teams embrace the practice of feature branching to isolate work and defer integration. Feature branches commonly cause significant pain and unpredictability during late merges, but more importantly prevent the continual design improvement necessary to maintain high quality software. We recommend continuous integration and branch by abstraction as an alternative to feature branching.

Tools

The report highlights various organizational goals geared towards agility, quality and performance; such as Infrastructure as code, tools to evaluate code metrics.

[...] If your test suites are growing slower and you have already verified that it is not a serious problem with your application, first make your tests faster, then look at parallelization. The Test Load Balancer (TLB) project is a big development in the world of parallel test execution.

Even though JavaScript increasingly plays a more important role in today's world of software development, it is still troublesome to organize in a clean structure. Backbone.js is a library which provides an MVC (model view controller) framework for JavaScript heavy applications. It allows developers to write JavaScript code in a more manageable and testable way.

The report also weighs in on popular tools like GIT, and warns of ALM tools with "implicit workflow" unsuitable tools for modern agile software development. Other tools that were on the radar include, JQuery Mobile - a mobile javascript library, Selenium 2 for testing web applications, Technologies like MongoDB, Riak, Neo4J, Cassandra and many others are helping power the NoSQL space.

Platforms

As far as platforms go, the study recommends mobile web as the best way to get content onto mobile devices; especially given the increasing support for HTML5 and the offline capabilities that come with it. The study also identifies cloud platforms such as Amazon Web Services (AWS) that continues to evolve its product portfolio.

Cloud Foundry is an open source Platform as a Service that can be deployed in your own data center or hosted by VMWare. At present Cloud Foundry supports Java/ Spring applications, Rails, Sinatra, Grails and Node.js. Additional services include MongoDB, MySQL and Redis. [...] Cloud Foundry is an interesting addition to the growing list of PaaS solutions. It is not clear what the relationship between vFabric and Cloud Foundry will be going forward.

Heroku is a beautifully simple Platform as a Service (PaaS). Although Heroku began as a Ruby on Rails platform, it is evolving to support a variety of languages and web frameworks, most recently Clojure. Heroku uses a standard stack and deploys applications with a simple Git push. Heroku's recent acquisition by Salesforce.com has not diminished its service quality.

Languages

The report also identifies Clojure and Coffeescript as interesting languages that have a vibrant community.

Clojure is a dynamic, functional language that runs on the JVM. Although its roots are in Lisp, one of the oldest computer languages, it also embodies many modern programming concepts, including lazy evaluation and advanced concurrency abstractions.

JavaScript is a powerful, ubiquitous programming language with tricky and error prone syntax. Coffeescript fixes many of the warts of JavaScript in a clean, simple syntax that generates readable JavaScript. For example, creating true private variables in JavaScript is a syntactic nightmare; CoffeeScript generates the technically correct but hideous syntax.

Be sure the check out the report.

¬

Rate this Article

Adoption
Style

BT