Transcript of "Coding for fun, with Jon Skeet"

[Intro Music]

Clare: Hello and welcome to Making Tech Better, Made Tech’s fortnightly podcast bringing you content from all over the world, on how to improve your software delivery. For us, that means empowering your teams to collaborate compassionately on creating high-quality software that delivers value quickly, to the people that really matter, the users.
My name is Clare Sudbery, and my pronouns are, ‘she’ and ‘her’. I’ve been a software engineer for 21 years. I do a lot of speaking and writing on the topic of software delivery and I’m a Lead Engineer with Made Tech.

On the 12th of January, I caught up with Jon Skeet. Jon is famous for the book C# In Depth’, which is currently in its fourth edition. He is infamous for his contributions to Stackoverflow. For those that don’t know, Stackoverflow is the website that all software engineers turn to, to ask questions about anything to do with software development. The amazing thing about Jon is that he is always there with an answer. He’s also a truly lovely bloke, and it was a delight to catch up with him to talk about coding in his spare time via his open-source contributions, and also via a drum kit explorer that he has been working on. And about what is different between working on code in your spare time and working on code for your job, and how they influence each other.

Clare: Hello Jon.

Jon: Hello.

Clare: It’s fantastic to have you here. I’m so pleased to see you.

Jon: Very nice to be here.

Clare: According to your Twitter profile, you’re a Christian, husband to Holly Webb, the children’s author, father, feminist, software engineer currently at Google, author, Stackoverflow contributor and your pronouns are he, him. Can we dig into all of that a little bit more?

Jon: Absolutely.

Clare: Tell us a little bit about Google. What do you do there?

Jon: I’m currently responsible for the dot net libraries for accessing Google Cloud services, and other services. While I primarily deal with things like Google Cloud storage and Cloud Spanner, I’m also responsible for things like the YouTube API and Calendar API. Not the backend side of it, which is far too difficult for me to sort out, but the client libraries that talk to those. They are primarily auto-generated libraries. I look after the generation process and the generators themselves, which can be two very different things. Also, any manual code that needs to go alongside that generator code, just to make things that bit simpler. Or in the case of something like Spanner, ADO dot net implementation so that dot net developers can have a reasonably idiomatic experience, even though they are not talking to a Sequel server or PostgreSQL.

Clare: Wow, that’s a lot of fascinating stuff. I’d really love to know more, but I am going to move on because we’ll end up talking about that all day. What about your open-source contributions? Can you tell us a little about that?

Jon: I’ve got quite a few open-source projects, really. Although not many of them get updated very often. I have one repository that’s full of demo code, which is something we will come onto later on, I think, around drum kits. This is stuff I blog about, there can be code behind it. Likewise, if I’m giving conference talks, I will have demos. So I have a repository where all of that goes, but my main useful contribution is via Noda Time, which is a date and time library, as an alternative to system.datetime offset etcetera within the dot net world.

Clare: And what makes it special? Why would people want to use it, rather than the standard ones?

Jon: The idea is, it makes your life harder than easier in terms of, it makes you think carefully about decisions that you should be thinking about. When you’ve come up with the answer to that question, whatever decision it is, it should make it easy to express that in code that is readable and obvious what that decision is. Whereas the date and time types in dot net, they are kind of fuzzy. You’ve got system.datetime itself which has this kind property which says, am I a local date and time, local to the system time zone, or am I a UTC date and time or am I in some unspecified time zone? That in itself is sort of; well, how do I deal with that? It’s like having a number type which is sometimes an integer and sometimes a double and you have to ask a property.

So, in Noda Time there are far, far more types involved. I could start reeling them off, but we’d get to probably about twenty really quickly. Now, there’s a core of maybe eight or something like that, but you have far more types. That means that any developer using Noda Time has to think, crikey, which of those many types am I actually talking about? And that’s something you should be thinking about. Then, when you’ve made that decision, you express it in the type system and things are designed to go nicely.

There’s some fairly hard to read code within Noda Time itself. I do what I can but there is some difficult stuff. But I’ve put in a lot of thought and it’s proved very useful in terms of learning about API design. Because I can take my time over it. I don’t have particular deadlines for Noda Time. So, if I’m not sure of what to do, okay, try something, get a bit of feedback, try something else, be very careful around releasing. But that’s the heart of the Noda Time philosophy, is make things harder than easier.

