• en | es

Testing legacy code with Golden Master

As a warm up for SCNA, the Chicago Software Craftsmanship Community ran a hands-on coding session where developers, working in pairs, should test and refactor some legacy code. For that they used the Gilded Rose kata. You can find links to versions in java, C#...


The Spirit to Improve

This week in our weekly design committee, on of the developer demonstrated how to use the Saxon Injectors to create mock XQuery functions for unit testing. It's been one of the biggest problem with our use of XQuery and the developer solved it in his...


The best approach to software development

Today, talking about doing a big design up-front (BDUF) sounds a bit ridiculous, right? Who would do that? That's not craftsmanship, is it? However, in the past, that would be considered the norm. Writing requirement documents, drawing architectural and very low level detail diagrams was...


Encouraging Collaboration via Design Committee

Agile process promotes the view that system design emerges and evolves throughout it's life. It is a result of continuos discussions and decisions by the teams. On large projects with multiple teams, the ideal of involving everyone in design discussion becomes very cumbersome. Even if...


Encouraging Collaboration via Review Branches and Pull Requests

I have always advocated the use of a small well balanced team for projects rather than many less experienced ones. However this is not always possible. Some time projects require a very fast ramp up with a much larger set of teams where achieving a...


Curing Agile Hangover with Craftsmanship

Curing Agile Hangover with Craftsmanship Agile adoption brings into focus the shortcomings in the existing engineering practices. After undergoing an Agile transformation for a few years at UBS, where the focus was heavy on process and light on the technical disciplines, it is an understatement...


Test-driving Builders with Mockito and Hamcrest

A lot of people asked me in the past if I test getters and setters (properties, attributes, etc). They also asked me if I test my builders. The answer, in my case is it depends. When working with legacy code, I wouldn’t bother to test...


Testing multiple properties with single assertion

Every time I was trying to test an object's properties I was neither satisfied writing very verbose tests nor in using some of the out of the box hamcrest matchers. Although using the matchers was a big help, I never managed to make them read...


Extract, Inject, Kill: Breaking hierarchies (part 3)

In part one I explain the main idea behind this approach and in part two I start this example. Please read parts one and two before reading this post Although the main ideas of Extract, Inject, Kill is already expressed, it's good to finish the...


Extract, Inject, Kill: Breaking hierarchies (part 2)

In part 1 of this post I explain the problems of using the template method in deep class hierarchies and how I went to solve it. Please read it before reading this post. Here is a more concrete example in how to break deep hierarchies...


Subscribe to newsletter