CppCast - Psychology and Starting Out as a Developer
Episode Date: March 11, 2024Gail 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)
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.
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
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.
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
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.
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
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.
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
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
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
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.
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
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,
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
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.
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.
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.
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
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
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
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.
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.
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++,
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.
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,
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,
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
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,
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.
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
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,
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.
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.
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.
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.
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
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
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
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
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.
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
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.
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.
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.
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
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.
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.
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.
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.
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
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
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?
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.
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
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
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
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,
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
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.
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
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.
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
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
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
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
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.
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
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
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.
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.
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.
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
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.
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.
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.
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
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.
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
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.
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
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
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
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,
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.
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
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.
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
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.
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
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,
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
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
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.
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
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
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
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
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.
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
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
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
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
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?
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
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
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.
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
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.
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.
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
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
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.
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.
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.
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,
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.
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
was provided by PodcastThemes dot com.