Jay Fields

twitter: @thejayfields
github: jaycfields
linkedin: Jay Fields
instagram: jaycfields


Working Effectively with Unit Tests (Author): Unit Testing has moved from fringe to mainstream, which is great. Unfortunately, developers are creating mountains of unmaintainable tests as a side effect. Working Effectively with Unit Tests details my opinions on the best way to test, while acknowledging alternative styles and contexts in which tests are written. Whether you prefer my style or not, this book will help you write better Unit Tests.

Refactoring: Ruby Edition (Author): Refactoring, Ruby Edition, blends the original content of Martin Fowler's Refactoring with lessons of the past 10 years, resulting in a thorough demonstration of how Ruby practitioners can realize the significant benefits of Refactoring.
| Errata |

Refactoring: Ruby Edition (in Japanese) (Author): See above description.

Advanced Rails Recipes (Contributor): With the help of a community of Rails chefs in the kitchen, here are 84 new ways to kick your Rails apps up a notch. Advanced Rails Recipes is a collection of practical recipes for spicing up your web application without a lot of prep and cleanup.

Successfully Adopting Pair Programming

Successfully Adopting Pair Programming
I take a look at pair programming from an adoption perspective. This article is for you if you already know what pair programming is and guidance on how to get to the point of successfully practicing pair programming. I go over everything from an optimal seating arrangement, to effective coaching techniques, to calling out common mistakes to avoid.

The 5Ws of DSLs

The 5Ws of DSLs
This presentation recorded at QCon SF 2008 represents an introduction to Domain Specific Languages. Jay Fields responds to the following 5 questions of DSLs: What, Who, Where, When, and Why?

Testing Dynamic Web Applications

Available on Web Builder Zone
At RailsConf Europe, in the Q & A portion of my talk on Functional Testing someone asked what I recommend for testing Javascript. Ugh. Testing Javascript. Is it possible to recommend something when everything you've seen is terrible?

User Story Estimation Techniques

Available on InfoQ
One of the great things about working as a consultant is the ability to try out many different ideas and adapting your personal favorite process to include things that work. This article gives the details about user story estimation techniques that I've found effective.

Business Natural Languages Development in Ruby

Available on InfoQ
Jay Fields presents his concept of Business Natural Languages (BNL). BNLs are a type of Domain Specific Language, designed to be readable by any subject matter expert, which allows to create maintainable specifications and documentation. The example language is shown using Ruby.

Duplicate Code in Your Tests

Available on Architect Zone
Sadly, DRY has become a philosophy that is dogmatically and blindly applied to every aspect of programming. I'm a big fan of firing silver bullets but if you go that path your number one priority needs to be finding where a solution does not fit. In fact, those who have applied DRY excessively have found that there are situations when DRY may not be advantageous.

Software Development Lessons Learned From Poker

Available on InfoQ
I wasn't always a software developer. The two years before I joined ThoughtWorks I lived primarily off playing poker. Of course, if you've ever asked me about the tattoo on my forearm, you've already heard the story. If you haven't, feel free to ask me next time we get a drink together.

I've never regretted spending so much time playing poker. I believe it taught me quite a few lessons that apply widely to other topics. In fact the more I develop software the more I'm convinced that the two jobs are incredibly similar...

Evaluation Options in Ruby

Available on InfoQ
One of my favorite features of Ruby is the ability to evaluate a string or a block of code. Ruby provides a few different types of evaluation options; however, the evals I use most often are: eval, instance_eval, and class_eval...

Jay Fields and Zak Tamsen on Domain Specific Languages

Available on InfoQ
Jay Fields and Zak Tamsen have successfully worked with non-technical domain experts to design Domain Specific Languages for some of their projects at ThoughtWorks. In this interview with InfoQ they describe their motivations for using DSLs, and describe how they can be used to empower the business, reduce development time, and increase the agility of projects.