Swanseacon 2016 : An agile software craftsman’s view

SwanseaCon is billed as _”a technical event for Software Developers, Software Architects, Project Managers, Analysts and Consultants.”_ I fit in there somewhere so I decided to go! Here I want to share some thoughts on the event and the talks, to inspire you to learn more or even to turn up next year.

The [keynote](https://www.youtube.com/watch?v=W0lgoVXcgwk) was a great way to kick off the event and to inspire thinking on a wider range of subjects. [Simon Brown](https://twitter.com/simonbrown/) talked about the birth of agile and how it replaced _”big upfront design (BUD).”_ He argued that it replaced _BUD_ with no upfront design and deferring of decisions until too late. He talked about how agile was created as a backlash in response to previous ways of working, meaning that there was a tendency to forget, or even sneer at, the past. The talk was a reminder to _”not throw the baby out with the bathwater”_. Frameworks like the [Rational Unified Process](https://en.wikipedia.org/wiki/Rational_Unified_Process) is a great tool for risk analysis and [class responsibility collaboration cards](https://en.wikipedia.org/wiki/Class-responsibility-collaboration_card) are a great process for responsibility analysis. It was a thought provoking keynote to remind us that just because some tools are _old_ it doesn’t mean they aren’t useful in the right time or place.

![](/blog/content/images/2016/09/swans_3_keynote-2.png)

The next session was a hands on explanation of [Kano Analysis](https://en.wikipedia.org/wiki/Kano_model) by [Dave Grant](https://twitter.com/seize_the_dave). I hadn’t heard of this before hand but it is a quite interesting way to understand what features to build next for your product. You ask yourself questions about your product and get a group of users to answer if they like the idea, expect it, neutral to it, tolerate it, dislike it. Grouping users and features you can see what will give you the biggest return over time. It was interesting to learn about for the first time and I would like to try it again soon.

![](/blog/content/images/2016/10/Kano_model_showing_transition_over_time.png)

[‘It doesn’t always have to be scrum’](https://www.youtube.com/watch?v=w4yUJ2G7-dU) by [James Harvey](https://twitter.com/agilesnap) was a great reminder that there are other methodologies out there besides Scrum. If you think of agile as an umbrella you can do [scrum](https://en.wikipedia.org/wiki/Scrum_(software_development)), [kanban](https://en.wikipedia.org/wiki/Kanban), [less](https://en.wikipedia.org/wiki/Large-Scale_Scrum_(LeSS)), [dad](https://en.wikipedia.org/wiki/Disciplined_agile_delivery), [dsdm](https://en.wikipedia.org/wiki/Dynamic_systems_development_method), [SAFe](https://en.wikipedia.org/wiki/Scaled_Agile_Framework), [lean](https://en.wikipedia.org/wiki/Lean_product_development) and probably more. It was a real eye opener to other possibilities and shows that being agile is all about adapting your process to work with the people around you, not forcing your team into Scrum by default.

![](/blog/content/images/2016/09/swans_1_scrum-2.png)

‘Understanding abstractions’ by [Matt Ellis](https://twitter.com/citizenmatt) was an *informative* talk attempting to explain how abstractions can save us time but they do not save us from learning. Unfortunately it doesn’t look like it was recorded and I don’t think I can do it justice here. Matt explained how regular expressions work and how they are an abstraction that we don’t need to know what they do… until we do. Recommended further reading is, [_The law of leaky abstractions_](https://www.joelonsoftware.com/articles/LeakyAbstractions.html) and [_catastrophic regular expressions_](https://www.regular-expressions.info/catastrophic.html).

‘How deep are your tests’ by [Thomas Sundberg](https://twitter.com/thomassundberg) was a play on words to describe the [testing pyramid](https://martinfowler.com/bliki/TestPyramid.html). The aim was to promote thinking at each level of the pyramid about what you were testing and what the depth of those tests was. It referenced the book [Growing Object Orientated Software Guided by Tests](https://www.growing-object-oriented-software.com/) and attempted to build on top of its ideas, to not just assume once the tests are written they should not be left alone; ask questions of your testing suite, around diagnosis of bugs, speed of the tests and confidence in the results.

![](/blog/content/images/2016/09/swans_4_deep.png)

‘Introducing eager design’ by [Marcello Duarte](https://twitter.com/_md) continued nicely on where the keynote had left off. Marcello explained how a lot of things you develop are _easy to implement_ and you should concentrate your effort on starting with that which is hard. He boiled it down to four prerogatives:

– Jump to the problem worth solving
– Eagerly replace primitive types
– Compose (the domain algebra) inside out
– Avoid mutable state

He gave many intriguing references and I couldn’t keep up to write them all down but am excited to read/watch what I did get: [When cucumbers go bad](https://cucumber.io/blog/2014/09/10/when-cucumbers-go-bad), [Modelling by example](https://stakeholderwhisperer.com/posts/2014/10/introducing-modelling-by-example), [Meaning of OO](https://userpage.fu-berlin.de/~ram/pub/pub_jf47ht81Ht/doc_kay_oop_en) and [The value of values](https://www.youtube.com/watch?v=-6BsiVyC1kM).

[‘Teal organisations’](https://www.youtube.com/watch?v=PUJYnX0wsbM) by [Sandro Mancuso](https://twitter.com/sandromancuso) was a real insight into the choices and responsibilities in building a company. Sandro is taking the craftsmanship approach to organisational structure in his company. Having everyone responsible for making company wide decisions (if they have a proposal and a backing of X other employees). It also means having company public financials and being explicit about pay rises and who earns what. There are no ‘support’ roles (HR, hiring, accounts) so that responsibility is on the developers and this talk explained some ideas on how to make that work. My main takeaway was around team organisation, explaining how you rely on each other as team members, and that when a team changes it is a different team. This really impacted me in my thinking of a team makeup and how this affects some of our own team rotation.

> Teams are immutable if you add or remove people it is a different team

![](/blog/content/images/2016/09/swans_2_teal.png)

The venue was smart and compact inside of the Swansea football stadium, with rooms either side of the main area and the food / sponsors in the middle. There were ongoing sponsor competitions for winning books or consultancy time, and free cakes for talking to the facilitators of some stands (always a winner).
One really cool thing about Swanseacon is they had a dedicated sketchnoter. This was an artist who attended every talk and summarisedtried to summarise each talk in the form of a sketch note ( _which was a great reminder for me to look back at to write this blog post_ ). There where two tracks and I don’t have a time turner necklace so I missed half, but you can catch those that where recorded on the [YouTube channel here](https://www.youtube.com/playlist?list=PLuwLXxYvpU1kMz6pnGRLCAIeM_Pff6H2U).

![](/blog/content/images/2016/09/swans_6_notes.png)

Software craftsmanship and agile processes are at the heart of the [SwanseaCon](https://swanseacon.co.uk/) talks. I hope my brief insight into some of the topics and technologies have inspired you to go learn more on some of the interesting subjects. Software craftsmanship is about continuous learning and development and I personally will be looking for more conferences to go to next year, if you have any recommendations please [get in touch](https://twitter.com/blundell_apps).