Clare: Yes. That’s really interesting because that is what we’re going to be talking about today, the balance between and the relationship between work that you do that is not officially your job and work that you do that is your job. You are a person who has done a lot of different things. One of the things you’ve done is written a book. Do you want to tell us a little bit about that, as well?

Jon: Yes. I’ve contributed to a few books, but the book I am best known for and the one that I’ve put certainly the most time into over the years is C# In Depth, which is currently in its fourth edition. At some point, when I have oodles of time, which I’m sure will be any time now, I need to start on a fifth edition.

Clare: I have a copy of C# in Depth. I don’t know which edition it is, but I think I might have had it for twenty years. Would that be possible?

Jon: No, not twenty.

Clare: No, not that long. Fifteen, maybe?

Jon: The first author copies were shipped to my house when I was actually in Mountain View doing Google orientation. That was in 2008.

Clare: Oh, so only twelve years old. When you’ve been around a while, time just does very strange things.
The thing that first brought you to my attention, I think, is your contributions to Stackoverflow. That is what a lot of people will know you for. Do you want to tell us a little bit about that?

Jon: Well, it’s like everyone else’s contributions to Stackoverflow. I go, I have a look at questions that I might be able to answer, or I go with a question to ask, and I write hopefully good answers and I write hopefully good questions. I got into it via a book review, and I had a look. I did the vanity – let’s search for C# In Depth, search for Jon Skeet and see whether there were questions about the book that I could answer. Then I found a few more questions and I started – I think one day after I joined, I wrote a blog post saying, ‘I think this could become a significant part of my  life.’ I had no idea how significant, obviously.

Clare: Yes. When you say you are just like anybody else, you are probably not like most Stackoverflow contributors, in that the reason your name is associated with Stackoverflow is just the sheer prolificness, prolificity? I’ve no idea what that word should be, but how prolific you are on Stackoverflow. Because you answer a lot of questions.

Jon: I certainly did. I answer far fewer now than I used to back in my heyday, as it were, of probably five, six, seven years ago. I find fewer questions that I think are valuable for me to answer, these days. I add quite a few comments asking people to improve their questions and then someone else may answer them later on. That’s probably what most of my activity is now. It’s possible that my standards have changed over time, as to what I would consider answering, but I’m not entirely convinced about that. I think things just change over time. I certainly still browse it multiple times a day and will answer anything that looks interesting enough.

That really gets me in, particularly if I don’t know the answer when I read the question. That will make it much more likely that I will answer the question. I know that sounds a bit weird.

Clare: No, that does make sense.

Jon: If you give me something I don’t know about the language, I want to know.

Clare: Yes. And just the simple thing of if you’re asking a question on Stackoverflow, read it back and try to imagine yourself being not you.

Jon: Absolutely.

Clare: Somebody who is going to try and answer.

Jon: I don’t know if you are effectively quoting from a blog post I wrote, I think back in 2010, which I made the mistake of calling it, ‘Writing the Perfect Question’. I should have called it, ‘Writing a Good Question’, because we are not looking for perfection, but we are looking for something reasonable. I precisely said that. Read it as if you were trying to answer it. Does it make sense? Does it rely on knowledge that you have that isn’t in the question? Does it contain a load of stuff that is irrelevant? Slightly oddly, going back to my Christian roots of do unto others as you would have done to you, love one another…

Clare: Actually, I hadn’t read that particular blog post, but I think we are just aligned here. One of my big principles in life is to try and imagine what it feels like to be the other person. What does it feel like to be in their shoes? It just makes a big difference in so many different areas.

Jon: Absolutely. Whether you’re raising a bug or responding to someone else’s bug. If someone has raised a bug and it’s actually not a problem, it’s working as intended, you can still show compassion and empathy and say, okay, I understand why this feels like a problem to you, here’s why it’s designed like that, here is how you can work around that. Likewise, if you’re raising an issue, ranting, and raving and fuming and casting aspersions on the quality of the developers who came up with the design or whatever, doesn’t really help anyone. Imagine you are on the other side of the screen.

Clare: Yes. So, the last thing that I just wanted to quickly ask you about was that in your Twitter profile, you describe yourself as a feminist. That’s actually how you and I first got talking to each other. We were talking about gender balance at conferences. Tell us a bit about that, about that part of your identity, if you like.

