PurePerformance - Bad Software Engineering killed Cyberpunk 2077 Release – What we can learn from it with Dave Farley

Episode Date: February 8, 2021

If you are not a gamer you may have never heard about Cyberpunk 2077. If you are – you may know about the challenges during their latest release.Dave Farley (@davefarley77), Co-Author of best seller... Continuous Delivery, has been an engineering large and complex systems for decades. His work helped elevate our industry around Continuous Delivery and DevOps. In this episode he shares his learnings from failed projects like Cyberpunk as well as his own latest experiences around that picking the latest technology might be fashionable but is not always the smartest choice.To learn more about Dave check out Continuous Delivery website that also links to his YouTube Channel hosting some of the episodes he was referencing in the podcast.https://twitter.com/davefarley77https://www.amazon.com/Continuous-Delivery-Deployment-Automation-Addison-Wesley/dp/0321601912#ace-g9859629705https://www.continuous-delivery.co.uk/https://www.youtube.com/channel/UCCfqyGl3nq_V0bo64CjZh8g

Transcript
Discussion (0)
Starting point is 00:00:00 It's time for Pure Performance! Get your stopwatches ready, it's time for Pure Performance with Andy Grabner and Brian Wilson. Hello everybody and welcome to another episode of Pure Performance. Actually, it's the 125th episode of Pure Performance, according to my count. That does not include all the perform episodes and one-offs, but the 125th actual episode. So whoever's listening is here for a milestone. And obviously one of the people who's with me, always is my co-host, Andy Grabner, who's a little hairy today. Hello, Andy.
Starting point is 00:00:51 How are you doing? Well, it's unfortunate that we don't record the video for our podcast, but yeah, I'm actually kind of proud for my facial hair. After two weeks, I finally grow a beard and the color is also reflecting the color outside because it's snowing right now in Linz and I get a little whitish beard here. So. Nice. Yeah. And I could have asked how you're doing and you could have responded. I don't know. It's been a little hairy here. Crazy, you know, but 125 episodes. It's amazing.'s three three years almost no we've been going for four years i think in fact um my wife's cousin's husband ted who's a fan of the show i'm not sure if he still listens
Starting point is 00:01:32 regularly but if you do hey ted um their mom makes us a count my wife and i calendar every year with our birthdays and all and on one of them it has uh the the anniversary for pure performance so yeah it's been going on for quite a while now yeah it's uh you know it's great even though it's a challenging it was a challenging year last year but uh we're we're strong and we're back in 2021 we do our best to make the year a good year yep and we have great guests as always yeah Yeah. And talking about guests, it's a great segue. I was actually really excited that I was invited to speak at the conference called Scaling Continuous Delivery. And the keynote speaker of that conference is our guest today, Dave Farley, who is talking about scaling up. And this is
Starting point is 00:02:25 really, it's an honor, first of all, to speak at the same conference that he's speaking. And then also, I know, Dave, you're always busy, I assume, because you do a lot of things. And therefore, it's really great that you find time to get on this podcast. Now, for those people that, for whatever magical reason, have escaped what you're doing or what you have been doing, especially for the continuous delivery community, maybe you can quickly introduce yourself to our listeners. Sure. First, thank you very much for inviting me
Starting point is 00:02:55 onto the 125th podcast. And I like your beard. I think it looks good. So, yeah, my name is Daveave farley i'm a software engineer by profession software developer by profession i spent most of my career building what i think i was largely kind of the complicated end most of the systems that i built have been large scale distributed systems in the last 30 years or so and um i was author i'm also the co-author of a book that's became quite successful called continuous delivery with jess fumble and i think if people have heard
Starting point is 00:03:36 of continuous delivery and not me i'm probably part of the reason why they've heard of it because because i think continuous delivery was a very successful book in that respect um what i do these days is i work as an independent consultant and offer my the windmill that i am tilting at is that i am trying to figure out how i can help people do a better job of building better software faster and i've got a youtube channel and i write books and do conference talks and act as a consultant and all of those things really are focused on trying to do that thing yeah very cool and you are very humble in in what the way you you explain uh your impact on the industry and you can see there's a word punt on chess humble you're very humble right i guess i'm not sure if this actually makes sense i'm not native speaker in english but i just make up things sometimes but um so dave
Starting point is 00:04:29 i have to say that when i did the research to this podcast initially i thought well scaling up sounds like an interesting topic that's the the title of your talk it continues delivery but then you also pointed me to your YouTube channel and I started watching it. And there was one episode recently that you recorded and I think that became hugely successful. It was around the cyberpunk release. And I think there, I really thought it was very interesting. The things that you explained that you walk through, especially around planning challenges. I thought that was an interesting point of what can go wrong with planning that then leads to catastrophic failures
Starting point is 00:05:08 like that release. But maybe instead of me repeating what I've learned from your show, especially on the Cyberpunk release, can you just quickly fill us in? How did it happen? And then what did you learn, especially from it?
Starting point is 00:05:23 Sure. I think there's a couple of different angles from that. So as you said, the video on my channel was surprisingly successful. My channel was doing well. It was growing better than average. I've been doing it since the pandemic started, basically. A channel on YouTube focused on software engineering in the context of kind of DevOps continuous delivery, those sorts of practices, is primarily what it's about.
Starting point is 00:05:49 But I thought that when the cyber, the problem with the Cyberpunk 2077 release was announced, I thought it would be interesting to just try and analyse that from publicly available sources and just if I could kind of see what I thought went wrong. And I came up with some things, and really I used the case study of the cyberpunk failure to look into what was observable about the way in which they practiced software development,
Starting point is 00:06:25 which is what I mean about when I talk about engineering. So one of the things that I've learned, so the video ended up being remarkably successful. We were just chatting before we started. When we started out recording the video, I was chatting to my wife and my son, and we thought that maybe we might get 10,000 views on this video. It ended up at the moment it's at 424,000. And I've gained significantly more subscribers to my channel and all of my other videos are being watched more, which is all great from my point of view because I want to get my message out there.
Starting point is 00:07:02 So the Cyberpunk video was interesting. One of the things that I thought was really interesting was the feedback that I got. So one of the bits of the commonest bit of negative feedback that I got in the chat section for that YouTube video was that it wasn't the engineering that was at fault, which was the theme of my video. It was the management.
Starting point is 00:07:24 And I think that's missing a trick because when I talk about engineering and thinking about engineering, engineering is the process of creating something. It's not the thing itself. And I've got, so if anybody's interested in my channel, I've got a great, what I think is a really good video coming up tomorrow, which is about looking at the positive example of engineering, SpaceX
Starting point is 00:07:46 in this case, and what we can learn from it. I think engineering is a really interesting discipline and an interesting challenge, and we don't really do much of it in software development. So my thesis is, how do we learn to be a bit more like engineers, applying scientific rationalism to solving problems in software? The take on the planning thing from the cyberpunk point of view is what seemed very evident to me looking at it from the outside and from publicly available sources was that they'd attempted to fix time and scope in planning. So there's the classic planning triangle, the iron triangle, sometimes people call it, of
Starting point is 00:08:26 planning scope, and people usually say resources, but they mean usually human beings. So, you know, you can go faster by changing one of those axes, you know, or two of those axes is usually the argument. But you can't really go faster by adding more people we know that we've known that since the 1970s fred brooks famously said you can't make a baby with nine in a month with nine women you know there are limits to how parallel you can go in solving a problem um so so just adding more bodies or more people to solving it doesn't work. So that leaves time and scope. So you can either work to a fixed time, in which case you don't say what's in it.
Starting point is 00:09:12 You work so that your software is always releasable constantly. And then at the point that when you hit the deadline, you release whatever it is that you've got at that point. Or you fix scope. You have a target for what it is that you've got at that point. Or you fix scope. You have a target for what it is that you want to achieve. You build that thing, and only when it's done do you say, I've got this thing, and then you release it. That's interesting.
Starting point is 00:09:38 That's the approach that Apple tend to take with their products. Mostly, the vast majority of Apple products aren't pre-announced. They try as hard as they can to keep all of their stuff secret so that it gives themselves the freedom to get stuff wrong. There have been rumors, for example, about Apple Glass for at least the last three years, their VR, AR product, which has been in gestation for a very long time. And all of the signals are that they're working really hard on it. But there's nothing publicly announced because
Starting point is 00:10:11 they haven't got it right yet. And we won't know about it until they think they have. So these are really different ways of working. And I think interestingly, contrast, my thing is this scientific rationalism is to you know engineering is about you know facing up to reality and dealing with reality as it is not trying to invent some kind of magical thinking you know your wish of what you would prefer reality to be and the reality is is if you're planning a large creative act that is a reasonable description of software development, you can't fix time and scope. That's just stupid. So you've got to figure out which one you want to do
Starting point is 00:10:54 and you want to work within the constraints that that choice offers you. So let me ask. My previous job, their approach seemed to be to reduce or shorten the timeline and add scope based on contracts they signed after the project started. So I think that's not a good thing to do. It's not a good thing. How did that work out for them? Well, you know, I always go back to the Parts Unlimited release. I think it's this stupid way.
Starting point is 00:11:37 And you can understand it. You can completely sympathize with the desire. It would be lovely if I could accurately predict how hard a problem in software was going to be and when i'd be able to give you the solution that would be lovely if i could do that i'm pretty good at software development if you'll forgive me boasting but i don't know how to achieve that that's not possible so instead i'm going to work to to optimize either time or scope and either one of those i can do i know how to optimize either time or scope. And either one of those I can do.
Starting point is 00:12:08 I know how to do either one of those. But, you know, there are trade-offs. And I think that's interesting because I think if you look at engineering, my thesis, my thing, my passion is to how would we get to improve the quality of engineering, and I mean that in the strictest definitional terms, in software. And so I'm currently writing a book on this subject, so I'm quite thoughtful about what engineering is at the moment. And I think if we started to think in those sorts of terms and face up to the realities, then in engineering,
Starting point is 00:12:40 there's nearly always trade-offs. If you're building an airplane or a space rocket there's a huge trade-off between the strength of the structure that you build and the lightness of the structure because any flying machine lightness is a key attribute you know it needs to be both strong and light and so you can't you know the the the stronger that you make it the heavier that you make it that the heavier that you make it, that means the more proportion that you need, that means the more fuel that you need, that means the stronger you have to make it,
Starting point is 00:13:09 and there's this nasty negative spiral. And engineering is nearly always like that. There are nearly always these balance, these different values that you have to trade off against one another. And I think that's important. And time and scope is kind of one of one of those classic trade-offs that we need to we need to think about and worry about and face up to rationally to do a good job my preferred approach in general is to work so that my software is always releasable even
Starting point is 00:13:37 from day one from day one i'm going to try and reproduce something that's releasable it's not going to be useful yet but conceptually that feature is complete to production quality with no more work to do that's what i mean by releasable and then i'm going to do that and do that and do that until i've got enough stuff that's going to be useful to people and then i can release it yeah now let me ask you a question then i assume with the cyberpunk release the reason why they had obviously a trouble with time is because there is obviously after engineering, there's other people like the business, the marketing, that probably
Starting point is 00:14:10 it's a big production. They probably have made announcements and promises to their user base that they will have something available by a certain time. I'm sure this takes also time on that creative side to get this part of the business to get things out.
Starting point is 00:14:26 And so my question is, we've been, I think over the years, really try to get good from the DevOps movement to figure out how we can do this continuous delivery, having always something that is deployable, automating as much as possible. But it seems we have not done a good job in including the business in the whole process so that they also understand that we are we are basically we have a moving target right because
Starting point is 00:14:51 there's always also problems that's coming along the way yes we try to do our best but obviously they also need to be included in this continuous process and also need to get more flexible but then the question is how flexible can everybody be in the value creation chain that goes all the way out to buying ad space? I don't know. Nowadays, we don't need to print CDs anymore or ship them, but still, right? I mean, there's something in once the software is done until it's in the hand of the end user and there's a lot of other parties involved. So my question is, is there anything we've learned from DevOps to extend it to BIS? And I don't want to say BIS DevOps now, but I'm saying BIS DevOps.
Starting point is 00:15:34 Is there something we've learned on how we can also include the business side so that overall we're not just becoming better in delivery, but really in bringing things to the user so that they are not disappointed because they were promised something that we couldn't deliver. But I mean, hopefully I make my point clear. Yeah, I think that there is, and profoundly so. I think that if you look at the organizations that we would all kind of think of as examples of world-class performance in you know software whatever that means you know whatever in whatever context um I think that one of the things that characterizes them more than anything else is that they don't look like other organizations
Starting point is 00:16:24 they don't look like regular organizations and i think there's really really important profound reasons for that forgive me for being slightly philosophical for a moment but i think that one of the interesting aspects of the impact of the information revolution on our society is the way that it's challenged existing structures and institutions and thinking. And that's absolutely true of business thinking, business structures, big, you know, organisational thinking. I think that through, so in the early part of the 20th century, there was a lot of work done to kind of formalise production processes, with kind of production lines and mass production and all those sorts of things.
Starting point is 00:17:07 That really, really, you know, it wasn't invented in the 20th century, but it really came into play at the early part of the 20th century, those techniques. And so that became kind of the defining characteristic, the default go-to place that people thought about when they were trying to structure an organisation. What happened with the information revolution and software software is different software software presents a bunch of challenges and that you don't face when you're building widgets building widgets produces a bunch of challenges that you don't face when you're building software
Starting point is 00:17:42 and so the same techniques don't work for software as work for building widgets um and so i think one of the biggest mistakes is that we've tried to force fit widget building techniques to building software simple example we don't have a production problem if i i i have a cup of coffee in front of me and the design of the cup is kind of interesting and all that sort of thing, perhaps. But the hard part of building a cup like this is the manufacturing, the production engineering, to be able to mass produce these to a certain quality, to a certain price. Imagine all of the logistics to get the materials just in the right place so that you can build these cups by their thousands or maybe even millions.
Starting point is 00:18:28 You know, that's always the hard part of the problem when we're building physical things. We never have that problem writing software. We can build the world's most complicated system and at the push of a button, unless we're stupid and do something dumb, at the push of a button, we can almost for free clone all of that stream of bytes
Starting point is 00:18:47 that represents that system. So our production costs are effectively nil. Our problem is never a production problem. And that has some profound implications. It changes the way that you think about it. Now, going back to thinking about business organizations, if you wanted to be effective as a business then the way that you should do it is that you kind of think what you want to do
Starting point is 00:19:11 and then figure out about how you're going to do it and then organize yourselves to be able to do that thing do you know work that way and that's how almost no traditional organizations work. The way that nearly all traditional organizations work is that they have an organizational structure that was created and embodied decades ago, and then they work within the constraints of that organizational structure. That's not what Amazon do. That's not what Google do. It's not what Netflix do or any of these big organizations. They do things differently. So I tend to use the terminology. I tend to not use the terminology DevOps kind of for this reason
Starting point is 00:19:56 because for me at least it narrows my thinking too much. If I'm talking about DevOps, I'm thinking about the relationship between dev and ops, and that's deeply important. And I love the DevOps movement and the people involved and the ideas. I just don't like the terminology. My preferred terminology is continuous delivery because I think that's a broader concept. So if we think about continuously delivering value into the hands of users, what does that take? It's not just about the software creation.
Starting point is 00:20:29 It's about the flow of ideas, the prioritization of ideas, the choice of ideas, the ability to go into production, see that an idea is bad, say we're not going to do that anymore, and do something different. All of that, for me, is part of this continuous delivery model and so if you want to optimize for that i i i make a large part of my living consulting with usually reasonably large organizations and what i say to them is that if you want to be good at this stuff you've got to take into consideration technical performance. You've got to be really, really good technically. You've got to take in cultural performance.
Starting point is 00:21:08 You've got to be thinking the right way, applying the right kinds of, the right mindsets to solving these problems, and organisational performance. You need to structure organisationally to minimise coupling, reduce the dependencies between different parts of the organisation. I don't want to be sitting waiting for you to finish a piece of code or vice versa in order to release we want to be able to you know release more effectively more independent all of those kinds of things and that's what it takes those are the kinds of ideas that it takes so i think that deeply
Starting point is 00:21:37 profoundly this changes the way that you think about not just tech but businesses and i i've been doing a series of talks to small groups of cto kind of people uh recently which is about this this kind of idea of economies of speed how do you you know how do you maximize your advantage as a business by going faster so i like what you just said with the decoupling. Have you read, I'm pretty sure you've read the team topologies. Are you aware of that book? I also thought that was pretty interesting on how they were also relating, obviously, the way you structure your teams,
Starting point is 00:22:17 that this also then have an impact on the architecture. I think this is a common non-entity anyway, that we often make the mistake that our software architectures reflect the business structure and obviously if we have a business structure that was inherited or invented decades ago then obviously we won't get out of the of the thinking and we will just have a software that reflects the architecture I am I first I love I love the teen topologies book i think i think it's fantastic and if i if i forget remind me to come back and talk about platforms
Starting point is 00:22:52 platform team but but i think it's i think it's a great book but the um um i'll just if you'll forgive me just plugging my channel again i've got a video on building big software with small teams. So decoupling. I am a self-confessed techie nerd, and so I view the world from that perspective. And so one of the things that I think is absolutely fascinating if you think about software and information systems, you know, at all, is that it's kind of true of everything some of the stuff that we think about as being software things are really just information
Starting point is 00:23:35 things and that's true of the world the universe you know physics kind of thing it's some of this stuff's quite deep so one of the things that i think so i think what one of the kind of thing it's some of this stuff's quite deep so one of the things that i think so i think what one of the kind of ways that i try and capture that is i think there are two genuinely hard problems in computer science one of them's one of them's concurrency and the other one's coupling and concurrency is mainly difficult because of coupling. So coupling is this hugely difficult problem. And that's just as true of organisations as teams and teams as it is of the software that they build. So we want to be able to focus on building software that is appropriately coupled and gives teams the freedom
Starting point is 00:24:22 and the independence to make progress in their part of the system. But we don't want it to be so coupled that they are having to, you know, it's fragile and if they make a change over here, it breaks something over there. All of that stuff's really important. And I think we often don't talk enough about the challenge of managing. I'm kind of old.
Starting point is 00:24:44 I've been doing this for a very long time. And I've come, I think, if I was to try and get, you know, capture the thing that I've learned most profoundly is that good software development is nearly all about managing coupling. At every level of granularity. It's true of the finest detail in writing a bit of code and building an enterprise system or or an enterprise to be able to build a system yeah because decoupling obviously decoupling
Starting point is 00:25:11 in the end also gives you resiliency right if you decouple that means it gives you resiliency on the finest level of element or entity that you build if you do it right yeah and i think if we then spend this further from the technical side, how we build our architectures and we can also decouple the outcome of what we build with the business. I think that that's when we are truly there where modern software organizations are. That's why I like so much what you said earlier. And maybe again, a shout out to organizations that are still trying, that are still struggling and trying to figure out how can
Starting point is 00:25:45 they become true software organizations. In order to become a true software organization, I guess you have to, or how did you call it again, an information organization, that you really need to look at those companies that have been doing it from the start really well. The Googles, the Netflix of the world, they not only develop differently, they operate, the organization is differently structured. They release differently. They make business announcements differently, they plan differently.
Starting point is 00:26:18 And that's why a lot of organizations that are now in the need to transform into the digital age, they will only be successful if they throw away a lot of the stuff that has worked for them over the past decades. But now it's a different age. We are in the digital age, we're in the information age, and we need to rethink everything from end to end, from the value creation process. Yeah, I think that what we are talking about here
Starting point is 00:26:47 is incredibly challenging for an organisation because it is a genuine paradigm shift. It's a genuine changing perspective. And the hard part of a paradigm shift is that it means that the rules of the old paradigm no longer apply. So going back to the stuff that we were talking about cyberpunk 2077 and all of all of that and planning um the the agile paradigm can help you to work towards the dates but it's largely optimized at being able to do the
Starting point is 00:27:21 kind of continual drip drip drip drip drip releases that allow you to always be releasing things. And so it's better at managing, it's most effective, I think, most efficient from an organisation's point of view, I think, when you are just working optimally to release frequently because that allows you then the shortest distance from idea to something useful. I think working to a time, you can use agile practices
Starting point is 00:27:51 to hit a date and all of that kind of stuff. But why would you want to do that if you could have it sooner? It's kind of less optimal. And that's kind of a bit of a mind hack for many organizations. They want to be, oh, yeah, yeah, but we've got to have this release date. Going back to the thing that you were saying about, you know, what about the marketing campaigns and all that? It's a choice.
Starting point is 00:28:15 The most successful organization in the world, business in the world, doesn't do that. So it's a choice that we have, that an organization has. It's a tool that we have that an organization have it's a tool that we choose and we can decide how to apply that tool yeah and so if i if i can quickly repeat what i think i'll just learn if you are focusing on scope that actually makes you also think about how can you break down a big let's say end goal that you have, like best software in industry XYZ in the world? How can you break it down into small increments and then basically define small scopes and then continuously release that? And then at some point you'll see, hey, say we are
Starting point is 00:28:56 halfway there and it's already, you know, it already provides value to our users. So let's start some marketing rumble about it. But yeah, I think that's... Yeah. I'm curious in the gaming world, is continuous delivery a viable option in the gaming world? I mean, I'm not a huge gamer. I know there's story-based games
Starting point is 00:29:17 and then there are things like Minecraft and I don't know if Second Life is still going or things like The Sims where there's really no point to the game except to just walk around and explore and hit things, right? Where a lot of other games actually have a story, have goals, you have to do X, Y, Z and all. So with this idea of continuous deployment, continuous development and all that, how does that fit into the gaming world or how could they adapt or adopt to better take advantage of this because
Starting point is 00:29:46 i can't imagine putting out a viable game when it's not done because then people will be like yeah it's kind of cool but now i played through this mission it was a half-assed mission i'm not going to go back and do it again now that the other features are there i have any thoughts on that considering you know in context of this yeah yeah absolutely so so so the first thing that i should say is that a confession i haven't written uh what in the 1980s we would have called a video game probably since the 1980s or 90s it's chip challenge i wrote a few that's how i started out writing space invaders and stuff like that for microcomputers but so i've done those sorts of things, so I know what it takes. I've done quite a lot of graphics programming,
Starting point is 00:30:30 so I know what's involved in that, but I've never been involved in writing a kind of modern AAA game, so I can't really talk to that. Practically, there are examples of modern AAA games that were developed with continuous delivery, and the developers that worked on those teams shout about it and say how wonderful the experience was compared to regular game development. So practically, it's possible. I want to think about it, though, from a slightly different angle, is that I'm not sure it's very different to any of the software.
Starting point is 00:31:02 It certainly has some different challenges. But let's think for a minute of something else that's kind of not as graphically intensive as a game, but graphically intensive, a rich web application of some kind. One of my friends, Gojko Adzic, he has a product that does mind mapping. So it's all visual. It's called MindMup, and you just can draw mind maps on a web page to represent your ideas and grow your ideas and all that kind of stuff.
Starting point is 00:31:36 And it's very successful, and that's developed using continuous delivery. It's not as graphically intensive as a game, but it's graphically intensive. And the way that you approach those kinds of problems is so first you want the architectural separation so you're you were talking about the different kinds of behaviors that you have within a game there's going to be what you might think of as the domain logic the the the uh the simulation of a game world in which you that you're going to inhabit um and from you know from that you're going to be rendering pixels so if you can kind of you know and that's not
Starting point is 00:32:13 really significantly it's different in scale but it's not really significantly different in the division of behaviors from writing a regular web page. And you've got a DOM and you're rendering pixels on a DOM and those sorts of things. So the sorts of techniques are more challenging at the scale of a game, but not fundamentally different. So we could imagine building, you know, our game simulation, you know, our virtual world in abstract, which you must do to implement a rich 3D game,
Starting point is 00:32:49 and testing it in simulation without painting the pixels. You could test that all the logic was coherent and that when you killed somebody, they were killed. When you hit something, it was hit. And all of that sort of stuff, you don't need to actually paint the pixels to figure that out. And then you could imagine testing the rendering part of it separate from that that's that's mostly going to be the province of these days of you know unreal or you know one of those kinds of big engines something
Starting point is 00:33:16 like that anyway so you can imagine you know testing the the logic outside of the pixel painting that's that's one route but even. But even then, you could still think about techniques for applying this kind of thinking. And it would be challenging and it would be difficult, but the difficulty in the games industry, I think, is first the economics. I think there were some unpleasant things. If you look at some of the stories that come out of the company that builds Cyberpunk, they were what they call
Starting point is 00:33:49 in the games industry crunching for over a year, which meant working kind of 60-hour weeks and all of this kind of stuff for more than a year. That's not a pleasant working environment. That's not going to come up with something creative if you're doing something like that, working like that. So there are those sorts of challenges, which are too common in the game industry, I think.
Starting point is 00:34:11 But also I think there's a lack of belief that they can use these techniques. I think that if you went in thinking that that's how we should work, then you'd find ways to solve those problems. Part of my background is working another place where people said it wasn't possible to do this kind of development. Part of my background is in low-latency finance, high-frequency trading systems, building ultra-performance systems.
Starting point is 00:34:43 And we built one of the world's highest performance financial exchanges from scratch using these kinds of techniques different set of challenges right but but i don't think in terms of the scale or the complexity of the system there's any difference so they're different challenges but they're comparable challenges in some way i think so i think that there's some kind of deeper principles. You start off thinking that if I'm writing software, I need to know that the software that I'm writing is the software that I'm thinking that I'm writing.
Starting point is 00:35:14 So you need techniques like test-driven development, you need techniques like continuous integration, and you need to be working to a completed, you know, releasable thing, and that's continuous delivery. Building an exchange is picking up on one of the other things that you said was that building an exchange is rather similar to a game like that in that you're not allowed to really release
Starting point is 00:35:35 half an exchange because the regulators don't like it very much and the people that put their money in don't like it very much. Continuous delivery is working so your software is always releasable. It doesn't mean that you have to release. Continuous deployment is if you deploy it into production frequently and you get different lessons from that. It's valuable.
Starting point is 00:35:52 It's really useful to do continuous deployments. It's not necessary to get the value from the technical quality of the things that we produce, though. Continuous delivery gives you the technical quality. Continuous deployments allows you to get feedback on whether your products are right. Great point. Hey, Dave,
Starting point is 00:36:07 I think in the beginning I said scaling up your talk at the upcoming Scaling Continuous Delivery Conference would be something great to talk about. I assume that looking also at the abstract of that talk, we covered some of this already because you actually talk about Fred Brooks book, the mythical man month and so on. Now this is why I want to pivot over a little bit in, in the time we have left because I also listened to some of your other talks.
Starting point is 00:36:35 I know you're a big fan of the state of DevOps report. However, in the last report, you had some points where you were not, you know, we had some, some critical feedback, let's say that way, some good positive feedback. But there was a term in there, and you reminded me earlier, if we have time, let's go back to this, which is platforms and platform teams. Because the State of DevOps report also says,
Starting point is 00:36:58 because I'm using this also in my work a lot, it says organizations to really become successful have to think about building platforms that enable their engineers with self-service capabilities around different disciplines, whether it's around CICD, whether it's around standing up environments,
Starting point is 00:37:17 around monitoring and alerting, auditing, all these things. And they're all run into challenges like time is a challenge, technical skills are a challenge, the lack of challenges like time is a challenge, technical skills are a challenge, the lack of having things standardized is a challenge. Now, you especially and many others around you have been promoting all of these things over the last couple of years.
Starting point is 00:37:38 I mean, why are we still figuring out how to do this right? Because it seems a lot of organizations are still struggling. What can you tell them? Also maybe reference a little bit the platform aspect because I think you have some opinions there. Why are we still in the state of talking about continuous delivery and educating people? I think this is a complicated thing to change.
Starting point is 00:38:09 If you think about what it takes to be able to effect the kind of change that we've been discussing so far this afternoon, it's all-encompassing. It changes the way that we think about structuring organisations, the way that people working in those organisations work. An individual working as a developer or a tester or a product owner or whoever they are, it's going to change the way that they work and think about their work.
Starting point is 00:38:37 That's really, really difficult for human beings to do. That's a really challenging thing. So it's going to take a long time. It is happening. So my perception, I'm the victim of my own filter bubble, do that's a really challenging thing so it's going to take a long time it is happening it's so my percent i'm i'm the victim of my own filter bubble like everybody else but but my my perception is that it's significantly happening a growing fraction of software is built using these techniques and there's really really good reasons why it's because it works better than anything
Starting point is 00:39:03 else that we have been able to know or understand that you know that we for the first time in the history of software development we have data that we can point out to say if you do these things you are you are more likely to get a positive outcome we've never had that before really in terms of real sociological data that's why i care so much about the State of DevOps report and critique it. Now, there's a whole bunch of things that are problematic to achieve that. I think there are some things in our industry that are challenging. I think that our industry has not done a very good job of learning. We've not, you know, we've made some kind of haphazard progress
Starting point is 00:39:47 but i mean i'm writing a book at the moment which i'm hoping to will be released later in the year about the discipline of software engineering what engineering means for software and as part of that book i'm it's kind of a slightly jokey exercise, but I tried writing a simple CRUD application using modern frameworks and technology. I picked Angular and I just wrote a CRUD application. And then I wrote exactly the same application in tech that was available in 1996. That allowed me to use Java servlets,
Starting point is 00:40:22 Java HTML, CSS, JavaScript. And I reckon that the old version is probably about a quarter of the code of the new version. Now, there's things that the new version gives me. There's things that the new version gives me that the old version didn't, for sure. There's certainly improvements in the platforms that have happened over the time.
Starting point is 00:40:46 HTTP and HTML is a better standard now than it was then. All of those things, I'm not trying to prove that. But I'm just trying to highlight in the book that the learning that we think, the progress that we think we've made isn't always where we think it is. Yeah. And part of that is that we tend to make decisions on the basis of um if you'll forgive me if the audience will forgive me sort of fashion uh rather than a real
Starting point is 00:41:16 decision let me just a little aside this week's video on my youtube channel which i commend you to go and look at is using spacex as an example of great engineering and what we can learn from spacex spacex um made a decision in 2019 to switch from building their starship from carbon fiber to building it out of stainless steel they did that on the basis of um some engineering decision making so they first looked at the cost. It was costing them $300 per kilogram to build it out of carbon fiber, and it was going to cost them $3 per kilogram to build it out of stainless steel. Then they looked at the temperature difference. At above 300 degrees centigrade, carbon fiber starts to soften a little bit and it loses some
Starting point is 00:42:06 of its strength and so for heat shielding for re-entry and all that kind of stuff they needed to keep the surface of the spaceship below 300 degrees stainless steel 1500 degrees and then at cryogenic temperatures carbon fiber becomes more brittle at cryogenic temperatures as is aluminium the other alternative. Stainless steel doesn't. When's the last time you heard a software decision that sounded like that? For anything. When's the last time you heard anybody choosing,
Starting point is 00:42:34 making a decision about what they were going to do in software that sounded even vaguely like that? We don't do that kind of reasoning. We don't do that kind of thinking. And the other reason why I value the state of DevOps stuff so highly is because that gives us a measure, a basis on which we could start to do that. The measures of stability and throughput that is the foundation of the state of DevOps report and the Accelerate book
Starting point is 00:42:59 give us that benchmark in which we can evaluate those kinds of ideas. What's the quality of the stuff that I produce and how efficiently do I produce it? That's pretty good stuff. And Andy, that's a topic that comes up quite often with our guests is the idea of, you know, don't pick the latest technology because it's the latest technology. Think about, as we even said at the very beginning of this episode, is what is it that you're trying to accomplish and then fill in the gaps from there? And that's how you're going to pick your platforms. Everyone's like, oh, Kubernetes and serverless. Well, why?
Starting point is 00:43:31 Yes, there's a lot of great benefits to it. How do they apply to what you're doing and how are you going to take advantage of them? But then let me ask you a question. This is just a theory now on my end. You used the word fashion, right? It's a fashion that people go to Kubernetes and serverless and everything. Might it be also psychologically easier
Starting point is 00:43:48 to make a popular decision where you know everybody goes to because you know if you mess up, you were at least part of a group and all of them made the wrong decision. It's like whether you like the analysts, yes or no, the software analysts that say, this is the tool that you need to buy in the enterprise
Starting point is 00:44:04 because they're on the top right of the quadrant and obviously you'll decide for that because as an executive you want to make a decision and if you fail you can at least blame it on somebody else is that also maybe part of the thinking where you say well we don't have to i mean the one of the reasons why maybe so many people go towards the latest and greatest because everybody's hyping these technologies and so everybody thinks this you have to be there because that's the future and sometimes you actually are much better off with the technology of the past and to and to be fair mostly it's not the future occasionally it is you might hit on the right thing that is the future but mostly that you know there are lots there are more dead ends the other thing that we're not good at as a result is that we're not good with discarding the bad ideas.
Starting point is 00:44:46 There's still people, you know, I don't want to give your podcast flack, but here's some clickbait for you. There's still people writing C++ arguing that Vi is the right editor. How on earth is Vi ever the right editor when there are tools that can, you know, syntactically analyze the code that you're doing and trace so you can do a rename. Do a rename in Vi. You've got to use grep. It's ridiculous. That's also why I think you brought up a metric
Starting point is 00:45:18 earlier where you said the code that you wrote in Java was only half, but I think that's only one metric. You need to obviously not just look at one metric. In the end, it's about efficiency, how efficient are you with code changes and all that stuff. But yeah, I get your points. There's clearly some things we can all agree on that the future is better than the past, but then... So my thing is, what would it take to allow us to make decisions more rationally?
Starting point is 00:45:45 So I think you're absolutely right. In the 1990s, there was a very common phrase. I think it probably predated the 1990s, which was you never got fired for buying IBM. In a big organization, if you just chose IBM, even if it went wrong, nobody would blame you because IBM was the default answer for most things. And we do the same thing. Everybody know, everybody at the moment is building systems that are microservices. One of my friends is Sam Newman, the person that wrote the book that defined microservices. And he says, don't start by building microservices. That's dumb.
Starting point is 00:46:19 So, you know, we need to be more thoughtful about these things. We are an industry that tends to work on fashion and soundbites, and we need to move away from that. If we want to make decisions that really have an impact on the effectiveness of the organizations in which we work and the products that we create. And that's what organizations like Amazon and Google, they take it more seriously than that.
Starting point is 00:46:41 It's not just about we're more choice in that sense. They're going to do a little bit more. They're going to apply a little bit more of those cost-benefit analysis and not jump on the latest fad necessarily. I have one last thing I wanted to actually get your feedback on and kind of get a validation or tell you a story and then I'll see what you say. One of the projects that I'm personally involved in is the open source project Captain.
Starting point is 00:47:07 Everybody drink. Let everybody drink. Everybody drink, that's right. There's a joke between us. Whenever I use the word Captain, you can have a sip of whatever. I knew it was coming, Andy. So Dave,
Starting point is 00:47:23 we're part of that open source project. And what is interesting, when we launched thatatrace so we build a set of tutorials and samples on connecting jenkins uh letting jenkins deploy into kubernetes and then setting up dynatrace monitoring all that stuff and eventually out of that evolved uh the open source project captain where we basically said it's really hard to integrate all these different tools because captain calling this tool i'm sorry j Jenkins calling this tool, then the other. And if you want to switch a tool, you have to touch all of your different pipelines and figure out how to change things. And so we evolved the whole thing into an orchestrator, basically, that is orchestrating
Starting point is 00:48:19 processes around continuous delivery and also operations that can then orchestrate, let's say, delivery with automated testing and quality gates and promotion by sending events and then trigger maybe Jenkins or Spinnaker or whatever. But it was basically an orchestrator. Now, what we did in the very beginning, we also picked the latest and greatest technology and we ripped it out after a year.
Starting point is 00:48:43 And we've kind of reinvented the whole thing multiple times because in the beginning we made the mistake, let's use the greatest that we see on Twitter and this must be the right thing. But for us, it was not the right thing. So now we are at a stage after about two years where we have the architecture right. And also what the other thing that we learned,
Starting point is 00:49:02 we always were so proud about that it is an event-driven architecture that we have. However, an event-driven architecture is not the benefit for the end user. If I tell you, if you're looking for a new continuous delivery system or a new orchestrator for delivery processes, if I sell you event-driven, that it might excite you because you're techie. But really, what's the benefit? And so what we've been doing is, I think the real value
Starting point is 00:49:27 that we have figured out over many iterations is that we're separating the process definition from the actual tooling, from the actors, and we're using eventing to connect those. Now, my question to you now, after all this talk and mentioning the word captain so that Brian can drink more and more, is you have been very active, obviously, in continuous delivery. You just mentioned not always look into the future. I mean, it's good to look into the future, but don't always take the latest and greatest. Maybe you can go back to some old technology. Do you though think, even after all the talk about
Starting point is 00:50:05 organizational cultural changes, that we have some tool deficiencies or that there are certain things we also have to do on the tooling side to enable organizations to get better, to automate more? Or are there already some tools that you have been seeing out there that just make it easier for people to deploy, to get feedback, to do their experiments. Is there anything that you see? I think I'm going to answer that question in a way that maybe is not what you intended when you asked it. So forgive me, but I think, I think that, so, so the the first i'm a software developer i use tools software
Starting point is 00:50:48 tools all day every day and they're important to me but i don't think that that's what makes me a good or a bad software developer i don't think the tools matter if you were If you were hiring carpenters, you wouldn't ask them, what kind of saw do you use? You'd ask them, what kind of chairs do you build? Or what kind of windows do you make? You're interested in the product, not the tools. And I think that one of the failings of our industry is that we are overly obsessed with tools it's interesting you know it's it's it's it's it's you know tools matter but they matter to the degree to which they can help us achieve some kind of outcome some some some kind of result um so the stuff that you're talking about so so so i am a big fan of you know event sourcing as an architectural pattern that's the way that I've been mostly developing software for a very long time when I build software.
Starting point is 00:51:49 Those are the kinds of systems that I tend to build. And one of the reasons for that is you kind of set up the question in my head and then answered it in your preamble. One of the values of that is when you do event sourcing well you tend to separate is that accidental complexity from essential complexity you're able to kind of focus on the policy which is the conversation that happens with your events separate from the implementation detail of how you fulfill that policy and that means then you can plug in different implementations to achieve different policies all these kind of good. So I'm a huge fan of that. And I think that there are some specific things.
Starting point is 00:52:27 I was – the place that I alluded to before where we built financial exchange was called LMAX, and we did some quite innovative things in terms of software architecture. I was part of an author of something called the Reactive Manifesto that describes some aspects of that, these event-based systems. But one of the things that I think is kind of really interesting about that is that we got to the stage where for most day-to-day development, you didn't have to worry about any
Starting point is 00:52:59 of the accidental complexity of the software. You didn't have to think about storage because that just happened in the background. You didn't have to think about resilience because that just happened in the background. You didn't have to think about resilience because that just happened in the background. You only had to worry about the performance of your bit because the performance of everything else happened in the background. So that was a pretty nice way to work.
Starting point is 00:53:16 That was pretty good. And I think there's more that we can do to kind of raise that abstraction with platforms and tools and all that kind of stuff. So I think there's absolutely more stuff to do, more stuff to do with tools. But I think where the real value gets to is the kind of, it seems to me, the kind of reasoning that I was just going through talking about event sourcing. Why is event sourcing useful? It's useful for some profound reasons. I don't care about it in terms of, you know, is it RabbitMQ
Starting point is 00:53:49 or is it Kafka or whatever. That's just implementation detail. It doesn't matter. The thing that matters is the degree to which I can achieve modularity, cohesion, separation of concerns, those sorts of more deeper fundamental principles in the in the design of my software through the use of the and the application of these tools and so that's the stuff that matters to me much more profoundly and one of my fond hopes is that you know as we mature as a discipline we can start having conversations more like that than about whether i don't react is better than angular or c-sharp
Starting point is 00:54:36 is better than job who cares i don't i really really don't care about those things you can give me a turing complete language then then I can write you a software. Cool. Thank you so much. Sorry, Brian, I didn't want to interrupt you. Oh, no, no, no. I was going to go off on something, but I'll wait till you finish.
Starting point is 00:55:00 There's a little clickbaity idea I had I just wanted to bring up. Not much to get feedback on so much, but some commentary I wanted to add. But go on, Andy. Well, I think maybe this is something that we also take offline because otherwise we would probably have been talking for too much longer. But I really would like to get your personal and professional opinion on the stuff that we are building because we've been doing this for two years now and
Starting point is 00:55:28 we want to always make sure and validate with the market if we are actually, you know, doing something and actually solving problems. That's kind of my point. And so maybe I'll keep the captain conversation for something offline later on, but it would be awesome to get your insights on insights on it uh yeah ideas all right brian up to you now so i was just going to go more into the philosophical world of this a little bit not not to go too deep here but you know you know taking a cue a little bit from you dave's wearing a skynet shirt. We were talking about Weyland-Yutani a little bit earlier, right? And Andy was asking about why people make these decisions because it's the safe decision, right? And I think the biggest problem that we see with not just continuous delivery, but any of these kind of advanced things is the restriction is the human.
Starting point is 00:56:22 The human element is the problem. Our primate bios is programmed to avoid risk and to protect what we have. So what I think we see a lot of happening is once companies start becoming successful with, say, continuous delivery and rolling things out, as more money starts flowing in, as the business gets bigger, as investors pay more attention, all the bureaucracy and everything else builds up around this. This is just a human condition, whether it's technology or anything else. Everything builds in to protect that and then dampen or hinder the progress that was being made to get it there in the first place. And I almost feel like there's always, throughout history, there's always been the cutting-edge people. You know, Copernicus, you talk elon musk or even though i have
Starting point is 00:57:06 plenty to say about that guy but you know these people who are visionaries who execute these things they're the anomaly they're the ones who had a bug in their code right that broke through and the rest of us just try to follow and make these safe decisions and so i almost feel like, you know, the dream of getting to these wonderful places won't happen while we're in charge of running them. But then if we aren't in charge of running them, we end up with Skynet, we end up with Weyland-Yutani, you know. And I don't know if there's, you know, any solution to that, but it's kind of the pickle we've been in throughout the dawn of human intelligence. And we're seeing it again. There's so many ways we can apply this. If we could just break our molding and everything else, there's so many wonderful things we can do. And I just don't know if that's ever going to happen in our lifetime, but maybe slowly, surely. I don't know if you think about that at all much, Dave, because it seemed like you were smiling a lot as I was saying this.
Starting point is 00:58:07 I think about that stuff a lot. I'm smiling because I love these kinds of ideas. I think some of these ideas are quite deep and kind of philosophical about the way software works, but the way that the world works a little bit as well. I am a technocrat i i am a a child of a you know science scientific education and you know that that's my belief that's my that's that's where i come from i i think that if you look at the history of you know human existence we've been around as a distinct species for somewhere between two and two hundred
Starting point is 00:58:43 and three hundred thousand years and we made no progress for, you know, all of that time, you know, on any non-logarithmic scale. It's a flat line until about 300 or 400 years ago. And then it started the exponential tick up, and then through the 20th century and the 21st century, we've had explosive growth. At the moment, human progress is said to be something, we double all of our knowledge every 14 months.
Starting point is 00:59:11 That's how fast we are learning at the moment. That's unprecedented, outstanding. And I think that's a direct consequence of the adoption of science and specifically engineering. If you think about everything that surrounds you, it's the product of that kind of thinking somewhere along the way. Scientific rationalism applied to solving problems. It works better.
Starting point is 00:59:34 And the reason it works better is exactly for the reasons that you've talked about, because we are human beings that are prone to all of these mistakes. So being a fan of physics and science one of my heroes is richard feinman the nobel prize winner and he he very famously said that you know science is our best protection against fooling ourselves and we are the easiest people to fool yeah so so science is about working in ways that stop us fooling ourselves. Instead of wishing that I'm going to use this because I think it's cool or whatever, decide to use it because it's going to make you more effective
Starting point is 01:00:14 because it allows you to build software with fewer bugs or produce software faster. That would be a better way of making those sorts of decisions. So I think we can start applying this. The other thing, I think there's been a bit of a blip partly due to 20 for early 21st century politics which i'm not going to go into you know of late but on the whole there's the work of stephen pinker i think it's fashionable to say that how things are getting worse and worse and worse actually that's not the case on all sorts of measures things are getting better and better
Starting point is 01:00:45 and better and again i would put that largely down to you know technical scientific rationalism there have been you know political blips where we've started not to distrust science and distrust engineering but i think that's the hope this is this is a little bit profound beyond beyond where the scope of what we're talking about but But I think that's the hope for humanity. That's how we get to survive, is by applying that kind of thinking. And if we don't, we won't. You know, the AI overlords will take over.
Starting point is 01:01:18 Yeah, I think it's all relevant, though, because when you start looking at this continuous delivery stuff, at least when I did, my eyes opened up opened up to like beyond software and automaking how all this could be applied everywhere so i think it definitely has a humongous scope i think there's a whole lot for us to learn to apply this and just in in so many different even in my daily work i'm like okay how can i apply this you know i'll take a step back like what am i actually trying to do not what do i do but what am i trying to get done and maybe I should change how I'm trying to get there. It's from the smallest to the grandest. It's a wonderful thought process. I'm really, really
Starting point is 01:01:53 happy it's come up during my lifetime and that I'm in an industry where we're aware of it. And hopefully it'll catch fire and spread further. I genuinely believe that what it is that we're talking about is the application of scientific rationalism to solving problems in software. And science works. It's humanity's best problem-solving technique. So if I'm correct, continuous delivery is going to work.
Starting point is 01:02:21 Very nice closing words as well, I would say. Hey, Dave. Hi. Thank you so much for being on the show. And I think, I mean, this episode will air after your talk at Scaled Continuous Delivery. So I encourage everyone to obviously watch that talk. We're also going to provide the links to your podcast, to your website. People should definitely, you know, take a look at your and subscribe to your channel.
Starting point is 01:02:46 I also took a couple of notes, actually, when I watched your different episodes on YouTube, and I can just really encourage everyone to look at the Cyberpunk, even though you already have half a million visitors already, but viewers, but I really liked, because I guess I didn't think so much about it you are the plan uh the planning triangle with uh scope time and resources that you've explained very well really i think it's everyone in the industry um should be reminded about this and then also you know use this as an argument to push back if somebody makes stupid not stupid but maybe from their side good decisions but just to explain them why certain things won't work.
Starting point is 01:03:27 As you said, you cannot make a baby in one month just by using men and women. This just doesn't work. And so with that, I don't know, do you have any, what's your, besides obviously getting to a million or two million viewers, what else is your hope for 2021? So I'm working quite hard on my next book at the moment, and I'm hoping to release that this year. And my ambition is if I can move the dial just a tiny little bit
Starting point is 01:04:02 on people's capability to do better build better software faster I will feel like that's a job well done so my mission is to try and figure out how I can help people to do that to think differently about software development and just improve the way that they do things a little bit that's what I'm trying to do
Starting point is 01:04:20 awesome well thank you very very much Steve we really really appreciate you being on I thought this was fascinating in so many levels but really really thankful for you being on and thankful for you being the 125th episode and I want to also thank
Starting point is 01:04:37 all of our listeners for being with us for 125 episodes if there's any who've been there since day one and I guess that's about it. You can follow us on Pure underscore DT on Twitter, or you can send an old-fashioned email, pureperformance at dynatrace.com. And Dave, we're going to have some links for where people can follow you.
Starting point is 01:04:59 Anything else besides your talk that's you and your book that's going to be coming out that you needed to plug, or did you get everything everything else in there i've got some nice training courses if anybody wants some training awesome all right we'll have all those links up on on the site as well because it's funny we always talk about putting links up but yet it's a podcast but where it's listed you know there's there's no audio qr code right that'd be that's something for somebody to develop right um i guess it's the modem sound right anyway um that's it for for to develop, right? I guess it's the modem sound, right? Anyway, that's it for me. Thanks, everyone, for listening. Until next time.
Starting point is 01:05:29 Thank you. Thank you.

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