Is it a coincidence that the last trip report I wrote was for ACCU 2019? Maybe it’s due to timing (I usually end up on a plane soon after and can write this while it’s still fresh)? Or maybe there’s something about this small British conference. A je ne sais quoi that keeps bringing me back?
In any case, I was in Bristol from April 5th to April 10th for ACCU 2022, my first in-person conference since the world shut down in 2020.
Flights, luggage, drugs and horrible support
Stockholm-Arlanda isn’t a big airport. In 2019 I got lucky and managed to find a combination of flights to avoid any connection (I cheated a bit by making a stop in Paris). This year I had to go through AMS. I showed up at Arlanda with a cabin luggage that they promptly asked me to check-in due to an overbooked plane (quite common for the past years, sadly). They assured me it would follow me to Bristol and was fine to put there as long as it didn’t contain any electronics. And then, of course, they lost it.
If Arlanda isn’t a big airport, then Bristol is a strip of dirt in the middle of nowhere. I had lost luggage before. There was a kiosk by the baggage belt where someone would promptly scan my receipt, tell me where my case was and schedule a delivery within a day. Bristol has no such thing. They had a pile of paper forms, a mailbox, and a sign telling you to fill A by hand and put it in B.
I still don’t know what went wrong (if anything) with my paper form, but after 3 days I had no news. The airport wasn’t taking calls. Emails to the baggage service went unanswered. Airline website told me to contact the airport. Airport website told me to contact the airline. Airline hotline took 2 days to reply I should use the lost luggage form on the website (the one I had already tried many times). And so I resigned myself to do the only thing that seems to get results these days: I screamed at the airline on social media. Within 12 hours I had a human on the line to explain my problem to. It took them another 2 days to file a missing baggage report on my behalf so I could finally track it down. I finally got a call today about scheduling a delivery, after I had left Bristol.
But I wasn’t done with my trouble. See, that bag that was never supposed to be checked in the first place contained my insulin supply for the trip. I had some extra on me as always, but not enough for the whole stay. Which lead me to another round of endlessly calling hotlines to get my problem solved. Much like airlines having no escalation mechanism when an airport isn’t in their system, the NHS hotline isn’t equipped to deal with foreign phone numbers, prescriptions written in Swedish and people without an existence in the British medical system. Although I eventually managed to get it sorted out, it took me most of Friday, including 3 and a half hours sitting in my hotel room (the only place with a landline that NHS would take a call from) getting bounced between hotlines.
I believe there’s a lesson there for fellow software engineers. Let’s ask ourselves: what can our users do when the “golden path” in our application workflow fails? Do they have a mean escalate? Do they get a special code allowing them to bypass the steps they already tried 10 times before calling tech support? We shouldn’t expect a given system to be able to handle all possible exceptional cases, but it should be possible to get a human on the phone when the workflow breaks down. And there should be an easier way to do it than making a scene on social media until the PR department panics.
Anyways, don’t expect many reviews of the talks on Friday, I missed most of those due to the above.
I was quite excited to hear what Guy Davidson had to say about Growing Better Programmers. Like many others I’m told, I’ve been noticing growing difficulties hiring and retaining programmers, especially senior ones. Two years of remote work have changed a lot in work patterns, more and more employers offer remote work from further away (or anywhere really), leading to new competition in your local area.
The talk didn’t turn out to give me as many answers as I’d hoped, although it’s probably fair to say this is a complex topic with many variables, a bunch of them depending on your local environment that may not translate well to others. That being said, the talk did reinforce my belief that we should always spend more time on mentoring, it is unlikely that our current structure does that enough.
An interesting takeaway that came up in the post-talk chat was that there is sometimes an aura of mystery surrounding experts and leads that make them feel all-knowledgeable and unattainable, while in fact they do refer to documentation, talks, searching their conversation history or good old trial and error on Godbolt when asked a specific technical question, much like everyone else. This was likely reinforced the past two years when there wasn’t really a way for people to glance at how we handled things from the confines of our remote workstations. Now that we might be back to the office, perhaps some extra attention at making our expertise look more mundane would help encourage people to grow into those roles themselves?
Thursday’s keynote gave us Hannah Dee’s Diversity Is Too Important to Be left to Women. I’m afraid I wouldn’t do it justice by trying to summarize it. In short, it was great, go and watch it and recommend your colleagues (especially male colleagues) to do the same. It’s a very solid recap of the diversity issues our profession is facing, studies about how and why it’s happening, and more importantly what we can do about it.
The conference closed with Titus Winter’s Tradeoffs in the Software Workflow, an attempt at answering the old age question “how can I put a number on how much money we would save (or lose) by having quality gates in our development process?”. As he rightfully observed, answering that question often leads to trying to estimate the cost of something that did not happen. Some may say if can you catch the worst in beta-test, or even if you’re quick enough to patch production if needed, the value is 0. Others will sum the potential damages of recent near-misses and claim that’s how much revenue loss the company saved. One might even say that blocking merges on a red CI test is making the company lose money because it stops other engineers from being able to check in their work.
Instead, Titus argues we should focus on the cost of fixing a bug when it’s caught to see which quality gates give us the best bang for our buck, because that is a number we can agree upon. Issue caught by a unit test on the developer machine before they submit for review? An hour of their time maybe? Issue caught during RC testing? A couple engineer hours (at least) to find the root cause and fix it, plus the time spent on making a new build and re-running the RC validation process. Merging something that breaks the builds? Sum of the salaries of the teammates who can’t work until it’s fixed.
The talk also touched upon a few studies showing that shortening release cycles leads to better software value and quality. The issue for me is that this isn’t as easy a change because it ties to the business model. For companies like Google who get revenue from freemium or ad-driven apps, this is a non-issue. But for other industries (like games) where you make money by selling apps or expansions to an app, it’s a harder problem. I for one cannot sell a patch each week or two, the shortest we can do in our market is probably a small DLC every 3 to 6 months. Some games do run on a subscription model, but as far as I know they are far from the norm. It’s probably more common to be on a free-to-play model than a monthly subscription, even if you discount mobile games. And personally, I don’t think free-to-play games are better value for their players.
It has been a while since I talked about build systems (my energy for it comes and goes), so I was happy to see CB Bailey take upon the mantle early on Wednesday with their Things I Learnt While Trying to Avoid Becoming a CMake Expert talk. I found it a good introduction to CMake for beginners. I really do appreciate any attempt at reminding the world build files aren’t sorcery or a job only for the build engineer. There were also a good share of practical tips about caveats that can trip CMake newcomers.
On the topic of build-related talks, Diego Rodriguez-Losada was there to present us the upcoming version Conan 2.O. Overall I liked where this is going, although I worry a bit that the focus on supporting every build anti-pattern in the world will make the tool more complicated for the rest of us in the future, the same way CMake offers you a million ways to shoot yourself in the foot. While I understand the value of offering Conan’s existing users a way to integrate with their build in its current state, I would really like to see all those as an “advanced mode” toggle you have to opt-in to so that new projects can stay on the safe side. A lot of bad builds today are the product of engineers not quite understanding what they are doing and fiddling a bit with settings until something kinda works. I’d rather have something more restrictive with a checkbox that reads “I understand that my build is bad and I should really refactor it, but I need the foot gun right now”. Maybe not the best label when you’re trying to sell this to companies, I suppose.
A short must-see talk from this year, Björn Fhaller’s Phoenix? was a very personal story about burnout and an important warning to all of us. As for Hannah’s talk, I can’t say much more than “check it online as soon as it’s uploaded”.
The same session brought a few other short talks, including Remote is a Four Letter Word by Dom Davis, a reflection about what it means to work remote, and how it should rather be considered “co-located”. Remote implies the idea of isolation and difficulty to reach, which is usually not the case with today’s technology, and trying to approach it that way will probably lead to bad communication in the team. I’d also like to give a quick mention of Jim Pascoe’s Why it’s Good to Be a Software Manager which discussed the hard to name role of Tech Lead / Software Manager and gave me some food for thought. Programmers aren’t good at names, and that does include job titles.
If you know anything about me you know I like history, so of course I really appreciated the double feature of Jim Hague’s The Victorian Internet and Gail Ollis’ Do you want fries with that? From punched cards to devops and beyond. If you’re interested in the history of computers and networking, those are both worth a watch, and only 45 minutes each.
The best talk of the conference was, of course, The Bascs of Profiling by yours truly. Joking aside, the talk went well despite the previous day’s adventures. If I managed to convince at least once person to check-out Optick or a similar instrumentation profiler, I’ll consider it a win. And I believe a few people in the audience told me they would.
Another game related talk, Sandbox Games by my fellow ex-gamedev Ólafur Waage showed us how to use WebAssembly to mix native code with HTML/JS tech, and even how to make a client web app that is about 99% C++. The tech still has a few things to figure out (such as providing some form of threading/TBB equivalent), but I wouldn’t be surprised if we soon start seeing some classic (and more recent) games that can run at reasonable performance in a browser. Anything that relies on SDL and OpenGL should be a relatively straightforward port, as long as they don’t need multithreading (for now). Asset loading might also prove a bit more difficult as data needs to be streamed over HTTP which is quite slower than a local SSD, but maybe not really worse than a good old mechanical HDD depending on your internet connection.
Finally, Frances Buontempo’s Crowd Your Way Out of a Paper Bag was a nice introduction to cellular/swarm AI with a dash of multi-agent. I think this could be turned into a good workshop/kata/mob programming exercise as the AI and rules can be evolved quite iteratively once the basic rendering has been made. I might give it a shot with my team once the code is published.
While the talks were great, they pale in comparison to the social aspect of the conference. This was not only the opportunity to meet-up with long lost C++ friends after two years, but also a great source of energy and inspiration sprung from random post-talk (or bar) discussions with other attendees. I have mentioned it in past trip reports, and I believe some conference organizers have been caught saying something like “we know our real value is the hallway track”. To me this rings 100% true. Not only did I have serious trouble keeping my attention up during remote conferences, but it was also much harder to strike up a random conversation with other people and get a lot of value out of it. Don’t get me wrong, conferences have tried their damn best to make online conferences emulate the social aspect through different online platforms, but at the end of day there’s no good substitute to haunting the venue corridors and overhearing conversations.
I really do hope this isn’t just a phase and we’ll keep seeing more conferences return back to normal. You see despite the lost luggage, the struggle to get meds, British food and the hotel bar wine card, I would still absolutely recommend you go to ACCU next year!