Jon: I would say that started around – I think it was about five or six years ago. I was browsing a geek feminist Wikia and read a few things and thought, I want to know more. I would always have regarded myself as someone who treats equality as an important thing, but probably wouldn’t have defined myself as a feminist before. Partly, there’s something that feminism as a word emphasises inequality in a particular direction. There are certainly areas where inequality favours women over men and feminism as a word seems to sort of ignore that.

So I would have talked about human equality, gender equality rather than feminism. Now, I’ve changed my mind on that partly because the vast, vast, vast majority of inequalities do adversely affect women. Let’s make no bones about that. So, it’s not that I changed my mind about equality as an important thing, so much as I started opening my eyes as to just the level of inequality that women and people of colour and disabled people and those with neurodivergence etcetera – the whole spectrum of inequalities, I started to wake up to that a little bit more.

So, having read this feminist Wikia, I ordered a few books. In particular, Everyday Sexism by Laura Bates, which is a spectacularly good introduction and wake up call for those who are thinking well, this is all overblown, show me some evidence. She does, absolutely, definitively. All over the place in our industry we tend to say well, we’re not going to rely on anecdotes, there has to be data. And there’s plenty of data around on that front.

I read a really good post by a woman addressing men who identify as feminists, giving some advice, which was really useful advice. Part of it is you will get things wrong; you will mess up and you will be taken to task for that. That’s the right thing to happen, you should just acknowledge it, say sorry and go back to being as good an ally as you can. Because you can’t close your eyes to it. Once you’ve seen the inequality, you can’t just go back to sleep. That was a really powerful point.

So yes, that started five or six years ago and then about a year later, the women’s equality party in the UK was founded. That has been a significant part of my life in that I am a treasurer in our local branch. I’ve helped out on elections supporting our local branch members and support financially, because it’s something I believe needs to be supported. Likewise, when people from companies ask me to give a talk to their employees, one of the things they often say, is we will pay whatever your going rate is for giving a talk. I can’t actually accept any money under my Google contract. I can’t accept money for talking. What I can say, is please could you make a donation to ideally a local charity supporting underrepresented communities within tech? That’s usually gone down very well with talk organisers. It’s been a way that – it’s not a way of me giving back so much as just hoping to nudge people in the right direction.

Clare: That’s wonderful. That’s a great idea as well. I haven’t come across that before. Okay, so when I first invited you to come on the podcast and I asked you what you would like to talk about, one of the things you suggested was your drum kit explorer. So, tell us a bit about it.

Jon: Right, so let’s start with, I am not a good drummer, by any means. I started drumming about a year and a half ago. On most electronic drum kits, you might have several kits that you can switch between, so that say you hit the snare drum, do you want that to sound like a maple snare drum or a steel snare drum etcetera. A kit is a collection of configuration options for all the pads on the kit. So, you might have one that is Latin American feel for a samba or whatever. Then you’ve got a heavy metal one. If you are gigging, then you may well want to switch between them. You don’t want to have to reset every individual knob and dial. There are huge, huge numbers, hundreds of thousands of settings in total. So, a kit is a selection of pre-sets.

Clare: Yes, I actually have made a little bit of music using computers myself. The way I’ve often seen it is that each different drum sound is associated with a note on a keyboard. So, if you were playing middle C for instance, that would actually be a hi hat, so actually you’ve got all of the notes on eight octaves or whatever, and each note is a different drum sound.

Jon: Right.

Clare: And then you choose a different drum kit, and the notes will now be assigned to different sounds.

Jon: Exactly.

Clare: Yes, okay. Sorry, carry on.

Jon: So, I took the drum kit home and enjoyed playing with it, and then started thinking okay, I bought this so I could do things other than hitting the drums, fun as that was, and still is. I started looking into it, went down a few ratholes that weren’t productive because that’s part of experimentation, and then found a few pages on Sysex, which is a kind of midi command which is a vendor-specific midi command. I found, wonderfully, Roland produce a long midi implantation piece of documentation for each drum kit. So, I had to do a bit of reading around and they’ve got their own [check sowing 00:16:48] thing, but it didn’t take too long before I had a console app that I could say, please tell me the name of the current kit, and it came back saying ‘heavy metal’, or whatever it was.

Okay, and now can I change the name of the kit with this console app? Yes, I can. That tiny amount of experimentation in a console app is what made me think okay, now I can start using a GUI. Using a console app to start with has been my mode of experimentation. Just within lockdown, I’ve been buying and playing with a lot of kit.

