CppCast - Psychology and Starting Out as a Developer

Episode Date: March 11, 2024

Gail Ollis joins Phil and Matt Godbolt. Gail talks to us about why, after two decades of software development, she took a degree in psychology followed by a PhD that researched the psychology of softw...are development - and how she now uses this to help others get started and, hopefully, avoid many of the human issues that can plague our software projects. News "Contracts MVP is Feature Complete" - Reddit "Contracts for C++" Timur's C++ London talk Gemini refuses to talk about C++ 20 Concepts to someone under the age of 18! Hacker News thread Twitch streamer's reaction (ThePrimeTime) “White House urges developers to dump C and C++” - InfoWorld Conferences: C++ on Sea Early Bird tickets and option, CfP closes soon (3rd-5th July) using std::cpp, Madrid (24th-26th April) C++ Now (29th April - 3rd May) ACCU full schedule and volunteers programme (17th-20th April) Links "Early Careers Day: A mini-conference for junior developers" - Gail's ACCU 2024 workshop "The kids are alright" - Gail's ACCU 2024 session showcasing her students Paper's Gail has co-authored on blending cyber security and software development: Putting the Sec in DevSecOps: Using Social Practice Theory to Improve Secure Software Development Dancing, not Wrestling: Moving from Compliance to Concordance for Secure Software Development "Helping developers to help each other: a technique to facilitate understanding among professional software developers" - Gail's PhD thesis

