Categories
Book Review

The ThoughtWorks Anthology 2 – Book Review

The ThoughWorks Anthology 2 consists of a few essays on topics of interest for software developers.

The essays

– The Most interesting languages – covers a few languages with why they are used, basics on what is different about them and some examples.

  • Clojure – which has a nice transactional memory system and runs in the JVM.
  • CoffeeScript  – A layer on top of JavaScript that compiles to Javascript, which is inspired by Python and Ruby.
  • Erlang – Great fault-tolerance and resources for creating scalable servers.
  • Factor – stack oriented.
  • Fantom – runs on JVM and CLR – interesting system for inferences of types, nullable types.
  • Haskell – pure functional language, great concurrency support.
  • Io – pure OO, without classes, coroutines.

– Object-Oriented Programming: Objects over Classes

Interesting essay on how using an object focus vs a class focus, and thinking about object roles and avoid inheritance when possible. This helps reuses at runtime and makes it easier to change dependencies while running. Reminds me a lot of Ruby and ignoring types vs what the object can effectively do. It also makes mocking much easier. It also lists  languages with object-focused features, such as Ruby, Javascript , Groovy and Scala.

– Functional Programming Techniques in Object-Oriented Languages

Talks about functional programming techniques, such as using the transformational mind-set on collections and the patterns on which it usually appear, higher-order functions and others.

– Extreme Performance Testing

How to apply a more XP stance to performance testing. Recommendations on making performance testing part of the regular work on an agile way, including applying user stories, automated deployment, keeping a result repository and continuous performance testing in continuous integration.

– Take your Javascript for a Test Drive

Ideas and tools for testing  JS code.

– Building Better Acceptance Tests

Various useful ideas and suggestions for acceptance tests.

– Modern Java Web Application

Some useful suggestions on building web application. Mostly about Java, although some of it applies to all languages, such as server and client-side aggregation of contents, CDNs and the post redirect GET pattern (which is a common pattern on Rails, BTW).

– Taming the Integration Problem

Nice techniques on making integration easier.

– Feature Toggles in Practice

Easier ways to work on multiple new features at the same time, while keeping deploying new versions. Conditionals, using inheritance or compositions, annotations, run-time and build time toggles (the last is the one I've used the most)

– Driving Innovation into Delivery

Valuable ideas for making it easier for companies to innovate.

– A Thousand Words

Essay on Data Visualization. I am interested in the topic, and found the article somewhat useful.

Conclusion

Overall, I really liked the book and learned a lot. I have dozens and dozens of highlighted passages on my iPad Kindle app (Mobi version). The code listings are a bit hard to read, but they have an online link for a very readable version (you do have to be online, though).

Several of the essays were interesting or useful, but I feel that Object-Oriented Programming: Objects over Classes is the one that I can learn the most from in getting simpler designs for my projects.

 

By Luiz A D R Marques

I've been developing software and selling it on-line since 1994. Current products include STG FolderPrint Plus - a tool to Print Folders, and STGThumb - HTML Album Generator, among others. Some of my other sites - Disk Usage, Directory Printer ,Print Folders and Jejum Intermitente .