Clare: There’s a few things there that I would like to ask more about. Just quickly, you mentioned midi. Just quickly, for those that don’t know what midi is, because when you are dealing with music and computers, particularly when there are instruments involved, midi is a thing that you quite often come across. Just briefly, tell us what midi is.

Jon: You’ve sort of given all the detail, in a way. Midi is a communication protocol, usually between a computer and an instrument of some description. Although, it could be between two instruments, I believe. There are standardised bits and non-standardised bits. The standardised bits are things like a ‘Note On’ command, which says that either someone has pressed a note on a keyboard or played a note on the electric violin that you’ve got or whatever it is. Then there’s a Note Off’ command. It can be that someone has pressed this, or please act as if someone has pressed this. So, midi one is uni-directional but usually, you get one channel in each direction.

I’ve got a keyboard in the background here. If I hook that up via midi, I can send a command saying ‘Note On’, and there has recently been midi two, which means that finally, we get bi-directional communications. Because I think the midi group understood that hey, almost everybody has got these two one-directional channels, and just as an example of how that makes things difficult, you expect a sort of request response idea. So, if I want to ask my drum kit, ‘What is the name of the current kit?’ I tend to think in terms of something like http; I will make an http request and it will come back with a response. Well, you’ve only got one-directional channels, so you can’t really do that.

Instead, you send a command on one channel, and the drum kit will send a command on another channel. You’ve got to do all the pairing up between the two and wait and see. Have I not seen anything within a couple of seconds? It’s probably failed. Maybe I’ll send my command again. It’s all a bit clunky, to be honest. That was the first thing that I thought, I need a better abstraction over this. So, the C# code that I’ve got abstracts all that so you can send a request and expect a response, and it does all the matching up.

[Music sting]

Clare: While I’ve got your attention, let me tell you a bit about Made Tech. After 21 years in the industry, I am pretty choosy about who I’ll work for, but there’s lots to love about Made Tech. We’re software delivery experts with high technical standards. We work exclusively with the public sector. We have an open-source employee handbook on GitHub, which I love. We have unlimited annual leave. What I love most about Made Tech is the people. There is a real passion to make a difference and they really care for each other.
Our Twitter handle is Made Tech, M-A-D-E-T-E-C-H. If you go to madetech.com/resources/books, you’ll find that we have a couple of free books available; Modernising Legacy Applications in the Public Sector, and Building High Performance Agile Teams. We are currently recruiting in London, Bristol, South Wales, and the North of England via our Manchester Office. You can find out more about that if you go to madetech.com/careers.

If you join our mailing list, you’ll get extra podcast content as well as finding out more about Made Tech. You’ll find a link in the description.

Before we return to Jon’s interview, just a quick reminder that before the break we were talking about debugging and learning by stripping a problem down to its bare bones.

Clare: The other thing you mentioned, console app – I may as well say that I know that people who aren’t Windows developers  – console app is quite a Windows developers’ terminology. When Windows developers say, ‘console app’, what they mean is something that is operating on the Command line. It’s quite interesting that when I’ve worked with people who aren’t Windows developers, they are not familiar with that terminology, so I just wanted to clarify that.

Jon: Yes. It’s almost that’s the default for non-Windows developers.

Clare: Exactly, yes.

Jon: A non-Windows developer might say, ‘I’m writing a GUI app’, or ‘I’m writing an app’. Whereas in Windows you would say, ‘I’m writing an app’, or ‘I’m writing a console app’. Because just ‘app’ is expected to be a GUI. Or these days actually, an app is expected to be a web app and anything running locally is kind of an anomaly. That’s the evolution of stuff.

Clare: Yes. I too having been around for a while, have crossed that divide from originally, all of the software that I wrote was desktop applications, and web development was a thing that I had to get my head around. These days, everybody just assumes that…

Jon: But both web and GUI, your HELLO WORLD of a web app or a GUI app are so, so much bigger, typically, than a HELLO WORLD of a console app. Saying typically, that’s because I’ve recently been working on functions, and Google Cloud functions and the dot net functions framework that enables that. I don’t know whether it’s because I have a background where I’m very keen on making simple things simple, but if you want to write a HELLO WORLD function in the dot net functions framework and then deploy it to Google Cloud functions, that really is tiny. You can do it with two command lines and then edit one line of code. Obviously, you can make things more complex when you need to. But I really want it to keep the simple situation as simple as possible.

