When you live in Scotland, and the sun is shining, and it’s a weekend, it’s important to make the most of it. It’s time to dust off the barbecue as you can’t be too sure you’ll get another chance this year. So of course I enjoyed the beautiful weather this Saturday (14th May 2016) sitting in a conference centre with 400 sweaty geeks, finding out how Scotland builds its software. As the sun shone, the Developer!Developer!Developer! (DDD Scotland) conference at the GTG conference centre in Edinburgh was underway.

The DDD bills itself as a conference for developers, organised by developers. It’s free. It’s on a Saturday (so no need for a day off work and for contractors it won’t impact on billable hours). Speakers are from the community and the sessions are chosen democratically. This year the DDD returned Scotland after a five year break, stronger than ever with more than 400 developers signing up.

There were quite a few sponsors supporting the event (Arnold Clark, Scott Logic, Microsoft, NDC Conferences, TechSmith, Crane ware and DevExpress) but the Scott Logic team seemed to be the most heavily involved in the event organisation, so kudos to them for supporting Scotland’s tech community.

There were quite a variety of topics on offer, probably with a bias towards web development and Agile, but there were also talks on machine learning and embedded systems sprinkled among the enterprise stuff. Picking which sessions to attend was tricky; each session was quite a commitment at an hour long, and so as soon as I chose a room, buyer’s remorse tended to kick in. However, I managed to cover a fair range of different talks during the day.

Raymond Davis’ (Skyscanner) talk on “Breaking the Monolith” was exactly what I was hoping to get out of the conference.  This was an engineer simply sharing his specific experience of solving software problems at the company he works for without pushing an agenda other than what has worked for him. Of course Microservices are the latest enterprise buzzword, but this talk was much better than anything you’ll read in a book.

Raymond talked us through a brief history of the Skyscanner architecture, explaining how the company morphed from “a medium-sized business with a website” into a global tech company. Starting with the original “Website Framework”, which was basically a .NET app with a custom template, Raymond talked us through the first transition from the “Old Website Framework” (nicknamed Mater) to the “New Website Framework” (NWF).

While this was a big step forward and allowed the company to scale and expand its product range, it was still a monolithic architecture. As the company took on more and more engineers, frustration started to develop as the increase in staff was not increasing the rate of new features being released. Engineers were tripping over one another and new functionality was sitting in “release train hell” instead of adding value to the business.

Two initiatives were adopted to unblock the log jam. The adoption of the Spotify Squad model (the topic of another Skyscanner DDD talk that I didn’t make it to) and “breaking into” a Microservice architecture. The approach they took employed the Varnish cache server, using Edge Side Includes (ESI) to assemble the web page from calling multiple Microservices via a simple REST API. This architecture enables each team to release “at its own heartbeat”, choose whichever technology they think fits the job and delivers lots of small, well understood services rather than a cumbersome monolith.

I also hugely enjoyed Clarke Ching’s talk on Agile estimation techniques, with the title “Lesstimating: how to fix estimating by doing less of it, not none of it”. Clarke is one of those people you instantly warm to with his gentle humour and calm, reassuring manner. I’ve not seen many people handle an AV blip halfway through a presentation with such unflustered assurance, simply switching to holding up his iPad as if he’d planned it that way all along.

I guess Clarke’s idea for taking the pain out of estimating comes down to a few main points.

  • Treat estimates as estimates, not commitments (or promises).
  • Create a high trust team, where getting an estimate wrong does not have a penalty
  • Revise your estimate every day, based on what you know today.
  • Only take six seconds walking to the Scrum / Kansan board to think about the estimate. You don’t need to spend more time than that because you’ll get a chance to revise the estimate tomorrow when you’ll know more about the problem.
  • Track estimate patterns over time – you’ll notice some patterns that indicate an individual’s tendency to be optimistic or pessimistic or suspiciously accurate.
  • When an estimate changes significantly the team should simply adapt, a bit like re-routing a GPS.

I also attended a talk on Machine Learning with Gary Short (@garyshort) called “Would you have survived the Titanic”, which demonstrated some snazzy drag-and-drop data science using Microsoft’s Azure Machine Learning Studio tool.  The nice thing about this tool is you can try it out for pennies as you only pay for CPU / Memory and IOPS rather than a license for the software itself. And no, I probably wouldn’t have made it.

I was also highly impressed with Mike Richie’s talk on using Test Driven Development in embedded systems, not least because he spent the evening before the conference soldering a board for his demonstration CO2 sensor with three LEDS and a buzzer, controlled by an ARM Cortex “M” micro controller. Not that many people make their own smart device on a bare metal build to demonstrate the benefits of separation of concerns and dependency inversion.

You get the feeling that embedded systems have been a bit left out of all the hype on TDD, BDD and ATDD, and might think they would be grateful, but given that the tedium of compiling and uploading code onto the hardware system is several times worse than building a web app, and tools for embedded systems do not have much support for frameworks that encourage abstractions, Mike makes a good case for embedded systems developers needing for test driven development as much as anyone.

Now I have to admit, not every talk I attended was as good as the three mentioned above, but given that this is a free event, organised by developers themselves, I was pleasantly surprised by just how good it was. I think I would have preferred slightly shorter talks and a chance to see more of them, but I’m hoping it will be less than five years until the next DDD Scotland, and the next sunny weekend.