Full transcript
0:00Hello and welcome to the modern software
0:02engineering channel. Today I am joined
0:05by the one and only Dave Farley whose
0:07channel this really is, but I've had to
0:09do the intros cuz he forgot the intro.
0:11So, I'm Steve Smith, I'm Cornish and I'm
0:14the global head of modernization
0:16platforms at EqualExperts. Dave, who are
0:18you? I'm Dave Farley. I'm not Cornish
0:21and I'm not the modern head of platforms
0:24at EqualExperts. Nice to meet you.
0:26That's exactly the role title. Thanks,
0:28Dave.
0:28>> [laughter]
0:29>> So, the one big question we've been
0:30compelled to answer today by Dave
0:33Farley's many-membered company is can
0:37you win with artificial intelligence
0:39without strong tech fundamentals? Dave,
0:41can you do great things with AI without
0:44being good at technology? No. No, I
0:46don't think so either. So, that was
0:47fast. We should stop recording. So as
0:50usual we've got the answer quite
0:51quickly. Now we should probably try and
0:54justify it. Should we though? Yeah. Yes,
0:57so
0:58first of all, if you are a citizen
1:00developer, if like me you have genAI
1:02generating bash scripts to manage your
1:04NAS, then AI is going to achieve great
1:07things with really poor tech
1:09fundamentals because shock horror I am
1:12not test driving bash scripts on my NAS.
1:15But if you are an enterprise
1:17organization, the kind of companies that
1:18you and I both familiar with Dave, then
1:20without tech fundamentals I don't think
1:22letting genAI loose would be a very good
1:24idea. Yeah, so so so I I think what we
1:27see a lot of people doing
1:31on online and and in real life as well
1:34is building small simple things with
1:37vibe coding very quickly
1:39and essentially
1:41verifying them by just running the
1:42application and seeing if it seems to
1:44work. And that's fine if you're building
1:47if you're trying to organize your your
1:49photo library on your NAS like Steve was
1:52talking about. If you're doing something
1:54one-off, engaging with a computer to
1:57fulfill a personal problem that you have
1:59in that moment, that's probably fine.
2:02That's That's a useful facility, but
2:04that's not what professional software
2:06development is about. We're building
2:08systems that are a lot more complicated
2:11than that, and we're going to keep
2:13changing them over their lifetimes, and
2:16that takes an awful lot more
2:19problem-solving and an awful lot more
2:22disciplined skills to manage that
2:24process.
2:25>> to me. Yeah, I'd agree. I also do think
2:27that if we were working in a startup,
2:31we'd be very tempted to use it in
2:32prototyping. I can imagine GenAI killing
2:34prototyping tools pretty quickly. If we
2:37want to rush something out very quickly,
2:39build a fast website with a database
2:41behind it just to start storing data, I
2:44guess this is what the Lean Startup book
2:45was talking about back in a a few years
2:47ago now. But, I can totally imagine us
2:48doing that just to collect fast
2:49feedback. I know that a quite a few
2:52companies now that are quite worried
2:53about their sales people being GenAI and
2:55low code, building stuff quickly, and
2:57then saying, "Hey, you should totally
2:58buy this." And then say to the
2:59developers, "This won't take too long to
3:00build for real, will it?" I mean, those
3:03kind of conversations I've certainly
3:04seen played out in companies before, and
3:05now I think they'll be hugely
3:07accelerated. I do think that there's a
3:11huge gulf between individuals saying, "I
3:13have achieved amazing things with this."
3:15And enterprise organizations saying, "We
3:17have achieved amazing things with this."
3:20I I have seen those examples, but
3:22they're few and far between so far.
3:24Yeah, and there are certainly examples
3:27of people using these tools at scale. A
3:30lot of the leading AI research labs are
3:34saying that they are not writing
3:38handwriting code anymore. In In essence,
3:41they are working using AI assistants to
3:44write the actual code, but that doesn't
3:47prevent the need for technical insight
3:51and technical skills in decomposing
3:54problems and specifying them to the AI
3:57assistance in a way that you can get a
4:01the result that you're aiming for. Yeah,
4:03I totally agree with that. I think that
4:05the need to think is greater than ever
4:08before. I think that the pressure on
4:10engineers to come up with a effective
4:13solution to a problem is going to be
4:14greater than ever before. Where I have
4:16seen Gen AI create really powerful
4:21solutions so far, powerful in the sense
4:23of the accelerated outcomes look good
4:26and user satisfaction is good. There was
4:28a really strong technical foundation in
4:30place. So, if I think about LMAX for
4:34example, where Dave and I worked
4:35together between 2000 and 2010 on the
4:37trading exchange, there are some parts
4:40of that trading exchange, uh the trade
4:42reporting gateway for example, or the um
4:45account service, that are fundamentally
4:48about retrieving people's information
4:49from a database, or about translating
4:52messages from one format into another.
4:54In the case of a trade reporting
4:55gateway, you're turning a trade into a
4:58trade report and then sending on to a
4:59clearing house as a massive
5:01simplification. I can totally imagine in
5:032026 me going to Dave, where if we still
5:07work at LMAX at the end saying, "Let's
5:09regenerate the trade reporting gateway
5:11now using Gen AI. Let's stop putting
5:13people on this because we want to
5:15concentrate their efforts instead on the
5:16execution venue, which has to have
5:18sub-millisecond matching, transparent
5:21order execution, and you should
5:23absolutely want all of your brains on
5:25that, not AI on that. But, the reason I
5:27would have confidence in Gen AI building
5:30that trade reporting gateway to a high
5:32standard is the incredible technical
5:33foundation that we had at LMAX. And if
5:36you think about technical alignment as
5:38um standards and working practices, we
5:41had all of that tightly encapsulated in
5:43the build pipeline, in coding patterns,
5:46and it would be pretty easy to train the
5:48GenAI, Claude, Curd, Cursor, Copilot,
5:51whatever, on all of those pieces of that
5:55Elmax technical foundation. I've
5:57absolutely seen companies that have that
5:59foundation create marvels, and I've also
6:02seen companies that don't have that
6:03foundation just run into a brick wall
6:06faster than before. Yeah, yeah. And the
6:08thing that we that we had, I think that
6:11was, you know, really enabled this, as
6:14well as the problem-solving fit focus of
6:16the team, but the we had this body of
6:20automated acceptance tests that were
6:22executable specifications
6:25that we could just run at any solution
6:27that was generated and say, "Does it do
6:29all of these things?" Cuz if it does all
6:31of these things, then it's it's doing
6:33the job that we need it to do. I I think
6:35one way of thinking about the change
6:37that AI is bringing to programming is
6:40it's the constraint was never really in
6:43typing code. I think it was it was
6:45always in terms of thinking. I think
6:48that constraint is still there, but the
6:51other constraint that becomes even more
6:54important, that was al- already still
6:56there, is verification. It's
6:57understanding, "Did we get what we
6:59wanted? Does it do what we want? Does it
7:02continue to do what we want when we ask
7:04for changes in future?" I've certainly
7:07in my my coding with AIs, I've certainly
7:10had it, you know, at points where I've
7:12got a body of tests that were that were
7:14running and passing, it make a change,
7:17and then some of those tests are
7:18failing. So, it's not keeping the system
7:20the same. It's not keeping it working.
7:22So, those things matter, and they matter
7:25profoundly in professional software
7:28development for more complicated
7:30systems. Yes, much more so than my photo
7:33management solution or the calendar
7:35syncing glue code I've written. Now, it
7:36is a GenAI is fantastic for glue code
7:39between two non-differentiating things
7:41that aren't business critical
7:43and just need doing. Like, if I was a
7:45SaaS provider of I don't know, like a
7:47time sheet vendor, I'd be a little
7:49worried about the future cuz companies
7:50now could build their own time sheet
7:52solutions like really quickly. And if
7:54it's not a critical part of their
7:56business, I can totally imagine someone
7:58saying, "Do you know what? This is a way
7:59that we can actually save a chunk of
8:01money and make thing that actually is a
8:03bit less annoying for our employees."
8:05Yeah. The other aspect of this is I
8:07think this it's important to look
8:09carefully at some of the claims that are
8:12made by people that are doing things.
8:13So, so recently Anthropic have been
8:16advertising the fact that they had a
8:19team of AI agents working without human
8:24supervision to implement a C compiler.
8:27Well, fine. That's that's great. So,
8:31that these things worked in isolation on
8:33their own for 2 weeks to generate a C
8:37compiler that was capable of compiling
8:38Linux. But, one of the things about a
8:42language like C is that it's got a body
8:45of standards that define what it is.
8:47Claude was trained on, you know, the
8:50source code for GCC, I would imagine.
8:53And so, it's got a memory of how these
8:56things work. So, so there's a lot to
8:58this. When we're talking about building,
9:01what for most of us, if we're
9:02professional developers, the problem is
9:04to build things that people haven't seen
9:06before or that at least this
9:08organization haven't had before. And so,
9:10you don't have that body of training.
9:12We've got to invent that body of
9:14training to teach the AI what it is that
9:17we want to build. And that in its own
9:20right is a tricky skill that we found it
9:22hard enough to do with human
9:24programmers, let alone with AI
9:26programmers. But, that's what it takes.
9:28Yes, I definitely see a correlation
9:30between AI effectiveness and the amount
9:32of stuff that it can steal from the
9:34past. So, what I'll see is that Claude
9:37code, cursor, copilot are really good at
9:40Java code, but they're really not so
9:42good at Terraform, which is of course a
9:44very popular platform engineering tool.
9:47And I did a previous video with Trisha
9:49Gee on this channel around one big
9:50question around will AI create a lot of
9:52legacy code. And one example Trisha
9:54remember talking about was I've given
9:56her background working with Groovy, she
9:58hasn't seen a lot of really great Gradle
10:01scripting done by GenAI. And our shared
10:03theory was that there's not a lot of
10:06enterprise grade Gradle scripts that are
10:08out in the wild because of course, if
10:10you've done something really effective
10:12with Terraform or with Gradle within
10:13your company, you're probably not open
10:16sourcing that if only for time reasons.
10:18Yeah. A lot of the great stuff done at
10:19LMAX acceptance testing framework,
10:21that's not open source. It could be in
10:23theory. The company doesn't make a
10:25priority like so many other companies,
10:27which is totally understandable. So, if
10:29you ask GenAI build me an amazing
10:31acceptance testing framework, it's it's
10:33not going to be super amazing, which of
10:35course that means you need to invest a
10:36lot more time yourself in that technical
10:39foundation. So, the ability for GenAI to
10:44give you something you don't currently
10:45have in terms of productivity, but the
10:48tech stack is going to really matter
10:51because the more that your desired tech
10:52stack lines up with a commodity tech
10:55stack that's well understood in the
10:56world with lots of examples on the
10:58internet, the more easily GenAI is going
11:00to produce a solution that you like.
11:02Yeah, yeah. There's an interesting new
11:04generation of tools that can help with
11:07some of that stuff. I I came across a
11:10brand new open source project. I think
11:13it was launched this week that will help
11:17you through the process of making
11:19technical and architectural decisions
11:21like choosing your tech stack and you
11:23can kind of and as part of that it will
11:25show the reasoning it will do
11:27do architecture decision records to to
11:30the reasoning behind the choices that it
11:32makes and why it would rule out some
11:34choices versus others and so on. So,
11:36there's lots of that stuff where these
11:38tools can help us, but there's still
11:40things that we need to think about, we
11:42need to be involved in in order to make
11:44this stuff work. I still struggle also
11:46with the idea of a gen AI tool of four a
11:50team. YC is gen AI tools for individuals
11:54and yet we know that the most effective
11:56unit of delivery is a team. Yeah. And
11:59there is such variability in how
12:02different people use the tools. So, an
12:04easy example here is in my company, on
12:06my team, we have a shared chat GPT
12:09workspace where we have um a single chat
12:13or multiple chats with chat GPT. And
12:16even in that, it's astonishing how you
12:18can see how differently different
12:20members of my team interact with chat
12:23GPT. And when different people share
12:25example reports from chat GPT or from
12:28Claude or from Gemini with one another,
12:30just from the questioning, you can see
12:31that everyone has such an individual
12:33preference. For example, I've had
12:35feedback that that my AI, he's always
12:37trying to make friends with me and I'm
12:39always pushing away saying, "Stop making
12:41guesses and ask more questions of me."
12:43Which is probably reflects how I want to
12:46work with humans.
12:47>> [laughter]
12:48>> But until there's a shared space that
12:51people can come together in and really
12:53push things forward, I'm just a little
12:56dubious. It's not like everyone having
12:57their own individual IntelliJ where it's
13:00entirely deterministic and it's probably
13:02the same version of IntelliJ that
13:03absolutely everyone's using. We're
13:04talking about something inherently
13:06non-deterministic where it's really
13:08unclear what version of what you're
13:09using any given time. Yeah. And people
13:12do work with it in fundamentally
13:14different ways. Continue on that line of
13:16thinking about the need for teams to
13:19have a shared way of using AI to build
13:23and run services. What kind of technical
13:25foundations have you seen, Dave, in
13:28startups, scale-ups, or enterprises that
13:29have proven to be effective so far. So,
13:31in all human teams, you know, I was I
13:34was a big proponent of things like pair
13:36programming and mob programming, small
13:39autonomous teams that would work closely
13:42together and collaborate promiscuously
13:44with each other in terms of, you know,
13:47batting ideas around and and
13:49understanding things. I don't think that
13:50changes very much if if, you know, if
13:53we're exploring these problems together.
13:56I have come across at least a couple of
13:59teams who uh one team that's doing that
14:01does pair programming but with AI as an
14:05addition to the pair. So, they have two
14:07human programmers and AI assistants. And
14:11another team that go takes that further
14:13and does mob programming where the AI is
14:17the is the typist in effect. And that
14:19that sounds interesting. I don't know
14:22how how well those things work from a
14:24personal perspective. I've done a little
14:26bit of pair programming where we use the
14:28AI an AI, but there were two of us doing
14:31the pair programming. And that seemed to
14:33work quite well as a strategy. Uh I I
14:36could discuss the ideas with the pair,
14:38and we could ask questions of the AI,
14:40and then we could instruct the AI on the
14:42things that we wanted from it. And that
14:45seemed to go quite well when we were
14:47working like that. Yeah. Yeah, I'm super
14:49comfortable coding with or just working
14:52with an AI, I think, because I spent so
14:53many years pair programming. I find it
14:56really natural, um alarmingly natural
14:59sometimes. Yeah. I think that um it must
15:01be quite I assume it's quite distressing
15:04for folks who haven't had a pair before
15:06and are maybe now being made to pair
15:08with an AI. I still
15:11wonder about companies where when they
15:14don't have that strong technical
15:16alignment between people, when they
15:18don't have great platform engineering,
15:20or they don't have a great design
15:21system, I really wonder how that will
15:23work. I I know of one part of the UK
15:26government where they have great
15:28platform engineering and they have the
15:29gov.uk design manual that which is
15:31effectively a design a fantastic design
15:33system. And this part of the UK
15:35government has quite structured business
15:37problems for reason very unique to that
15:38part of the government. So, combining
15:41platform engineering, design system, and
15:43structured business problems, they are
15:46able to turn policy documents into
15:47possible digital services composed of
15:50many microservices in really short
15:53periods of time which simply weren't
15:54possible before. The difficulty is when
15:57people hear the headline of we're
15:58building digital services in weeks, not
16:00months or years. The difficulty is
16:02explaining to people, "Ah, well, those
16:04building blocks you see, the gov.uk user
16:06manual, that took years for gov.uk to
16:09create. And that amazing platform
16:10engineering, that took a year of your
16:13time and many other years before that in
16:15other organizations people brought in
16:17all of that context together. Without
16:19those building blocks, though, I think
16:20it would have taken a long time to build
16:23the right thing and a long time to build
16:24the thing right. Yeah, I think that's
16:26exactly true. I I think we should
16:28probably start trying to to to wrap this
16:31up and figure out what we think the
16:34technical foundations are that are these
16:37foundational things that and and you
16:39certainly called out a few there in that
16:42in that nice war story. I I
16:44I think absolutely being being able to
16:47specify clearly what it is that we want.
16:50I think clear specification of intent is
16:52important and for the not entirely for
16:56the for just the accidental complexity
16:59parts of the system, but for the
17:01you know, other parts of the system,
17:03strong platforms that we can that can
17:05build on that will give us fast feedback
17:08verification of our changes. Those sorts
17:10of things all seem really important.
17:13Yep, I think that just some absolute
17:16basics would be architecture decision
17:18records. I worked in companies before
17:20where architecture decision records are
17:22based in confluence. They're not well
17:24read, they're not well understood. One
17:26client of Equal Experts, we actually
17:28made them markdown files. We then built
17:30a scanner that would pull those into
17:32code, and then from there we had a bunch
17:34of different scanners of teams
17:37repositories to understand where they
17:38were and weren't conforming with
17:41architecture decision records. The key
17:43thing there though was it wasn't framed
17:45as we're checking up on you. It was
17:46framed on hey, you're not conforming to
17:49this architecture decision record. Like
17:50what are you seeing differently? Yeah.
17:52And based on that then we produced like
17:55some really powerful insights that these
17:56days you could then plow into an AI and
17:59say every service should be following
18:02this architecture decision record unless
18:04they you see this particular business
18:06context, unless they are video
18:08streaming. Yes. For example, or it's
18:10audio streaming, something is markedly
18:12different to the rest of the tech
18:14estate. Yeah. So architecture decision
18:17records would definitely be one for me,
18:19and I think that
18:22uh coding standards, a a junior come
18:25back. There is enormous documents nobody
18:27ever used to read. Just some really
18:29sensible things there around. This is
18:31how you name behaviors, this is what the
18:34domain model looks like. I remember LMAX
18:37the domain model part of the code base
18:40was actually controlled by the business
18:41analyst, which was really very different
18:44and pretty awesome. I can totally
18:45imagine a world now where all of that
18:47knowledge that they had would be
18:48captured and expressed in markdown.
18:50Yeah. And then you feed that into the
18:51AI. AI so guidelines around the main
18:54model, coding standards, architecture
18:57decision records, probably your
18:59automated functional tests if you had
19:01them already. I think I feel the need
19:03that I must call out and name this open
19:06source piece of software that I've seen
19:08very recently. So I don't have a lot of
19:09experience with it personally yet, but
19:12it's called Nwave. So, go to nwave.ai
19:16and take a look because all of the
19:17things that you've just mentioned,
19:19Steve, are built in as part one of the
19:22outputs of the different phases of
19:25development that it will take you
19:26through. So, you can go through sort of
19:28discussion where you kind of set the
19:29context for the project and it will kind
19:31of give a high-level plan of the things
19:34that you're going to have to go through
19:35and then it will explore architecture
19:37decisions, design decisions, all the way
19:40through to to implementation. And when
19:42you get to implementation, it will help
19:44you do that with executable
19:45specifications and it will help you
19:47prompt you to generate those sorts of
19:49things and encourage you to do
19:51test-driven development and all of the
19:53things that I think that you and I would
19:54agree are pretty essential for success
19:58with using these sorts of tools for
20:00doing anything new. So far, I've been
20:02pleasantly impressed by I'm working with
20:05it on a project of my own to see if I
20:07can learn how to use it better, but so
20:09far, I've I've been very pleasant
20:11pleasantly impressed. So, I'd recommend
20:13people to take a look at that if any of
20:14the stuff that we've talked about has
20:16resonated with you today. Yeah, I
20:17definitely think that's a direction our
20:20companies will go in soon. I believe
20:22what will happen is that companies will
20:23start to say, "We're not seeing
20:25productivity gains out of these tools as
20:27we'd expect." And then eventually people
20:29start to say, "Oh, these tools are kind
20:31of out of control. What if we could give
20:32them stronger guardrails around what
20:35matters for our organization, not just
20:36our industry?"
20:37>> Yeah. And there's going to be a whole
20:39wave of skills for the different AI
20:42tools and guidelines and controls that I
20:44think could make a real difference.
20:46Yeah, and fundamentally, I think that
20:48what we're describing is a more
20:51disciplined approach to it. Engineering
20:53discipline's kind of an
20:55unfortunate-sounding word. This isn't
20:57This isn't onerous hard work, but it is
21:00just a bit more organized thinking.
21:03So so that we don't fall into the traps.
21:06We were supposed to be wrapping up now.
21:07I seem to remember someone telling me.
21:09So,
21:10>> [laughter]
21:10>> I think
21:12So, our question that we both definitely
21:14remember was around can AI succeed
21:16without a technical foundation? I think
21:17the answer is no, it can't. And we hope
21:21that it's going to get easier and
21:22quicker for companies to create their
21:24own technical foundation for themselves.
21:25>> With Yeah. tooling. Otherwise, it could
21:28be quite a few companies that struggle
21:31to get the most out of generative AI
21:33tools. Yeah. Uh that's a good That's a
21:35great summary. So,
21:36thank you very much, Steve. Thank you
21:38very much for you for being watching. If
21:40you've enjoyed it, don't forget to
21:41subscribe and to like and to join us in
21:44the comments for a conversation
21:45afterwards. Thank you. Thanks.