Clare: Absolutely, yes. I’m a big fan of simplicity because at the end of the day, what you want is something that is maintainable and understandable, both by your future self and by other people.

Jon: Yes. Although I would say that things that need to be maintainable are typically going to be more complex anyway. But when you’re trying to learn something new – if I’m learning a C# feature, do I want to do so in the context where I’m in a console app and I’ve got a class declaration and a method declaration main, and that’s potentially all I need? Or do I want to do it in a web application where I’ve got programme.cs and a start up and maybe a view and a controller and a model – I’ve got five classes already and I haven’t written a line of code. That’s where I think it’s the experimentation. If I’m learning one new concept, I want that concept to be front and centre. Ideally, kind of the only thing on the screen.

Clare: Yes.

Jon: Whereas, if someone says okay, I want to know how virtual methods work, so I’ll create a Windows GUI with a button on, and when I press the button, it will execute some code, that’s not the easiest way of getting some code to execute. Console apps are great. They seem to be, within Windows developers or C# developers, I don’t think enough people value console apps.

Clare: Yes. In recent years I have learned a lot of different languages and have moved around between frameworks. I now have both a Windows laptop and a Mac and I switch between them deliberately, because I want to be able to be ambidextrous, so to speak. One of the things that has come out of that – because I’ve learned Ruby and Python and various functional languages – is that I’ve absolutely realised the value of console apps or command line apps. Just being able to get something out there quickly and use it to learn concepts.

Jon: Right.

Clare: Like you say, without the cruft and the boilerplate that can get in the way of learning.

Jon: And as well as learning, it’s great for – if you’re providing a repro for a bug, a way of reproducing a bug, then you want everything else that’s in your application that’s not related to the bug to go away. Is the problem anything to do with the database? No, it’s not. Okay, I’ll remove the database from my app. Is it anything to do with the GUI? No, it’s not. So, I’ll remove it and get it down to the console app. I’ve got twenty classes left. Is it in this set of classes or can I remove those and still demonstrate the problem?

You get down to a tiny, tiny thing. Usually, when I’m in that mode of debugging and diagnosing a problem, I find the problem myself without having to ask. Okay, that’s with twenty-five years of experience, but I think if we could teach software engineers that skill… This is something that I’ve been passionate about for a while, but I haven’t really found the right way of doing it.

Clare: Yes. So, is there any crossover between the work that you do with the drum kit explorer and what you do at Google? I don’t necessarily mean literally, in the actual code being shared or anything, but in the approach or the techniques or the things you know, is there connection?

Jon: There’s definitely connection. There are significant differences as well, mostly due to laziness. But there are connections in terms of how I learn things. I can’t remember the exact example, which is frustrating, but I remember sometime last year I came up with a way of doing something at work, which was absolutely based on something I had just been researching for the drum kit explorer the previous week, or something. It was just a really good coincidence. That’s happened much more between Noda Time and work, in that I tend to advance Noda Time in terms of C# language features and dot net framework and using docfx to produce documentation. I can experiment there in free time and then I’ve got all that knowledge and experience waiting for me, when I decide to use those language features, use docfx etcetera, in my work environment.

Sometimes, it goes the other way. Sometimes I will have a problem reported to me in work and think, oh, that’s going to affect Noda Time as well, I need to make sure I sort that out as well, or whatever. There’s a lot of crossover in terms of learning and ways of learning, so I do tend to approach problems the same way. If I’m trying to reproduce an issue for a customer, if they’ve given me a snippet of code, I will put that into a console app. Just as I started on the drum kit explorer with a console app, the bit where they are different because of laziness is in terms of testing. Noda Time, I hasten to add, is very well tested. I think when it runs all its tests, it’s ten or twelve thousand tests. A lot of which, are effectively generated across many cultures.

Drum kit explorer has gone from being completely untested, other than by me running it, to testable. Certainly, if I were writing this for anything other than fun, it would be; I need a bevy of unit tests and some integration tests around all the code I’ve got. In reality, I haven’t got time for that. I’ve got other stuff to be playing with. Actually, there have been relatively few bugs that I’ve found that would have been caught with tests.

I think because of the kind of app it is, most of the difficulty is in the design, rather than the implementation. The ‘Is my approach going to work?’, is much harder to test.

