I visited the Trader Media offices in Newton-le-Willows on July 26th. I spent almost the entire day with them and had a great time.
The Newton-le-Willows campus takes up three buildings on the outskirts of the town. One houses administrative staff, another has a couple of development teams, and the last is entirely development and operations. In addition to the Newton-le-Willows office there is also a development team in Wimbledon.
I got signed in at the reception in the administrative building and Stuart Taylor came over and took me to the cross-team and cross-site morning standup with the developers in Wimbledon via video conference. We unfortunately got there right near end, but that means that it was a nice short and sweet standup. I got introduced and then everyone split up.
Stuart and I spent the next hour or so visiting all of the various teams and taking a look at what they were up to. Each team lead, and anyone else who cared to listen, got the same spiel time after time from Stuart about who I was and what I was doing. After about the 5th or 6th time he turned to me and said “I’m getting really tired of saying all of this.” I was thinking he probably was, but good on him and a big thanks for not forcing me to do it 🙂
There are quite a few teams at Trader Media. Each is responsible for a different product of the company: the main website, the mobile apps, the core data, the car dealer sites, etc. Each team also gets the freedom to decide how they want to work, how they want to visualize their work, what tools they want to use, and just about anything else.
Pretty much all of the development teams were surrounded by information radiators of their workflows. Even the ops group was starting to use one. I found that to be very cool, since it is something that you don’t see all that often. The guys that we talked to there said that when they had first put it up it had force a realization of how much work they had in process and has caused them to concentrate on reducing that number. They even had a cumulative flow diagram visible that showed that as they reduced the WIP the amount getting done was increasing!
Working on a Feature
Once the parade through the buildings was done we returned to the first team that I had met and I sat down to pair on a reworking of the login and registration features of the main website. We started out by looking at a test and had a great time discussing the feature as well as how the test was written. The guy I was with (sorry, I’ve forgotten the name!) showed me the various ways that they write up automated tests, including the tests written in Twist.
I found Twist to be interesting, and seeing the various ways that they had tried writing tests in it very informative. The tests are written in very much the same way as Cucumber tests with a text form that is executed by code written to a convention. I saw a couple different ways of writing the tests as the team learned how best to use the tool and express their intent. The styles ranged from the basic “click this button then type in this field” to the more advanced “search for Ford Focus” style.
After a while of talking about this evolution I showed another way of writing the tests in straight Java with my remake of Antony Marcano’s ideas using Narrative. This of course then sparked a whole lot of questions and thoughts about ways of making testing code re-usable and understandable to all parties involved.
Being on a Greenfield Project
After lunch I moved over to a new project that they are working on that has not yet been released. I won’t go into any details of what the project is going to offer, but I found the way they were working on it really interesting and some of the technology that they had put together very cool.
The HTML generating was done by creating a way of running jQuery on the server. They had to re-implement parts of jQuery in order to get this to work to their liking. However, since the normal jQuery is what existed in the browser they needed to make sure that both versions behaved in the same manner. To this end there is a suite of characterization tests than are run against both versions.
The data validation was a work in progress when I was there, but the basic idea is straightforward. Define an interface for a validation function and then run it on both the client and the server. They had this working already in basic, single-value cases.
The interesting thing about this framework was that it was built from a lot of existing libraries and a lot of refactoring. The team kept revising their understanding of the domain and the needs of the application and spending the time to refactor the system to express this better. While I was there this process took another step as we came to a realization about how the workflow of the application might be expressed. Unfortunately I didn’t get to see much of the implementation of the idea as the day was drawing to a close.
I cycled my way out of Newton-le-Willows just before the evening rush-hour started. It was a great day in which I got to see a lot of great work and a wonderful diversity of ways of getting stuff done.
I quickly made my way to Birchwood and found the business park in which the DWP building can be found. After confirming which building I needed to go to the next morning I crossed the street and checked into the Ramada Encore.