Transcript
Discussion (0)
Starting point is 00:00:00 Episode 378 of CppCast with Gail Ollis, recorded 8th of March 2024. This episode is sponsored by Sonar, the home of clean code. In this episode, we talk about the Contract MVP, the new Clang release, safety in C++, and the spring conference season. Then we're joined by Gail Arliss. Gail talks to us about getting started on a career in C++. Welcome to episode 378 of CppCast, the first podcast for C++ developers by C++ developers.
Starting point is 00:01:06 I'm your host, Phil Nash, joined by my guest co-host, Matt Godbolt. Matt, how are you doing today? I'm doing really well, thanks. Why am I here? Where's Timur? I'm glad you asked that. That sets me up to explain. So Timur is traveling again at the moment. In fact, he was in London just last week. And now, as we record this on Saturday, he is in Tokyo I believe he's actually there for the the standards committee meeting which is as we record this in just over a week's time but it went a bit early with the family to have a bit of a break there so he's going to be out of the picture for a little while at least for this episode maybe for the next one as well
Starting point is 00:01:40 we've pulled this together really at the last minute because I haven't really had a lot of time either just recently. So literally just yesterday, I asked both Matt and Gail if they're about to join us here today. So everything's a little bit last minute. That's why we're running a little bit late as well. So really want to say how much I appreciate both Matt and Gail coming here on such short notice. It's no problem. This is what just in time feels like, right? Yes. Just in time podcasting within a couple of hours of asking.
Starting point is 00:02:13 You've got two people in a chat room and here we are recording. So yeah, I'm glad to be here. Thanks for asking me. Thank you. Okay. So at the top of every episode, we'd like to read a piece of feedback. This one's from Paul Luckner who wrote, first of all, I'd like to express my gratitude for carrying forward the legacy left by Rob and Jason. Your episodes add a delightful touch to my daily post-lunch walks. So thank you for that, Paul. some future episodes on some of the open source libraries that you can find on cpp reference particularly singles out quantlib which i think would be a great idea yeah now i thought when
Starting point is 00:02:52 he said this that we'd there'd been an episode on quantlib before but i couldn't find it in the previous episodes i know it's been mentioned a few times and in fact that got me thinking as well that it would be good to be able to more easily search the previous episodes and paul had the same idea he pointed out that it's harder than it can be one of the things i did do with the the new website was to at least put all the episodes on one page so you can search the titles and the like the opening paragraphs but it could be better uh in the meantime you can do a google site search if you don't want to search it. At some point, I may get around to doing a site search built in, but don't hold your breath in the short term. You're a busy man.
Starting point is 00:03:31 Yes. Yeah, you could say that. But yeah, thanks for all your comments and suggestions, Paul, and everyone else that's been sending in feedback. We do like to hear your thoughts about the show. You can reach out to us on X, Mastodon, LinkedIn, or email us at feedback at cvbcast.com. Joining us today is Gayle Ollis. After two decades as a software developer, Gayle eventually became so obsessed with human
Starting point is 00:03:55 aspects of the job that she began talking about them at tech conferences. She left the day job for a psychology degree, followed by a PhD research in the psychology of software development. Sharing knowledge is the new day job in an accidental second career as an academic. Gail has taught programming and cyber psychology, researched cyber security for software developers, and now has fun teaching problem solving and software engineering to final year students at the University of Portsmouth. Gail, welcome to the show. Thank you. It's a real pleasure to be here.
Starting point is 00:04:33 I'm fascinated. Cyber psychology sounds like, is this like where I get my large language model, my chat GPT on a couch and ask it questions about its mother? Or what on earth is that? Oh, that would be so cool to do, wouldn't it? I want to do that now. Make it the case. would be so cool to do wouldn't i want to do that now but this is all about so you know you you know you hear people saying humans are the weakest link i have no truck with that humans are you know humans have been here through like you know just years and years and years of evolution and we're not built to operate in this environment but if you understand us and you take the trouble to understand people and do things right for them then you can avoid them being the weakest link so the people who say humans are the weakest link are the weakest link so hand over but yeah so robinson was wrong yeah yeah yeah that's not going go out no one else you're not you're not you're not the weakest link
Starting point is 00:05:27 yeah because you know there are so many things where things are written such that it's easy to make mistakes and it's harder to do the right thing and the responsibility lies with the organizations and the developers and you know a little bit of stuff remains but with the with the individuals with the users but most of it is you know there's there's issues about security by design including user interfaces in that right and just saying humans are the weakest link is lazy and failing to understand them and that's where i come from with the cyber psychology you know actually look at how are we exploited what perfectly natural normal and evolutionary or can't say evolutionarily which which which characteristics we've developed through the years have actually been successful in getting us to
Starting point is 00:06:16 here can be abused by people to to get the better of us but actually once you understand that it's much easier to avoid them and also there are a whole load of things like best my pet example of looking at emails on my on my phone and trying to scroll through and look through the mail and i i can't i've yet to find a way where i can go see where a link goes to in an email on my phone and i've occasionally almost clicked on it just in the act of scrolling so yeah is that my fault if i click on that evil link no well there is a link i think yeah we sounds like something we'll uh be asking more about in a very shortly yeah thank you that is a strong link to what we're going to come into so we're going to get i promise so we're going to
Starting point is 00:07:03 get more into that in just a few minutes but first we've got a couple of news articles to talk about. So feel free to comment on any of these. First of all, Contracts MVP. Now, we talked about this a few times on the show before. There was a post on Reddit from Steve Downey, Contracts MVP shipped. I should point out that the word shipped there might be a little bit misleading.
Starting point is 00:07:24 Heavy dose of air quotes around that. Just to read the first paragraph, just to clarify that a little bit. It says the WG21 study group for contracts announced that they have shipped an MVP to the other review study groups. So there's still a long way to go, but the longest journey begins with a single step. No, come on. That is an interesting definition of shit, doesn't it? Next steps will be criticism review by the language and library evolution groups. But it is a big milestone because it has been many years coming
Starting point is 00:07:54 with lots of very broad differences of opinion that have managed to come together for consensus to get to this point. So I think that's definitely worth celebrating. As it happens, Tim actually did a talk when he was in London just this week, which I didn't get to this point. So I think that's definitely worth celebrating. As it happens, Timo actually did a talk when he was in London just this week, which I didn't get to because I was busy,
Starting point is 00:08:10 but it was recorded. So I'm going to put a link to that in the show notes. So that sort of captures the, almost the current state that the contract is in, at least at the point that Steve Downey's post was written. Apparently there's been some issues that have come up since, so there's still more steps to go. That talk, by the way, does have some technical difficulties
Starting point is 00:08:32 with the recording, so it's not the best recording. Timur has said that he will do a better one at ACCU this year, so if you can wait, wait for that one. But if you want to see what the current state is, we'll put a link to that talk in the show notes. So the next news item, LLVM18, and therefore Clang, has been released just recently. Two reasonably big features that have dropped in this one.
Starting point is 00:08:57 The biggest one from C++23, deducing this, the explicit object syntax, finally supported in Clang. So I'm really looking forward to that that's uh in some cases that could be a real game changer for the way you write code in c++ the other one may be um a smaller thing but a nice little touch and that's the the placeholder identifier underscore um this is actually not even in c++ yet. It's still proposed for C++26 or C++2C, as we're calling it. But the idea of this is that if you don't care about referring to something you want to capture in a variable, you can use the underscore identifier, like kind of some other languages like Python, for example.
Starting point is 00:09:40 And you can use it multiple times. So you can reassign it to things. Which you can't do in Python. That always catches me out there. I end up starting to make up more and more stupid names, things I don't care about. Yeah, so it seems like a little thing, but it does make the language more expressive.
Starting point is 00:09:54 Having to define these throwaway names and then get the compiler or a static analysis tool to warn you that you're not actually using those names, it's a bit of a pain. So a little fix, but an interesting one. Yeah yeah i wonder how that'll play into a lot of like testing libraries tend to also use this as the matches anything kind of indicator so you can write mocks and fakes that say hey i want a thing but i just wanted to be called with anything here maybe they'll maybe they'll be compatible um reading this obviously makes me think or hearing
Starting point is 00:10:24 this makes me realize um i need to go and update a website I'm involved in to actually have LL Clang 18.1. So maybe I shouldn't be doing that right now. Okay, we won't hold you up too long. No. Should be live by the time anyone's listening to this. Anything that lets you quieten down your warnings without switching warnings off has got
Starting point is 00:10:46 to be a good step right yep as somebody that works in static analysis i can uh definitely get behind that sentiment yeah oh the phrase just a warning is such a red flag for me yeah no such thing so our next news item is our sort of obligatory news item in the world of AI, but with a C++ bent. So Gemini was launched just recently, and there was a post on Hacker News that Gemini refuses to talk about C++20 concepts to somebody under the age of 18 on the basis that it's an advanced language feature that is too dangerous for people not of that age to to be talked about uh which was obviously quite ridiculous but it's uh it does show we've got some way to go in practice safe templates you know it's
Starting point is 00:11:36 well i don't quite understand where it's even coming from on this front but show the microphone can't pick up facial expressions here you know right the incredulity you can probably imagine yeah i mean do you now have to have a license when you're older because i've known an awful lot of people write any language frankly at the age of 40 something that looks like they might be 13 so yeah it's obviously some guardrail gone awry. But just to read the opening of that Hacker News item. It says, personally, I've given up on Gemini because it seems to have been censored to the point of uselessness.
Starting point is 00:12:16 I asked it yesterday about C++ 20 concepts and it refused to give me actual code because I'm under 18. I just checked again and it gave a similar answer. When I tried chat GPT 3.5, it did give an answer, although it was a little confused and the code wasn't completely correct. So whichever way we go. So chat best, but usually.
Starting point is 00:12:33 Yeah. Oh, and then it says that concepts for an advanced feature of C++ that introduce potential risks. I don't want to prioritize your safety. Nanny state much? No. risks and i want to prioritize your safety i'll put the link to the to the news item but i'm also going to put a link to a uh a youtube video of a twitch streamer's reaction to this news as well because i think that probably captures um gail's facial expressions as, and maybe even a little bit more. Talking of safety in C++,
Starting point is 00:13:10 there's been another article, but this time it's actually from the White House. So technically this is coming from Joe Biden, but obviously not him personally. I don't think he's got into C++ yet, but from his administration, they're now urging developers to drop C and C++ in favor of memory-safe languages. This is not a new thing.
Starting point is 00:13:29 We've been talking about this for a couple of years now, but it's gone to the next level now. It's now got the stamp of the Biden administration. So maybe that will have more consequences. But I think it's also raised it to even more of the mainstream that are picking this up now as well. So we're going to hear more and more about it. A couple of highlights from that. It says this new 19-page report from ONCD, that's the Office of National Cyber Director,
Starting point is 00:13:57 which is quite an interesting title, gave C and C++ as two examples of programming languages with memory safety vulnerabilities and named Rust as an examples of programming languages with memory safety vulnerabilities and named Rust as an example of the programming language it considers safe. I thought Rust was coming here. Yeah, yeah. Also said about 22% of all software programmers used C++, which is an interesting statistic. 19% used C as of 2023, according to Statista,
Starting point is 00:14:24 making them less popular than JavaScript, Python, Java, and a few others. But the Tyobi Programming Community Index ranks only Python as more popular, followed by C, C++, and Java. So yeah, quite interesting that that doesn't quite match my experience of C++ out there. I don't know how one could get a decent understanding of who's using
Starting point is 00:14:48 what though without like literally surveying every single person and most people don't participate so gosh gosh knows where they're getting these things from and that sounds like it also excludes all the stuff that's already out there that's been being maintained so what we have to now go replace all of that maybe yeah i well i wonder if it's because when it says used c++ maybe not programmed in c++ but maybe there's a c++ library under the hood so like all the ml developers using python what they're using c++ as well that'll be my guess but who knows yeah and what's it was it 19 for c that's what it says i can't remember when i last saw c in says, yeah. I can't remember when I last saw C in the wild. Actually, no, I do remember when I last saw C in the wild,
Starting point is 00:15:29 and it was before I went off to do my degree. Right. So that's a long time now. Yeah, yeah. The report seems to make all the earlier mistakes of like lumping C and C++ together as if they're effectively the same language. So, because there was a report recently.
Starting point is 00:15:44 JavaScript, right? Right, exactly, yeah. Not quite as quite as bad but because there was a report recently that did seem to acknowledge that actually they are different languages and they have different trade-offs but um this one seems to take a step back in that respect unfortunately which is particularly unfortunate given that this has let's say gone a bit more mainstream so um yeah i'm already hearing reports from people i wouldn't normally be hearing from about this and asking about it so be prepared okay then finally just wrap this up uh we are kicking off the the spring season for conferences so uh c++ on c early bird tickets are open and the call for speakers is open but that's going to close
Starting point is 00:16:23 pretty soon as this goes out i think so maybe maybe another week or so for that so if you've not got a submission in do that it's going to run third to fifth of july it's going to be two-day workshops for the first first time and something that we're calling the early bird option so you've always been able to buy early bird tickets for for the main conference but but there have been other ticket types. We have the complete conference package, which includes a workshop and some other benefits, the dinner and that sort of thing. But they don't get released until the workshops are done,
Starting point is 00:16:56 by which time the early bird is over. So the early bird option, and sort of borrow this term from finance. I was going to say, this sounds like my day job. Yeah. Sort of spark a recognition from Matt there. The idea is you put a small amount down now, and then you have the option to buy a ticket at early bird price later, once all the details are known.
Starting point is 00:17:16 So I'll post a link to all the details. Is that an American-style option or a European-style option? When do you get the choice? How long do you choose? Never mind. Don't worry. Some kind of workshop futures or something. Yeah, that's right.
Starting point is 00:17:31 Yeah, we might explore some other derivatives in the future. All the links will be in the show notes. I won't say any more for now. We're getting that going again. Yeah, and there are so many puns waiting there to be had that we really mustn't go there. Exactly, exactly. Not an option.
Starting point is 00:17:54 Using Stud C++, the conference that runs in Madrid is coming up in April. And I'm actually going to be speaking at this one, which I'm quite excited about because I've not been there before so i'm going to give my rewiring the brain with test-driven thinking talk which um which might talk about more today actually because it's there's an element of psychology to that so there we go on topic uh that's on the 24th i think uh 24th i've got 24th to 25th but it's over three days so i think I've got one of the days wrong there. It's around that time, end of April.
Starting point is 00:18:27 Better check out the page just to be sure. And there's pre-conference workshops as well. C++ Now is coming up 29th of April to the 3rd of May. And it's the first time I've seen it, starting in April, actually. Possibly because previous years they've had problems with the the apple being closed they may have changed the timing around a bit and i think the call for speakers for that one is closed now and the accu schedule is out accu is going to run 17th to 20th of april there are two day workshops all the details and the link that i'm going to put in
Starting point is 00:19:02 the show notes i'm speaking there as well as is gail who also has a workshop and we are going to talk about that in a minute so that was our our link to our guest today yes so yes gail you're doing a workshop at accu but before we get to that going back to your bio earlier um says that you're doing a workshop at ACCU. But before we get to that, going back to your bio earlier, it says that you were a software developer for quite a long time before you went back and did a degree in psychology. So what led to that change in direction? time as a developer working on existing code and it's um and i was i got fascinated by the fact that sometimes that was kind of really straightforward okay you know occasionally i was lucky there was something that was just so easy and i thought you know i thought it'd be a few days work and it turned out it set up so well like you know just seamlessly go in could see exactly what i needed to do and make those changes and it was all and it was beautiful and I could keep it beautiful in the process um and on the other hand and probably rather more of the time going in there
Starting point is 00:20:11 and going why on earth did they do that and I basically went why on earth did they do that one time too many started looking up psychology and software development and wasn't really finding very much at all most of what I was finding just searching online without you know access to sort of academic papers or anything was all about and even actually when i had access to academic papers but it was it was more about um end users and you know hci and all that stuff and nothing that i've found really, and still nothing actually, that I've noticed significantly about other developers as users and readers of the source code. You know, there's a bit of stuff about readability, but ultimately all devs are users of other devs' source code
Starting point is 00:21:03 and build environments and tests and automation and office behavior. I mean, you know, the whole breadth of things, you know, it's, and they make a difference of what, what peers do makes a difference on it. And the people I was working with were smart people. It was a place with, it used to be a sort of research kind of oriented organization commercial
Starting point is 00:21:27 but nonetheless sort of researchy and they still had that and there are people there who really cared about their craft but not but that did not mean they were able to make things easy for others to work with and given the amount of time we spend working on existing stuff, and the moment anyone's written something, you've got some kind of legacy, because you're constrained to work by what they've already done. We use legacy to mean old stuff written by other people ages ago. But yeah, that's one of the things I found out in my PhD research.
Starting point is 00:21:57 My best quote, I think, from it was, I saw him write a legacy system in three weeks. I'm guilty of having done that at least once in my career i'm certain yeah like it's yeah and also i mean and also being yeah i think one of the other things that kind of drove me away was the sort of the time pressure to do that so if you get in there and you find a mess there is not time to sort out the mess nobody wants you to sort out the mess there is no appreciation for sorting out the mess so it's um you know it's basically get on and bolt on another bit of mess so you know it's boy scout principle
Starting point is 00:22:33 goes out the window i can't you know well i can leave it as mess no i don't know it means leaving it messier than you found it if you don't actually improve on it right because you just bolt on another lump of mess and the boy scout principle there is the the fact that you should leave the campground cleaner than when you found it right and that is yeah yeah yeah yeah but it's the first thing to go when you're up against the deadline and it's then it becomes compounding right yes absolutely honestly i could make a fortune if i could figure out a reliable way to measure the cost to the future of doing that now. You know, I mean, I know instinctively it's costing a fortune because other people are having to read through that stuff. We don't throw code away. We put a lot of brainpower into it and don't want to waste it.
Starting point is 00:23:18 Don't want to start again from scratch every time. Although sometimes I wonder if it might actually be better. Although that is, I think that's the that can happen you know you get into a pattern where everyone there's a learned response where it's like well we just we've reached this point where it's so awful no one could deal with it so we make version two of it and then within three years you're back in you're looking at version three and like there's got to be a better way yeah absolutely and that's kind of what i felt i thought you know some of that better way is about just understanding how we would make it a better way some of it of it is about the organization and the willingness to let people do that. But actually, if you write less of a mess in the first place, you know, it's not like it's going to take more time.
Starting point is 00:23:54 Linking back almost seamlessly back to the security thing. I've done some work with colleagues at the University of Portsmouth looking at blending security into software development processes because it tends to be an us and them and it shouldn't be we've looked at ways to sort of bring that together and I'll give you a link to to attach about some papers we published on that but yeah it's if you do it right from the start it's not an imposition an extra but what does doing it right from the start mean and how do you make that happen? So that's so, yeah, I got kind of frustrated with writing and revisiting the same old code with the same old kinds of problems under massive time pressure, not being able to do a good job. And increasingly curious about even when people did have time to do things, why would they do them a particular way? I had one particular colleague who had a real love for state machines.
Starting point is 00:24:47 And they're great when the thing naturally lends itself to that. And when they don't, it's, why on earth did they do that? And he's my favorite one to cite. That's amazing because I was thinking so far, everything you said sounds like sort of the sort of archetypical consultancy or management consultancy kind of thing that would come in and fix the organizational problem that means that that those those things happen but then when you cited that example it's like no that's definitely some one individual's particular way of looking at software that leads them in that particular direction and then if you have a bag of like 10 people or 50 people or 100 people in organization all doing that then of course there's you're creating mess so how do you yeah deal with the
Starting point is 00:25:29 problem in each in individuals oh my gosh exactly yeah and it's not they need to understand it's not their code it's like everybody's code it's wow we also had one person there who was the one the only person who would you know they had some mathematical skills to do something complex so he was the only one who had the faintest idea they had some mathematical skills to do something complex. So he was the only one who had the faintest idea about how any of that worked. So, I mean, truck number on that code was one. Right. So lots of, yeah, lots, some of it organisational, some of it, you know, expediency with getting those things done. But some of it, yeah, actually people who cared about how to do things and had chosen.
Starting point is 00:26:03 And there was another one, I can't remember what his pet thing was, but it was something he'd learned some years ago that was a good how to do things and had chosen and there was another one i can't remember what his pet thing was but it was something he'd learned some years ago that was a good way to do things and he was sticking with that regardless of how much things changed over the years so yeah i got really curious about that a bit burnt out with doing doing the sort of same old same old with the same same mess and yeah and leaving all these campgrounds in a mess so in the end i yeah i just cracked and went well you know i'm not finding the answers online anywhere for this let's go study psychology and find out a bit more about it very interesting and sounds like there's a lot more in common with my two areas of interest which is uh what testing and cdd and static analysis seem to correspond to a lot of what you said there.
Starting point is 00:26:47 And one thing that I thought of when you were saying about, you know, you start with this mess and it gets worse and worse over time. But if you just use that Boy Scout principle, you can actually be cleaning things up. And that's something we talk about at Sonar, just to bring Sonar in. They are our sponsors of the show.
Starting point is 00:27:04 Thank you, Sonar. We've got this thing called Clean Easy Code, at sonar just to bring sonar in they are our sponsor of the show thank you so much we've got this this thing called clean easy code which is you know exactly that that idea have you heard of the the get of theseus no i haven't you've heard of the ship of theseus so it's um it's just like an amusing take on that and um there's a statistic that has been wrapped up in this that i think every five years for any non-trivial code base that's under active development you will touch about half of the code so if you're applying this clean as your code principle you know leave every bit of code that you touch clean anything you started then over five years you will have cleaned up half the code base and it's the half of the code base that you touch the most by definition.
Starting point is 00:27:47 The other half you didn't touch for five years. So it's probably okay to some extent. So I mean, there's a lot of interest in this sort of idea of, you know, how can we get these things under control? Maybe even more so recently, because we do see so many big code bases spiraling out of control and we need to need to rein them in somehow so i think i think the time is really ripe for somebody to come in with with some good ideas on this so yeah well if anyone wants to give me
Starting point is 00:28:13 large bucks for consultancy and how that could be arranged but yeah this is also why having had this career change i still hang around with with you know sort of primarily you know with primarily a c plus cross conference but also other conferences you know it's how i stay in touch with people but also doesn't matter what the language is right whether or not i'm up to date with that because there's all this all this other stuff around it um yeah which actually i'll come back to when we talk about what i'm teaching now but yeah right yeah okay everything's linked everything's linked i mean so i mean certainly i you know you've just told a couple of stories of folks who like to write code in a particular way and i can't help while you two are talking just sort of now sort of
Starting point is 00:28:55 turning the mirror on myself and i'm wondering what what can we as software developers learn about maybe ourselves maybe that's a difficult question for a number of reasons. But, you know, what can we learn to try and overcome or, you know, maybe treat the code as, as you say, like it's a combined organizational owned thing, but I can't help it. It's mine. And that's a human thing, right, to want to do. But what psychology tricks can I learn to help me with that?
Starting point is 00:29:24 Yeah, I think that sort of is part. There's a good side to that as well, right? There's the caring about it. So the caring about it is important, too. So I think it probably comes from there. One of the things I found with my research. So what I ended up doing, going, I can't. But when I after I'd done my psychology degree, that was, okay, now I've got a whole lot of interest.
Starting point is 00:29:46 Put the software engineering aside for a few years while I did that. Okay, I've got all this psychology now. The itch to apply it to software engineering hasn't gone away. So that's where the PhD started. I thought, okay, you can't do a PhD on the basis of things that have annoyed you in your job. You kind of can, but you have to go ask other people and find out what has annoyed them too so i i did some interviews with a whole load of very experienced developers i think it added up to something like 500 years experience between basically a minimum of five years per person because any anything you do that you have problem with with what other people are
Starting point is 00:30:20 doing in the yeah i've got a couple of papers to back it up anywhere between sort of like three and five, but you can be let loose with stuff. Anything before that might be because you knew. If you're still having problems with this after five years or more with people doing it, chances are, it's not a you problem. It might be, but you know, if you get enough, ask enough people. So I wanted to, I wanted to talk to them about what other people do that help or hinder in
Starting point is 00:30:43 them. You know, that those situations I was talking about earlier, about you come along to do something thinking it's going to be an easy job and it takes you all week because it's such a dreadful mess. Or you think it's going to be a dreadful mess and it turns out to be just beautifully, easily grokkable and you're in there and done and thinking, wow. And you've left it just as beautiful as you found it. Yeah, rare, but it happens. Very rare. Yeah. I was going to as beautiful as you found it yeah yeah rare but
Starting point is 00:31:05 it happens and it's very rare yeah i was gonna say the fact that it's so rare i think is telling the fact that we all lit up when you said that you know we've all had that experience where you have gone in and gone like wow it was just a three-line change and it took me five minutes and i wrote a test and everything's happy and now i can move on so rare but how do we capture that more often right yeah yeah that is sad, isn't it? So I wanted to get that overall picture from other people about what things annoyed them. And I wanted to include everything,
Starting point is 00:31:33 not just sort of down in the details of the code. So I asked about, I asked a whole load of questions. I did it with a sort of card sort style of thing and asked them about oh um builds and automation and asking questions and willingness to answer questions and things and about half my cards were little i had 52 of these it's like a proper deck of cards um little nitpicky things about indentation and brackets and long indented loops and things and one one in there about comments and one in there about identifiers and all of my so all these little nitpicky things that you know
Starting point is 00:32:15 i remembered having annoyed me i included them but also the wider things of the nitpicky cards i'm calling them nitpicky now because they turned out to be this thing with a phd it seems obvious afterwards you know if it seems obvious afterwards. You know, if it seems obvious afterwards, you've probably done it right. But at the time, it's not. And it's so, yeah, the two that came out with any kind of response, you know, of significance. Because I was asking, you know, does this make no difference to you if someone does this? It makes a little bit of a difference, makes the day a bit better.
Starting point is 00:32:41 A great deal of difference. It's that day where you thought it was going to take ages and it's just beautiful and then the the dark side of that you know there is sort of you trip over it but then you get on with it or the this is an absolute nightmare that you're plowing through and you know we all remember those ones and none of yeah none of the things about in the details of the code mattered much apart from um comments and they went yeah let's not go there with this phd because they ranged everywhere from i set them to be white on white so i don't see them to even if they're a little bit wrong they're still a bit of a clue so no consensus and i was looking for consensus right we're not going to get consent i mean i could have told you beforehand we wouldn't get consensus
Starting point is 00:33:24 about comments so that one was yeah okay no there. Put that to one side. The other one that was interesting and the one that he pulled out was about identifiers. That's basically it. So people telling me they had vegetable themes, people using those. There was a spot characters. Just to be clear, we're talking about like the names of variables. Oh, yeah. I see. Just making sure i mean okay yeah yeah so we had some because people are having trouble thinking up variable names right so they just go with the theme so there was start a star trek theme of you know spock and kirk and stuff there was there were vegetables there were fish like you know got a variable Haddock. And then there were the cutesy ones as well, like Ickle for something that was little. And was it Moon? It was, yeah, Moon.
Starting point is 00:34:12 So Moon was a status flag and something should only happen when Moon was set blue. I mean, this is a sign of intelligent people who have got a creative part of them that has to be scratched and they've been trying to find a way to use it but but as a person coming in public but as the person coming in afterwards going like what the heck is moon equals blue got to do with anything exactly so so that's the one thing they agreed on and i yeah thinking about this one afterwards i figured, actually some of the things
Starting point is 00:34:45 I was talking about in the code with the indentation and stuff, ultimately that's grammar, right? And you can figure it out. It has rules. You can follow it. It may take you a little bit longer to follow it. They can also be automated
Starting point is 00:34:56 if you really care about it too much and say, well, okay, I'm going to reformat it my way and then format it back. That kind of stuff, right. But the names. Yeah, the names, you can't, yeah. So there's this um free naming tools well that's yeah but you have to actively do that yourself right the system can't do it for
Starting point is 00:35:10 you yes when yeah when you when you hit it it's a theme maybe oh no it's about the language models no well then we get as we get vegetables and wibble and spock again. Wibble was a popular one. But yeah, so there's this phrase that comes from Noam Chomsky, I think. Colourless green ideas sleep furiously. Perfectly grammatically correct. You can recognise every single grammatical element of that. Utterly meaningless because semantically it's useless useless so i think that's what the difference is with the why it's ultimately we all we all know the syntax and you know you can use it for
Starting point is 00:35:53 slightly for better or worse same as english grammar but you can still figure out where it's where it's headed so all the other stuff was about the bigger things and the yeah this so this brings me back to your question matt which i am remarkably under all that you've remembered yeah i can't i'm glad you can one of it so you ask how can we make people better at this one of the things that came out big on the on the sort behavioral things was um is willing to talk to others so rather than going off and coding in a corner and i thought you know that was maybe a mixed one because willing willing to talk to others. So rather than going off and coding in a corner, and I thought, you know, that was maybe a mixed one because willing to, no, he's willing to ask questions.
Starting point is 00:36:29 That was it. He's willing to ask questions. Because, you know, you might think of somebody who's always coming and asking questions and it's, you know, RTFM, for goodness sake, you know, can't you do it? But actually out socializing those ideas. So you haven't got somebody off working in a corner
Starting point is 00:36:43 coming up with something weird that's hard to follow it's you know it's it's kind of it's like code review but even sooner really well you know if you're pairing you'd get it at that stage but but rather than just go and do a thing or go find out how to do something go ask some questions and someone says oh yeah you could do it that way but actually we've already got this thing in the code base or yes that's that's cool and it's new but you know nobody's familiar with it so you know maybe we'll use that in a future project but we'll talk about it beforehand or yeah actually that's a really great idea wish we thought that sooner go ahead and do it but those conversations have happened so i'm afraid yeah one of my students last year bless him said my mod he realized my modules uh came well down to it's all about communication it's all yeah communicate and then yeah four words and that is it yeah if you if you get that frankly you don't
Starting point is 00:37:36 need the rest of my the rest of my second semester but yeah that's that's the thing it's you know it's not even if you know how to do something still socializing that idea not oh yeah so more anecdotes so we had the person who decided um unilaterally they were going to change our wiki platform from i can't remember which way around it was which moin moin and um wiki media i think it was. MediaWiki, whatever it was called. So whichever order those happened in, it would have been that. We were using one quite happily as a team. And suddenly one day he spent all morning migrating it to a new one.
Starting point is 00:38:15 Unasked for. Unasked for, yeah. And now the entire team, apart from this guy who will remain unnamed, though I have quite a rude name for him normally is um yeah also he's the only one who's familiar with it and the rest of us having now having to learn a new platform mid project which was just completely stupid i mean it's also the same guy who started using a folding editor back in the days when this was a rare thing and it had special markup in it so he started using that and checking it in complete with this markup rare thing and it had special markup in it. So he started using that and checking it in, complete with his markup.
Starting point is 00:38:48 So, of course, it was a complete mess for everybody else. Yeah. So, you know, I mean, I'd like to think he was a special case. That sounds more like a lack of empathy than it is anything else, right? Well, yes, indeed. Yeah. But there's also shiny new toys, you know. So it's not all, yeah, he's an extreme case.
Starting point is 00:39:06 Yeah, I'm not going to name him i'm gonna resist that temptation but yeah he's um he's an extreme case but there are lots of other less egregious cases of people putting in a shiny new toy like oh look there's a new framework let's you know let's let's use this fantastic framework which will do exactly what they want for this one tiny thing out of the thousands and thousands of things it can do um yeah don't cost don't stop me on frameworks um anyway so yeah but that's that's uh that's a cost to the team of having to understand what's going on there so conversate is not just about making the code work right you can go download stuff and make it work if you haven't if you're going to something different to what's there in some way and you've not socialized that idea with the team
Starting point is 00:39:49 then you're going to write something that's it's going to be hard even for your current colleagues to understand let alone somebody else who comes along later and they've got used to how the rest of the code base is and then suddenly there's this weird bit in a corner that does it all differently that's that's different yeah that's the a bit in a corner that does it all differently. That's different. Yeah. A friend of mine says that like a team is where everyone succeeds and fails together. But if you're off in a corner, like in your own personal successes, can I play with cool things? That's not necessarily good for the team. Yeah, exactly. There's the idea in systems theory of local optimizations, often a bad thing.
Starting point is 00:40:23 So even though you know optimizing your workflow and everything's great if that's going to slow the rest of the thing down it's the net negative yeah and you're missing some much bigger optimizations that somewhere else in the landscape that you haven't looked for yeah yeah um so actually uh last was it the last code base i ever worked on yeah it was somebody looked through that one time and found five different implementations of linked lists. None of them are library. Right. So, yeah, this is, you know, this is.
Starting point is 00:40:55 That's partly a lack of clarity about what we've got and what we're using and partly people going and just writing a thing that works. Because you wouldn't think, right, you't you know if you need a linked list you can we probably all write a linked list still even though we shouldn't but we could we could do it right but yeah so you're not you're not going to ask someone for help without that it's not talking to people is not about asking just about asking for help right no in fact asking for help generally involves the other person not saying anything while you explain the problem to them. Yeah, the rubber ducking. Yeah, absolutely.
Starting point is 00:41:29 So, yeah, Matt, did that answer your question? Absolutely. That's great. I think I've got a lot to learn on that front. And, yeah, it's really interesting to hear that, you know, like most of the problems that we face really are not technical because we're all reasonably good at what we do. We like to think we are. We can learn how to become technically better. But social problems are really the heart of how we interact when there's more than one of us involved yeah yeah it's a people problem yeah and there's always more than one of us involved even if it's you from yesterday you'd be your legacy code you wrote the day before oh gosh yeah this is why i do add comments because i cannot figure anything out like the following week or yeah or indeed the following day so there's some correspondences as well with with things like bdd
Starting point is 00:42:11 i talked about tdd earlier but bdd the the focus is really again on communication communication with other team members but also people outside the team um and using the concept of ubiquitous language so establishing what you know terms you're going to use up front to mean things and structuring things in a way that everyone can agree this is how we write things so there is that commonality of understanding same sort of ideas i'm going to pick up that outside the team as well because i have some brilliant and lovely and insightful students but when it comes to giving them some requirements and saying, ask any questions you like. The other week, they just went away and sat at their tables and figured out for themselves what this very vague requirement meant and didn't.
Starting point is 00:42:56 Well, one pair of them came and asked questions. And honestly, you know, if you're listening to this, I've never been so disappointed in you because you're normally so insightful but that's a lot of they've done an entire module of of what problem are you trying to solve and yet they didn't go and actually going out and doing interviews it is very common though and and this oh yeah comes back to the psychology of it doesn't it that we feel like well you know we're we're the smart ones we're paid for being smart we should figure out this problem for ourselves and if we can't then we're going to look bad so yeah we do tend to sit on things for longer than we should yeah we are the victim of our own problem solving skills as well because we need those problem solving skills right we've got two sort of orthogonal demands there we've got to be
Starting point is 00:43:40 able to solve this complex problem where we're interacting with the computer to make it do something. And that is not a trivial task, but also completely unrelated to that. We've got to be able to talk to people and understand what's going on. And getting both of those at a good level is quite hard. And one of them is really, really hard to teach. Yeah. To the point where I've got a friend who on one occasion told me he had two kind of like pretty much equally good candidates overall, but one was better on those humaning skills and one on the relevant computering skills. And he opted for the candidate with the humaning skills because computering skills, he was going to be able to teach them. Whereas trying to take the one with the good computering skills and improve their humaning skills was, you know, it's a tough call, that one.
Starting point is 00:44:30 But there is stuff you can do by the practices you follow. Well, I don't want to dig into more about what you do with your students, but we need to take a break for our sponsor read. Did mention earlier that we are sponsored by Sonar, the home of clean code. So Sonar Lint is a free plugin for your IDE, helps you to find, fix, and even learn about bugs and security issues
Starting point is 00:44:53 from the moment you start writing code. Adding Sonar Cube or Sonar Cloud to your CICD pipeline, your whole team can deliver clean code consistently and efficiently on every check-in or pull request. Sonar Cloud is completely free for open source projects, integrates with all the main cloud dev platforms, and is usually zero config. So back to our interview. And I mentioned we wanted to get back to your students because you're teaching this workshop
Starting point is 00:45:22 at ACCU, which sort of builds on this work as well. Do you want to tell us a little bit about that? Yeah, it's an idea I came up with a few years back when we were saying, well, you know, we love all these old faces that we see, you know, same people year after year. And it's great to go meet up with them. But it would be nice to have some younger people coming in and, you know, sort of just get new people and fresh faces in because that really refreshes things. And I was thinking about it from the point of view of somebody right at the beginning of their career. And it's a lot of money to ask your employer to pay
Starting point is 00:45:57 if you don't really know what you're going to get from it. And you might be a bit intimidated because you might look at previous years and think, well, that's all going to go massively over my head i don't understand a word a bit despite the fact that actually accu has got a lovely breadth of things i mean i haven't been don't tell anyone but i haven't actually been to a c++ talk at accu for years absolutely years and years i mean they just don't let you come they just don't let me come yeah because there are other tracks and interesting things to you know it's yeah like i come? It's still let me come, yeah. Because there are other tracks and interesting things to, you know,
Starting point is 00:46:25 it's, yeah, like I say, I stopped writing it so long ago that I'm now massively out of date. But there's still other things to talk about, loads of other things to talk about. There's way more than just the code. But nonetheless, if you look at that and you go, oh, gosh, you know, that's really complicated. And it all feels like very intermediate or advanced stuff sometimes.
Starting point is 00:46:45 And also, you don't even know at that stage in your career probably what a conference is necessarily. Certainly, my current final years, I've introduced the idea to them and it kind of comes as news to most of them because where would they have learned about what a conference is? So I thought about that and I thought, well, it'd be nice if that could have their own little mini conferences that was sort of designed for them and i've been to quite a lot of talks over the years by really good speakers who'd done a kind of almost a back to basics on things um so for example i am van leven had done a lovely one on code reviews and um giovanni asproni had done a lovely one on architecture and Roger Orr had done a beautiful one on debugging and it's one of those sort of talks you know where you sit there and you mostly know it all but there will be some nuggets in there
Starting point is 00:47:38 where you go oh yeah that's a good idea I haven't thought of that and you sat there nodding along which makes you feel really good and sort of smug and you know but with it all nicely organized as well. So all the stuff you kind of knew, but you couldn't have put it so eloquently because you haven't sat down and written a talk about it. They've done that. So it's putting all the little ducks in a row nicely, organizing the knowledge that you do have, adding some nuggets to it. And those are actually really nice ones to attend. But actually talks like that are ideal for people who are at the beginning of their careers. Let's teach them some of these good things we know and good, you know, good habits and best practices in a more in-depth version than some headline. Because a headline best practice is no good without the principles behind it.
Starting point is 00:48:19 You end up with all sorts of weird things happening because of that. So I proposed that, got together my dream team of speakers from a bunch of people whose talks I'd seen and really liked. Who have I missed out from there? Jess Higgins is with us now, being a software grandpa, keeping the youngins from falling down the mineshaft. And we've got John Skeet talking about testing, nicely balanced with Roger's talk about debugging. And there is, to wrap it up, it's kind of covering your entire life cycle, really, because we've also got Chris Oldwood talking about deployment. So we've gone right through from what we're thinking about with the architecture and our coding practices, testing and debugging all the way through to deployment. Plus, because it's at a tech conference, there's a section on presenting for geeks because I've just recently acquired some new photos
Starting point is 00:49:13 for my presentation on that with completely unreadable code. You can't read from the front row, let alone from the back. So if we're going to start encouraging them to come to conferences, we'd also like to encourage them to speak and when they do we'd like them really to have their slides legible please or their live coding legible that's where it most often goes wrong but i've seen it wrong on slides too so it's a like it's a perfect little mini conference for i don't know like finally your undergraduates and people in their first few years in the job you know maybe up to maybe up to their first five years to match my PhD research cut off.
Starting point is 00:49:50 And we go through basically in the order that things would happen in a software development with the presenting bit shoved in there somewhere. Then at the end of the day, we have a little lightning talk session where they can have a go at standing up and speaking, but just in a small room rather than in the front of the whole of the bristol suite which is a fairly intimidating place to stand um with a microphone in hand especially for you know for the first time ever if you're standing up with a microphone to speak but you don't want to be doing it there friendly though it is you don't know that until you've done it right so so we do
Starting point is 00:50:21 a nice little lightning talk session and we always have enough of them volunteering to do that. And last time we did this, we had at least two of them, I think, did stand up and do lightning talks in the Bristol suite on one of the later evenings. Yeah, it's beautiful. So, yeah, it's small. So they get a lot of attention. They get to ask a lot of questions. They've got some really good people to ask questions of there. So, yeah, and it's really good value as well. It's sort of designed to sort of give them a taster without it being too massive a commitment to, you know,
Starting point is 00:50:58 just come and try out the idea of a bit of conference. And then some people who book that do actually stay on for the rest of it. But if they don't, they've still got a feel of what it's about and learned some really good stuff so and actually those of us who do it really enjoy doing it and in fact I got Jess Higgins in there because he really wanted to attend it because it's it's a it is a great program of talks you know it's like those lovely yeah this kind of makes sense and all sort of ties it up neatly in a bow for you but actually you know any of us would be quite happy to attend and do that sort of nodding along and oh hang on i learned something there so yeah jez managed to get his way in just by being added
Starting point is 00:51:33 to the dream team i'm not going to let you in to attend you know you're going to be in your first years of your career but if you want to come and speak yeah you can come that way so that so that's how it works i like the idea that it's like a conference within a conference and i was wondering whether like you can even have a section in there that's a conference within the conference within a conference a recursive workshop that sounds brilliant yeah teaching workshops in a workshop yeah that'd be cool or maybe yeah maybe one of the lightning talks could be a mini conference there you go yeah that's genius maybe i'll do that yeah if nobody you know if nobody volunteers or if we yeah sometimes some of the rest of us will have lightning talks ready to go as well so
Starting point is 00:52:15 you know we can get the ball rolling or fill in a bit if they're if they're if they aren't enough volunteering or it takes them a while to get their nerve to do it sometimes so yeah i can do that so um on so that's on the tuesday but then on the wednesday um that i've got a session where i'm on wednesday afternoon i will be bringing five of my my best best for some definition of best students. Because what I'm doing, I've got a module in this semester called software engineering culture, which is basically everything but the programming. It's kind of like all those other things that I asked about in my research interviews.
Starting point is 00:52:58 So we're looking at some history. We're looking at security. We're looking at culture and behavior and social impact and development approaches i'm not going to go anywhere near the m word right approaches development but the future oh yeah so in fact kevin honey is coming in this coming week to talk about what agile really is in the wild as opposed to the textbook version which which will be absolutely super you came and did that for us last year yeah really good session and we've got uh we've got a bit about you know a bit about architecture as well but none of it
Starting point is 00:53:35 go away and do a thing because by this stage if i can't go away and do a thing by going and watching a tutorial there's nothing i can achieve by standing up in front of a classroom telling them what exactly what the tutorial will tell them so instead what we've got is um three of us now with industry experience sort of getting them to think about these things watch some great conference videos uh read some read some interesting things like bits from the phoenix project and bits from cathedral and the bazaar things all sorts you know a real mix of stuff to just give them that that feeling of the bigger picture rather than just sit down write a thing on your own and they've also got lab tasks to do in which i'm getting them to to pair or to mob or to work
Starting point is 00:54:18 remotely with people or do some code review of each other's code or learn learn a language together all sorts of things but please be working together you know go ask questions of other people teach something somebody something learn something from someone just like you would do you know like sort of phil i'm stuck with this how on earth do you do this you know and you have a quick sort of live tutorial of it and that that is the lab tasks rather than go and create yourself an instance on this cloud service and run a thing on it now they can go do that without me interfering i'm more i want them to talk to each other basically here's all it is all about communication why did i go for that oh yes so yeah so the assessment for that is basically a sort of mini conference thing so their first assessment they have to
Starting point is 00:55:06 submit three talk proposals so to do this i have to um i did yeah i last year i made the mistake of referring to it as conference proposals and some of them took that to mean proposals for doing an entire conference and okay no talk proposals for a conference i've been guilty of doing that yeah well yeah i mean it's you know and we know what we mean right it's like you know like it's like parameters and arguments we know which is which really but do we actually worry about it and i don't i i i only ever say arguments when i think someone's going to be checking you know i don't want to get into a parameter about that oh dear oh dear um that's thrown me what was i saying what's he wishing that oh yes so we have them do uh three talk proposals and a bio speaker bio and they're i've encouraged them not to make
Starting point is 00:55:56 that look like a cv and i've given them various examples of people and shown them where to go and look for speaker bios so quietly introducing them go, go look at some conference websites, go learn what's out there, you know, just subtly. And some of them have written really good ones. Great. They've got the, they've got, they found their voice in them and some good, really good proposals.
Starting point is 00:56:14 Then second part of the assessment, they do peer reviews on those proposals. So they, each of them review, let's see, four other students proposals, each one having done three. So they review 12 proposals and they give each of those a score. And then we process all of those scores. And for each student, the one proposal that gets the highest score is the one they present in phase three. We're going to have a little mini conference just at the start of the exam period where they present their talks so 10 minute talks and if there's a tie between them we'll you know we'll either go to the student say which is your preferred one or
Starting point is 00:56:54 or we'll adjust it to keep a nice balanced program if we've got a whole load of stuff talking about ai we'll drop some of the ai ones, for example. There are quite a lot of AI ones in there at the moment. And so this is where the link to ACCU comes in, very kindly given us a slot for them to come along and speak. And so five of them will be basically from that peer review process will give us the shortlist. And then we'll pick a sensible collection of five that will fit nicely at the conference and be a sort of complementary set of things in there so again
Starting point is 00:57:32 we wouldn't have five all on the same topic there even if they were if they were the top five and also you know some some students can't make it as well so it's not necessarily exactly the top five but from the from the cream of the crop as it were we will we will pick a little again also it's not necessarily exactly the top five but from the from the cream of the crop as it were we will we will pick a little again it's almost a little conference within a conference again right this is yeah um this is getting just decidedly recursive maybe i should run that within the yeah yeah maybe we should run that within the workshop oh my goodness and then we can do an early careers day with no no stop early careers minutes yeah stop it the reason that wouldn't work is if i've got this right the the first day the workshop is experienced developers teaching the students yes whereas your talk is more about the students giving talks to the experienced developers
Starting point is 00:58:20 yeah yeah absolutely and i've called it yeah i can't have it both at once i can't if i'm going to gather cursive workshops i can do what i like until he kicked me out but yeah it was it was really really nice it did it we did it for the first time last year and they were really really good They bring sort of a fresh voice to things. And they tackled some really interesting questions about the ethics of making software addictive. And the impact of all the changes with games on making hardware obsolete by depending on the latest hardware and not having a sort of not any compatibility with them that would work tolerably well with other kits so it's it's there's an affordability thing there's one talking about how hidden illness has affected him in two different uh software workplaces um an older student who's who's worked who worked before he started and
Starting point is 00:59:26 has worked um during his degree and i apologize to the others because i can't remember what those were off the top of my head but yeah they did really well and i've honestly never been more relaxed going into a 90 minute talk because we'd rehearsed the week before and they'd all done a nice job and i was really pleased with them i'd give them a couple of you know you could polish it up here and there but absolutely no causes for concern with any of them so when I actually walked into the to the room ready for the presentations all I had to do was introduce them then I knew they had it and they were nervous but I was going this is this easy I've got five speakers here I've just this. One of them is, how could I forget? How could I forget the one who dressed up as a minion halfway through his presentation?
Starting point is 01:00:12 His thesis was that minions, because of the sort of culture they've got, being able to get it wrong and ask questions, find things out, were a pretty good example of an agile team. And, you know, kind of the sort of supportive environment and stuff and so yeah he was he was explained explaining this but the bit that will forever stuck in my memory is him sort of playing a little video part way through and during which he changed into a minion onesie so that was that yeah and there was one about our responsibilities yeah so there was an ai one in there as well like what's our responsibility to as um as developers to get to education in this particular
Starting point is 01:00:55 case because that made sense for them not teaching c++ concepts apparently no apparently not no well they're pretty old enough to be allowed C++ concepts. Right. Yeah. So that's – but that's – it's a cunning plan sort of with a similar agenda, I suppose, for lack of a better word, to the workshop of just getting the younger developers coming into the industry to understand that there's more to it than sitting there at a keyboard in stereotypical hunched pose turning out code in a darkened room and sometimes you need to do that is what you need to do right but there's more to it than that and it always involves other people which an awful lot of assignment stuff doesn't right
Starting point is 01:01:44 well that's what i can say we have this cliche that yeah even if you study computer science it doesn't really prepare you for working in software development those other things you need to learn so giving them the opportunity to actually learn some of those things and be a bit more prepared is a is an excellent idea but i think frankly also particularly the the talk it's gonna be a different experience for the other people at the conference as well, not just going to the same old talk on, I don't know, C++ concepts, for example.
Starting point is 01:02:12 Yeah, absolutely. Yeah, it's different people with different ideas. And yeah, it's... Fresh perspective. Yeah, absolutely, fresh perspective. So, yeah, it went really, really well last year and they all presented beautifully. So, yeah, very very proud of them right well i think we are coming up to to the end we're gonna have to start wrapping up traditionally our final question is something
Starting point is 01:02:36 along the lines of is there anything else in the world of c++ you find particularly interesting i know you said you've been a little bit out of the c++ world in terms of the latest developments for a while so is there anything else in the world of software development then that we haven't really talked about that you find particularly interesting i think because like you said i was a developer for a long time so you can imagine i saw a lot of hype come and go so i'm pretty skeptical about everything that people get excited about i also see quite a lot of things come along with a name. I go, what's that? I have no idea what that is.
Starting point is 01:03:08 Like dependency injection was one. And I went, what on earth is that? And then I went and found out. I went, oh, is that all? Yes. A lot of people sticking fancy names on things, trying to look clever for stuff that was known for years. And I just rediscovered it.
Starting point is 01:03:23 Those who don't study the past are doomed to forget it right and so it's doomed to follow some mistakes of the past so yeah there's this is awful prejudice against older papers you know in like oh you mustn't you know you mustn't include anything in your student work that's older than or anything you publish that's older than five years or 10 years, maybe if you're lucky. And, you know, actually, if it's become obsolete, fair enough. You know, you shouldn't be ignoring more recent work, but there's an awful lot of very important old work
Starting point is 01:03:57 that's just kind of been forgotten. And it's not become out of date or been replaced. It's just languishing there because there's this fetish about the new. There's really, really good work out there being ignored, except possibly by people who are going, oh, I can put a name to that and write a book. So AI obviously comes into this one. And I looked at that and thought, OK looked at that okay yeah that's this one this one feels qualitatively different to all these other advances and great ideas something has shifted
Starting point is 01:04:34 in the technology there that is big but we haven't yet learned how to use it i think there's some really interesting work to be done about how it becomes a properly useful tool not just for writing code but for maintaining code and working together in a team on the code that sort of where does that fit into that bigger picture that isn't just hacking something out and then next time you want something you've got to write it all again where does that fit in with the testing of it and the and the working with things that you've already got it's i think there's a lot of very interesting work to be done there so i think it's i think the hype is a lot of it is over the top but i think with the right brains on it there's also a fantastic new tool to be had in there. But it needs to not be down there.
Starting point is 01:05:27 Oh, that's how, you know, we can do this and this and all this, also no, it can't. And it needs not to be one of those things. So that's possibly my next area of writing, I think. Right. Interesting. Yeah, it is a bit of a Wild West at the moment, like a new frontier.
Starting point is 01:05:42 So exciting opportunities, but also a lot going wrong at the same time. And a lot of snake oil being sold by a lot of a wild west at the moment like a new frontier so exciting opportunities but also a lot a lot going wrong at the same time and a lot of snake oil being sold by a lot of people which i think will erode you know people's confidence in the idea itself but i think you're right gail there's something qualitatively different about this that will will leave a bit of a mark yeah if yeah and it would be a shame for it to be thrown away with the snake oil wouldn't it i mean snake oil is the one thing that seems never to go out of fashion. But yeah, we had the Wild West and now we have the wonderful San Francisco. So I'm hoping we can sort of pull off a similar trick with AI.
Starting point is 01:06:18 Right, well, thank you very much for your comments on that and for coming on the show today. Before we let you go, is there anything else you want to tell us like um where people can reach you if they want to find out more um i'm there on linkedin i think i may be the only gail ollis right okay well we'll put links to your uh social media links anyway okay well again thank you very much for coming on the show today especially at short notice and And my pleasure. Well, giving us a tour of a really fascinating topic that we've not really discussed before. Thank you also, Matt,
Starting point is 01:06:49 for again, joining at short notice and being an excellent co-host. And thanks to all you listening for putting up with us being a day or two late. So hopefully we'll be back to the usual schedule next time. See you then.
Starting point is 01:07:04 Thanks so much for listening in as we chat about C++. We'd love to hear what you think of the podcast. Please let us know if we're discussing the stuff you're interested in. Or if you have a suggestion for a guest or topic, we'd love to hear about that too. You can email all your thoughts to feedback at cppcast.com. We'd also appreciate it if you can follow CppCast on Twitter or Mastodon. You can also follow me and Phil individually on Twitter or Mastodon. All those links, as well as the show notes, can be found on the podcast website at CppCast dot com. The theme music for this episode
Starting point is 01:07:37 was provided by PodcastThemes dot com.

There aren't comments yet for this episode. Click on any sentence in the transcript to leave a comment.