Clare: That’s really interesting. I had a similar experience where I was writing a personal app. It was a little game. It was actually an IOS mobile app. I started with very few tests, and then I got to a point where I wanted to re-factor. At that point, my lack of tests really hampered me. The problem was that it was really hard for me to know, after I’d hampered me. The problem was, it was really hard for me to know – after I’d shuffled things around and made some significant changes – whether I’d broken anything.

Jon: Right.

Clare: At that point, if I’d have had tests then I would have known, no, it’s okay, everything still works. That was  when I did realise that I was actually losing time as a result of not having tests. I paused, wrote tests, and then continued, then everything became a lot easier.

Jon: Right. And it’s entirely possible that I have lost time by doing this, as well. It’s very hard to tell when you’re in the thick of it, how much time you are losing.

Clare: Yes okay. I’ve just noticed the time. This has absolutely flown by. Very quickly, I’m going to ask you the questions that I told you I was going to ask. One is – and I don’t know if you’ve had time to think about this – but are you able to tell me one thing about you that is true, and one thing that is untrue?

Jon: One of these is that I got together with my wife, Holly, by virtue of a play written in Greek, Aristophanes’ ‘Birds’, and I don’t know any Greek. I had hundreds of lines that I didn’t really know what I was saying. That’s one thing. The other thing is, I have recently been giving advice on how we might change the duration of a second in terms of the SI unit.

Clare: Wow, okay.

Jon: Listeners can decide which of those sounds more likely.

Clare: Yes. At the end, I will ask you what the true answer is, but listeners will have to subscribe in order to get those answers.
My other question was, who in this industry are you inspired by?

Jon: So, several people, for different reasons. I am definitely inspired by the many women who I’ve heard of the terrible times they have had, and they kept going in spite of things, and at the same time pushed back against it and inspired others to do so. There’s a whole – we could talk for half an hour about that, I think.

I’m also inspired by two folks – two men, in fact, within the C# world. Eric Lippert and Mads Torgersen, both of whom I know reasonably well. They are inspiring because both of them are simultaneously both extremely smart and really nice. They are some of the nicest people. They are good company and compassionate company, and that inspires me more than their technical brilliance.

Clare: Wonderful.

Jon: It’s the combination of the two that is really impressive.

Clare: Yes, brilliant. So, to end on a high, what is the best thing that has happened to you in the last month or so? It could be either work-related or non-work related.

Jon: We’re just coming out of Christmas. I had a nice Christmas. It was a Christmas without visiting people and without having any visitors. While you might expect that to be a downside, it was quite a novel and nice experience, to have time off around Christmas where we didn’t fill the calendar. I love musical theatre. Usually, we would go and see one or two musicals, and we couldn’t do that. But it did mean I had more time just to actually relax a bit. In fact, I was doing various things for the church and it ended up being less relaxing than one might expect. Even so, the fact that lockdown has forced us to stay at home more, I quite like staying at home and I’m enjoying that aspect of it. Even though I am missing travelling and musical theatre and seeing people, at the same time.

Clare: Yes, I had a similar experience for my Christmas. Finally, where can people find you? Do you have anything coming up that you would like people to know about?

Jon: I guess I can reveal that I am working on another book as a contributor. Details of that are TBD. I don’t know how public things are on that front, yet. That’s just a little tease. You can find me on jonskeet, all one-word J-O-N, there’s no ‘H’ in my name, @jonskeet on Twitter, or you can find me on Stackoverflow. If you wish to email me, my email address is on Stackoverflow, but there’s also a link to a blog post saying, ‘Before you email me, is this really appropriate?’, with some guidance on maybe you should be asking a Stackoverflow question instead. I am jskeet on GitHub, so you can find me on a bunch of different GitHub reproes. Those are probably the best places to find me.

Clare: Fantastic. Thank you so much for joining us, Jon.

Jon: My pleasure.

Clare: It’s been wonderful to talk to you. I hope that the whole of the rest of 2021 and beyond goes really well for you.

Jon: Thank you, you too.

[Music Sting]

Clare: It was great to talk to Jon. I love that we managed to cover so many topics, from equality and feminism in tech, all the way to how to craft a decent question on platforms like Stackoverflow so that not only do you learn something from it, other people do, too.

My experience of software development improved vastly when I started doing it in my spare time, as well as for my job. When you do this, it’s likely that your hobby will fertilise your job and vice versa. So, I really enjoyed the insights I got from Jon on exactly that topic; how experimentation comes into it when you are working away from work. And on how he has learned about debugging by stripping things down to their bare essentials. I also really enjoyed the fact that we got to talk about the value of testing in different contexts, even if I didn’t entirely agree.

