GOTO Copenhagen 2017


Last month we attended the GOTO Copenhagen conference. Thanks to everyone who organised it!  Now that videos of most of the talks are available to watch online, we wanted to share our experience and favourites.

General Themes

The conference had a great set of speakers. It’s interesting to see some general trends that cut across the talks, even if they’re about very different things. A few themes jumped out at us:

  • Best practice is often tied to technology, sometimes more than we think.  Whether we’re looking at the inherent benefits of different languages or the difference between monolithic and microservice (or serverless) architectures, best practice should be reviewed. This isn’t an excuse to throw best practice out, but we need to continually review why it’s relevant.  (See Mark Seeman – Functional Architecture and Gojko Adzic – Designing for the Serveless Age)
  • Teams are (or should be) moving away from strict roles. As with some tech-tied best practice, it made sense to have organised roles when we required strong specialisation. Developers should test, deploy, be responsible for their code in production (including traditional dev-ops roles like monitoring the health of their services). In return, developers need to have a larger understanding of their role in business – developers have to understand that they aren’t just developers on a project, they’re developers in a team and in an organisation. It’s up to us as developers to become engaged and drive the whole organisation forward as best we can.  (See Dan North – Beyond Developer and Laszlo Fogas – The Self Service Developer).
  • Data science is applied AI. Outside of philosophy (or the pub), AI isn’t a particularly useful term. Data Science and its disciplines are better understood and have more useful ways of talking about computer intelligence.  (See Phil Winder – The Meaning of (Artificial) Life and Michael Green – Improving Business Decision Making with Bayesian AI)

Favourite Talks

There were so many good sessions that choosing our top 5 was no easy task.  But we had a go anyway!  Here are the talks that we would recommend finding time to watch:

Mark Seeman – Functional Architecture: the Pits of Success
Mark Seeman is an old favourite of ours – we’ve had his book on Dependency Injection on our must-read shelf since it was released.

Mark focuses on functional languages and how they avoid (by design) some of the problems we see in object oriented languages. He focuses on three “pits of success” – areas which are solved in C# by best practice, but which “just work” in F# (or any other statically typed functional language).

Tomas Eilsø – Scrum vs. SAFe
The title might not sound exciting (conference topics rarely do), but Tomas really delivers. His talk was not focused on the details of SAFe, but on the underlying principles. Tomas uses stories from his experience as a fighter pilot to illustrate how the military organises teams and communication between them to allow making fast decisions at the team level, but still coordinating with the larger plan.

Our favourite slide title was “Fighter Pilot Tactics for Winning in Business, Conflict and Life”.

Woody Zuill – Mob Programming: A Whole Team Approach
As frequent pair programmers we were interested to hear about how others have used an extended version of this technique: mob programming. Woody presented the idea of an entire team – developers, designers, product owners, stakeholders – working on the same problem, at the same time, on the same computer. Each person takes turns “driving” the keyboard, while everyone else “navigates” and tells the driver what to do.

The driver is essentially an input device to a computer. Where a keyboard can only input characters into a computer, a driver can input the navigators’ ideas.

Vijay Reddy – Machine Learning with TensorFlow and Google Cloud
Based on an excellent tutorial, Vijay took us through the process of training and using a TensorFlow based computational graph (a series of TensorFlow operations) to estimate house prices. This is a great intro for anyone that isn’t familiar with machine learning, or anyone looking to use Google’s machine learning platform. The standout message for us was the idea of composing machine learning tools together (including pre-trained tools, like Google’s image classifier) to produce far better solutions than trying to produce a single perfect classifier.

The example Vijay shows for this is a car image classifier for a used car website. Rather than putting all the images through a single classifier, use multiple classifiers to handle specific problems like removing bad images, identifying the whole car vs parts of a car.

Michael Green – Improving Business Decision Making with Bayesian Artificial Intelligence
Michael had a particularly interesting take on why the current approach to artificial and machine intelligence can only take us so far. Until recently it has been impractical for machine learning to perform inference due to a lack of computing power. Now that the computing power is available, we should stop taking these shortcuts, and remove needless assumptions from our statistical models.

Additionally, he reinforced the need to build AI and MI applications responsibly and without confirmation bias, a message that felt very relevant now that machine learning is more accessible than ever with tools like TensorFlow.

Bonus Extra Talk: Dr Phil Winder – The Meaning of (Artificial) Life
We couldn’t get away without mentioning the comedy highlight of the conference – when Dr Phil Winder asked an expert system designed to answer questions to find the answer to “What is the meaning of life?” in a chapter of The Hitchhikers Guide to the Galaxy. DeepThought answered 42, our artificial intelligence answered “terrible stupid catastrophe”.