Book Review - The ThoughtWorks Anthology: Essays on Software Technology and Innovation
Category Book Review ThoughtWorks Inc The ThoughtWorks Anthology: Essays on Software Technology and Innovation
I feel that every techie should take a step back once in a while and reflect on their profession. The ThoughtWorks Anthology: Essays on Software Technology and Innovation by ThoughtWorks, Inc. is one of those books that helps lead you down that path. While there are some good reads in here, the "level of resonance" will likely depend on your language of choice and development methodology...
Contents:
Solving the Business Software "Last Mile" by Rog Singham and Michael Robinson
One Lair and Twenty Ruby DSLs by Martin Fowler
The Lush Landscape of Languages by Rebecca J. Parsons
Polyglot Programming by Neal Ford
Object Calistentics by Jeff Bay
What Is an Iteration Manager Anyway? by Tiffany Lentz
Project Vital Signs by Stelios Pantazopoulos
Consumer-Driven Contracts: A Service Evolution Pattern by Ian Robinson
Domain Annotations by Erik Doernenburg
Refactoring Ant Build Files by Julian Simpson
Single-Click Software Release by Dave Farley
Agile vs. Waterfall Testing for Enterprise Web Apps by Kristan Vingrys
Pragmatic Performance Testing by James Bull
Based on the type of work that ThoughtWorks does and their development methodology, you'll understand and relate a lot more to the material if you're into things like agile development, Ruby, Ant, and other various open source software offerings. Granted, the argument could be made that *everyone* should be using those things, but the reality is that there are plenty of developers who don't or can't for various reasons. But once you get past that point, there's plenty of material here that should get you to think a bit... Lush Languages does a great job in turning the Java vs Ruby argument into one where you're considering multiple language options based on the problem domain. Polyglot Programming is also very insightful, as it addresses the use of multiple languages within a single project so that you can get the best of all possible worlds. If they are all running under the same JVM, there's few reasons not to take advantage of the various strengths. I also enjoyed the Object Calisthenics entry, as the exercises force you to rethink program design without resorting to techniques that can get out of control very quickly. Many of the other chapters are a bit more focused on topics that might or might not work for you if you're not already using that software/approach. You can always dig out one or two items that are not specific to the tool (as in development tool programming should fall under the same level of control and planning as production code), but you have to work a bit harder to get there.
If you're into the particular tools outlined here, by all means get the book and read it. If you're not at that spot for whatever reason, it's still worth reading. Just be prepared to work a little harder and/or realize that some of the chapters just won't do much for you.
I feel that every techie should take a step back once in a while and reflect on their profession. The ThoughtWorks Anthology: Essays on Software Technology and Innovation by ThoughtWorks, Inc. is one of those books that helps lead you down that path. While there are some good reads in here, the "level of resonance" will likely depend on your language of choice and development methodology...
Contents:
Solving the Business Software "Last Mile" by Rog Singham and Michael Robinson
One Lair and Twenty Ruby DSLs by Martin Fowler
The Lush Landscape of Languages by Rebecca J. Parsons
Polyglot Programming by Neal Ford
Object Calistentics by Jeff Bay
What Is an Iteration Manager Anyway? by Tiffany Lentz
Project Vital Signs by Stelios Pantazopoulos
Consumer-Driven Contracts: A Service Evolution Pattern by Ian Robinson
Domain Annotations by Erik Doernenburg
Refactoring Ant Build Files by Julian Simpson
Single-Click Software Release by Dave Farley
Agile vs. Waterfall Testing for Enterprise Web Apps by Kristan Vingrys
Pragmatic Performance Testing by James Bull
Based on the type of work that ThoughtWorks does and their development methodology, you'll understand and relate a lot more to the material if you're into things like agile development, Ruby, Ant, and other various open source software offerings. Granted, the argument could be made that *everyone* should be using those things, but the reality is that there are plenty of developers who don't or can't for various reasons. But once you get past that point, there's plenty of material here that should get you to think a bit... Lush Languages does a great job in turning the Java vs Ruby argument into one where you're considering multiple language options based on the problem domain. Polyglot Programming is also very insightful, as it addresses the use of multiple languages within a single project so that you can get the best of all possible worlds. If they are all running under the same JVM, there's few reasons not to take advantage of the various strengths. I also enjoyed the Object Calisthenics entry, as the exercises force you to rethink program design without resorting to techniques that can get out of control very quickly. Many of the other chapters are a bit more focused on topics that might or might not work for you if you're not already using that software/approach. You can always dig out one or two items that are not specific to the tool (as in development tool programming should fall under the same level of control and planning as production code), but you have to work a bit harder to get there.
If you're into the particular tools outlined here, by all means get the book and read it. If you're not at that spot for whatever reason, it's still worth reading. Just be prepared to work a little harder and/or realize that some of the chapters just won't do much for you.


