Pawel Duda github twitter

SoCraTes UK 2017

27 June 2017

During 15-18 June I participated at the SoCraTes UK 2017 (Software Craftsmanship and Testing) unconference which took place at Wotton House Wotton House in Dorking. This post is a summary of how I experienced it.

Thursday, 15th June

The evening was spent pairing with Iulian Ghionoiu on the Roman Numerals kata with 2 twists: we wanted to use property-based testing (we tried Kotlintest for Kotlin) and to evolve the requirements for the conversion (as though the final version of the Roman/Arabic numbers hasn’t been discovered yet). The evolution meant starting with only I’s (scratching a piece of wood or carving a line in the stone?). Then, we tried to imagine what problems that representation presented before coming up with solutions. The problems were:

We were pleased to find out that one of the hypotheses behind the origin of roman numerals was similar to our reasoning and states that the system was neither additive nor subtractive in its conception, but ordinal.

One other fun twist was that we were test-driving 2 functions simultaneously (convertRomanToArabic() and convertArabicToRoman()) by starting with the property-based test, which locked them to have to change at the same time:

convertRomanToArabic(convertArabicToRoman(x) == x

Friday, 16th June

10:00 in Azalea - Alistair Smith - Help me model my domain (DDD)

11:00 in Azalea - Oliver Nautsch - Consumer Driven Contracts (CDC)

12:00 in the garden - Aki Salmi - Opinions about opinions (being opinionated)

14:00-16:00 in Wotton 2 - Johan Martinsson - Bugzero (hands-on)

public void printStuff(int place) {
  System.out.println( "I was at " + place );
}

We wanted to push System.out.println up the call stack (that is make the printStuff return the String)

public void printStuff(int place) {
  System.out.println( textValue(place) );
}

private String textValue(int place) {
  return "I was at " + place;

Now printStuff can be inlined which will push System.out.println to the caller and leave textValue in the class.

16:00 in Azalea - Julian Harty - TDD with content

17:00 in Wotton - Retrospective

18:00 in Wotton - Esko Luontola - Lightning talks

18:00 in Wotton - Lightning talks

21:00 in 1877 (posh) - Werewolf

Saturday, 17th June

10:00 in Aster - David Green - Titanic Death (predictions with machine learning)

11:00-13:00 in Wotton 2 - Sandro Mancuso & Pedro Santos - Designing Microservices

title List of product Flow [QUERY]

Browser->+Content: getPage()
Content-->-Browser: SPA

Browser->+GetProductList: get(country, numOfProductsToRetrieve)

GetProductList->+ProductCatalogue: get(country, numOfProductsToRetrieve)
ProductCatalogue->-GetProductList: [ ProductInfo{PID, basePrice, ExtraInfo} ]

GetProductList->+Availability: get([PID])
Availability->-GetProductList: [ {PID, quantityAvailable} ]

GetProductList->GetProductList: Satisfy numOfProductsToRetrieve

GetProductList->+Pricing: get([PID, productType, availablity])
Pricing->-GetProductList: [ {PID, price} ]


GetProductList-->-Browser: numOfProducts * {productInfo, price, quantitytAvailable}

Browser->+Content: getProductContent()
Content-->-Browser: Images, Videos

Microservices have a huge cost (you can’t even experiment with it like with a single codebase) so let’s stress test our design:

Sandro Mancuso & Pedro Santos did this in the past in a real project:

First-level (public) bounded contexts -> Second-level bounded contexts
-----------------------------------------------------------------------
Catalog -> Media, Product, Tax, Pricing, Availability
Delivery -> Availability, Distribution
Order -> Mailer
Cart -> Promotions
Payments
Customer

14:00 in Azalea - Ian Russell - Strategic Domain Driven Design

15:00 in the garden - Aki Salmi - How to make a safe space

16:00 in 1877 (posh) - XP Cards Dionatan Moura - Extreme Programming Playing Cards

17:00 in Wotton 1 - David Heath - Liberating structures

23:00 in Bay - Sandro Mancuso - Mob Programming

Sunday, 18th June

Some Interesting Sessions I didn’t participate in

Johan Martinsson - Accelerated Learning

Matthew Butt - Church Bells

Next year

Thanks to