Every other episode, this last, short segment will be devoted to story time. Storytelling is useful for teaching, for unlocking empathy, and for creating a sense of shared connection and trust in your teams. I love telling stories to both children and adults. I’m actually a lapsed member of the UK Society for Storytelling. So, the plan is that I am going to be using stories to illustrate various points about effective software development.

This is a folk story. The most famous version will be familiar to a lot of parents of small children. It’s a fantastic book, A Squash and a Squeeze, by Julia Donaldson and Axel Scheffler. I’m tempted to read the book out, just so I can say [adopts cockney accent] ‘My ‘ahs is a squash and a squeeze!’, but I won’t subject you to that.
I’ve also come across the story at a storytelling festival at Wenlock Edge in Shropshire. It is, in fact, an old Yiddish folk tale. My favourite version is the first one I ever saw, which was a book I had as a small child called Huit Enfant et un bébé (Eight Children and One Baby) by Leonore Klein. I loved it when I was small, it’s how I learned French. In this version, the main character has eight children and a baby, which is the translation of the title. But the basic story is always the same.

The main character visits a figure of authority, a wise man, the mayor, and they complain that their house is too small. The wise person then advises them to bring an animal into the house, which they do. It doesn’t make things better, so they go back and complain and are told to bring yet another animal into the house. This happens a few times, each time the main character getting more and more frustrated and upset. This is where we get to my favourite page in the French version, which is simply a page full of sound effects. ‘Bric, brac, zoom, zal, waah, waah, woof, woof, maman! Miaow, miaow, cheep cheep! Silence! Impossible!’ After this chaos, they are finally advised to take the animals away again. And suddenly, they are happy. In the French version, ‘Toute le monde est heureux’ (everybody is happy).

It’s not just a folk tale. I have my own personal version of this story. In 2007, I was made redundant after twelve years as a software engineer. I decided that I was fed up with IT, and wanted a complete change, so I became a freelance writer. It didn’t go great, I didn’t manage to make an income from it, and it wasn’t the nirvana I had thought it was going to be. So, then I decided to retrain as a high school maths teacher. That was even worse. I was regularly getting four hours sleep a night, it was extremely stressful. In the end, in 2011, four years after leaving the industry, I came back into IT as a software engineer again.

It felt amazing. I had decent working hours; nobody was asking me to force teenagers to learn maths in circumstances beyond their control. Nobody was shouting at me, swearing at me, or throwing things at me as part of my daily job. It was the equivalent of inviting a hen, a goat, a pig, and a cow into my life, and then back out again.
So, what can we learn from this story? Well, it’s slightly tricky. I wouldn’t prescribe deliberate hardship to people who are struggling. I still bear the scars of being a teacher. But I do now keep a daily gratitude diary, and when things are bad, I think how they could be worse, and how they have been much worse.

The point of the story is to not focus on the negatives of any situation, but rather to appreciate the positives. For instance, after the pandemic is over, I hope that I will never again take for granted the simple ability of being in the same room as my colleagues.

[Music]

Clare: For our final Making Life Better section, I ask around for suggestions for small things that we can do to make the world a better place. As a result, I’ve discovered this amazing book called Change the World for a Fiver, which was recommended by my colleague Adam Friday. This book was created as part of We Are What We Do, which is a community links project. The very first suggestion in the book is very simple. It just says, ‘Capture a child’s imagination. When kids ask you to read a story to them, it’s because they know something you don’t. They know you will both feel richer for the experience.’ Obviously, I couldn’t resist sharing that one, given my love of storytelling.

And that’s the end of another episode. You can find me on Twitter, @claresudbery, which might not be spelled the way that you think. There’s no ‘I’ in Clare, and ‘Sudbery’ is spelled the same way as surgery, with E-R-Y at the end.

You can find the podcast on Twitter @makingtechbett2. That’s; making, T-E-C-H-B-E-T-T-2. You can say hello, give us your feedback, give us any contributions you have for future episodes, or just have a chat with us.

Thank you to Rose for editing and thanks to Richard Murray for the music. You will find a link in the description. Also in the description is a link for subscribing for extra content. We will be releasing new episodes every fortnight. Thank you for listening and goodbye.

[Music Outro]

[Recording Ends]

Back to the episode