Sebastian has been a great asset both in reviewing our PHPUnit codebase and in training our team. One area where he has been especially helpful is in helping new hires familiar with unit testing in other languages transition their skills over to PHP and PHPUnit.

For 11 years, we have been sharing our experience,
based on over 100 years of IT practice.

We are leading experts for software development,
specifically using PHP and related technologies.
We have given over 224 presentations
at 114 conferences
on 6 continents, including 8 keynotes.
We have contributed to the PHP project, presented at
44 meetups, published 14 books
and presented and lectured at universities.

SoCraTes

Last week I travelled to Soltau, Germany to attend SoCraTes 2014, the fourth
edition of the International Software Craftsmanship and Testing Conference.
It was my first SoCraTes and will definitely not have been my last as I am
already looking forward to next year's edition.

SoCraTes started late in the afternoon on Thursday using the World Café format.
This is a "structured conversational process in which groups of people
discuss a topic at several tables, with individuals switching tables
periodically and getting introduced to the previous discussion at their new
table by a table host". I ended up being a table host and enjoyed the three
discussions (25 minutes each) we had at "my" table.

Thursday concluded for me with a fun session of "Forbidden
Island". While playing this cooperative board game we discovered that
its objective is very similar to software development projects (something
that I already observed last
year for a card game): "As the game progresses, more and more island
tiles sink, becoming unavailable, and the pace increases. Players use
strategies to keep the island from sinking, while trying to collect
treasures and items. As the water level rises, it gets more difficult
– sacrifices must be made." We quickly compared the rising water
level to technical debt. After the game we decided to propose a session on
adapting the game to our domain of software development.

Friday and Saturday were organized using the Open
Space format. Pierluigi Pugliese "opened the space" and then
participants started to propose sessions and schedule them to avoid
conflicts. I really wanted to attend "The Super-Tasty DDD Workshop" in the
first time slot but by the time I got to the room it was already packed. I
floated around the other sessions instead and ended up in a tent outside
were microservices were discussed. Afterwards I joined a discussion
roundtable were participants shared their experience with regard to
apprenticeship. The shift from the "Junior Developer" vs. "Senior Developer"
terminology towards "Apprentice" and "Craftsman" that was dicussed appeals
to me. In the next slot I joined Doug Bradbury, one of the initial
signatories of the Manifesto for Software
Craftsmanship in which he reflected on the discussion that lead to the
manifesto as well as how the ideas of the manifesto can be applied and
interpreted.

In the next time slot I learned Zendo, "a game of
inductive logic [...] in which [a master] creates a rule for structures
(koans) to follow, and the [the students] try to discover it by building and
studying various koans which follow or break the rule". After we understood
the game we tried to implement an algorithm for the inductive logic using
test-driven development. Unfortunately I had to leave the session before we
actually got to programming. My last session before dinner was the "Is TDD
dead?" discussion. It was kicked off by participants role-playing David
Heinemeier Hansson and Kent Beck having their discussion. Since I had
followed that discussion, I did not learn anything new in this session but
it was still entertaining. After dinner I hosted the "Release
of Doom session where we discussed how we can adapt "Forbidden Island"
(see above) to have a software development theme. Of course, we did not
finish what we set out to do but we want to keep in touch and continue
thinking about this idea. Maybe we have something to show for it at next
year's SoCraTes.

Saturday started for me with a very interesting session on Bottom-Up TDD and
Specification-by-Example. Adi Bolboaca started with a summary of the two
major styles of Test-Driven Development: Classicist TDD (also known as the
Chicago School of TDD) and Mockist TDD (also known as the London School of
TDD). With Classicist TDD, tests can touch the outside world, test state,
use stubs, and the code is written bottom-up. Whereas with Mockist TDD,
tests test in isolation, test collaboration, use mocks, and the code is
written top-down. And when you apply Domain-Driven Design then you start
neither at the top nor at the bottom but rather in the middle. After this
introduction, Adi continued with a step-by-step example of "Test-Driven
Development as if you meant it". In this variation of Test-Driven
Development you write exactly one failing test, make that test pass by
writing production code in the test, and then later apply refactoring
patterns to move the production from the test class to a production class.

Next up for me was "Legacy Code by Example" where Aki Salmi walked us
through a legacy code base that he recently "inherited". He showed us the
refactoring that he had already done. The session quickly turned into an
interesting discussion on how to best deal with legacy code. In the final
session that I attended before I had to leave was on using Docker and
Vagrant to configure and provision the ELK stack (ElasticSearch, logstash,
Kibana). Eberhard Wolff did a great job in this session interweaving the
topics (Docker/Vagrant and ELK Stack) in such a way that you could learn the
basics of both. Even after leaving the venue, though, SoCraTes continued for
me. Almost ten other participants left the conference around the same time
as me and we all ended up on the same train to Hannover. What would
otherwise have been a rather boring train ride turned into an interesting
discussion of various topics.

SoCraTes was an amazing event that lasted 48 hours during which almost 150
people collaborated and shared ideas. It is run as a non-profit, low-cost
event by the community of all German-speaking Software Craftsmanship groups.
I would like to congratulate everyone involved – especially Nicole
Rauch, Benjamin Reitzammer, and Pierluigi Pugliese – on a job well
done. Thank you!