During 6-9 June I participated at the SoCraTes UK 2019 (Software Craftsmanship and Testing) unconference which took place at Wotton House in Dorking. This post is a summary of how I experienced it.
Thursday, 6th June
the first evening was kicked off with a session of lightning talks
my favourite was probably Maaret’s PowerPoint Karaoke on the topic of parenting using her own app that randomly selects 5 pictures from her computer
soon after Dmitry and myself decided to run a mob programming session focusing on TCR using Tennis kata
I enjoyed our style of rotation with each person having 5 minutes at the keyboard and then everybody moving clockwise to the next seat at the table, a bit like at Mad Hatter’s tea party
Friday, 7th June
10:00 in Wotton 2 - Daniel Irvine - Cheating: Confessions of a crafter
Daniel noticed in his TDD-based development process he might occasionally “cheat” by deviating from the strict TDD rules. Here’s how he defined what a cheat is:
“Any shortcut that you apply to your development process after which an outside observer couldn’t tell that you used the shortcut, i.e. it looks like you followed strict TDD”
@sleepyfox pointed out a cycle “leaders -> disciples/followers -> scripture -> dogma -> heretic -> leader…”
he was wondering what the next “heresy” (in the positive sense) on the horizont might be
12:00 in Aster - Tim Schraepen - Roleplaying a toxic pair (discover how you react)
Tim was pretending to be a toxic colleague you have to pair with
a number of people joined him and after each round we discussed why was the relationship problematic
Tim metamorphosed from one round to another adding new toxic traits to the person he played
I participated in the last round in a scenario where Tim’s company had approached my consultancy to speed up their project development
it was immediately pointed out that we’re incompetent and that we would add more value when standing in the corner of the room rather than typing code
a defence case from my side was countered with “I wasn’t asking, I was telling” (that’s one way to apply Tell Don’t Ask ;-))
we had a few laughs but even in a safe environment I found it wasn’t easy to properly respond to some toxic behaviours in a polite and respectful way (especially when threatened they will cancel the contract)
Tim got us thinking how we would respond should toxic behaviour occur in a real situation
if you’re in gender minority, your way of expressing emotions might not be familiar for the rest of team (e.g. crying at desk)
scenario: fix a bug with deadline
This bug is hard (true) -> I hope I can fix it before the deadline (reasonable) -> We won’t ship in time and I’ll get fired (unlikely) -> I’m a terrible developer and my carrer is a lie (unreal)
what did I feel: anger, resentment, frustration, demotivation
find the cause of the feeling: anger, tiredness, hormones, flu, feeling overwhelmed, upset about another issue, confidence/imposter syndrome
addressing the problem:
physical issues: address them (sleep longer next time)
temporary issues: might be better next week (focus on not feeling guilty or scared;); switch to a gentler task now
task overloads or time pressure: temporary todo lists; prioritise and say “no”; find privacy
confidence/impostor syndrome: meet people and talk about it: teach, list your accomplishments
so next time you notice hints of meltdown approaching, step in the middle and take a reaction, e.g.:
this is bug is hard -> I hope I can fix it before the deadline -> ! This freaked me out last time -> If I find some privacy and cancel some meetings, I can do it :)
book recommendation: 10 Steps to Positive Living - it recommends replacing anxious with being concerned about something
12:00 in Wotton 2 - Chris Neuroth - Roleplaying microservice designs
we staged something that resembled a little theatre play where each person was a microservice in the system
roles/microservices were: load balancer, authorisation, database, bank statement, users, etc.
we played a number of rounds. Each round looked back at the problems (e.g. too much work for authorisation system) and made improvements (e.g. adding a load balancer)
14:00 in Courtyard Suite - Raimo Radczewski - Why do you have to go and make things so complicated? Help me overcome tech fatigue
Raimo’s theory: we picked tech as a hobby which turned out to be well paid so it became our job later. Our daily work might be boring but we get a kick out of the exploratory stuff (as it’s more like our hobby); possibly creating complexity
industry presents things as easy. Should it? @sleepyfox’s team banned the word “just” (“let’s just set up a new server”).
Oliver: Cynefin helped me most in last years. Don’t try to do everything on your own. Some things are complicated - just ask experts to help you. Some other things are complex - there is no apparent input-outputs relation. You can just poke the system and see what happens (no reason to be stressed about it)
Raimo: the word expert creates an air of unreachable and thus might have negative impact on others (how about calling them “people who worked on something for quite long”?)
don’t rely on your heroes - rely on your team
strive for simplicity (with its own not unsignificant cost)
3 stages of TDD as a function of currentBottleneck->practiceToEliminateIt: mistakes->test-first development, design->test-driven development, patterns (problems in tests translate to problems in code)
Sharath had implemented rock-paper-scissors in 4 different ways, with computer using different strategy in each way
our goal was to form a team of testing mob who is trying to figure out what the 4 types of logic are
we had one person on the keyboard (driver) who had to wait for instructions from 1 decision maker (navigator). Navigator would take their decision given the discussion of the whole team.
details (please hit enter, then type rock, then confirm with enter)
ideally the navigator should start with intent and only move up the level of details if required (for example focusing too much on IntelliJ shortcuts is too detailed; better start by letting the driver figure out how to do the task themselves)
Evening
Oliver explained how he’s recently been working in 2 minutes increments (commit or revert after 2 minutes) in order to have very fast feedback loops