What Do You Mean? - Kevlin Henney [ACCU 2019]

Video Statistics and Information

Video
Captions Word Cloud
Reddit Comments
Captions
[Music] [Laughter] [Music] who's that Peter saw my dad and he's like him talk bribed people to go to his session at this time by offering them chocolates there Kevin what are you offering and I said I'm offering you meaning okay it's that way way deeper and honestly for those of you who enjoyed yourselves perhaps a little too much at last night's event this is what you want on a Saturday morning we are going to continue a quest for meaning and I'm gonna okay we're gonna go a few places we're gonna go to a little bit let's make beer philosophy logic but linguistics oh there might even be a bit of code there's all kinds of stuff here and some human biology as well as deep profound observations so first of all what we do in software development is this ultimately this quest and structuring of meaning but most the time it ends up perhaps a little different and the problem with meaning it's one that I'm quite familiar with in the sense that one of my one of my hobbies is writing short fiction and so this is challenge of how do you get and you get story into somebody else's head so Robert Louis Stevenson made the observation the difficulty of literature is not to write although that can be a bit of a challenge but to write what you mean this is the first charge what do you mean not to affect your reader but to affect him precisely as you wish what you're trying to do is put something into somebody else's head which is kinda like okay that's kind of challenging in the absence of telepathy although it has to be said that I sure if the human race actually did acquire the ability to read other people's minds you know we had to let the I think that the human race would come to a very rapid and abrupt end I can't imagine that we would survive very long but then also some very interesting things is that meaning is not a fixed thing we can actually see this so Robert Louis Stevenson the author of Treasure Island dr. Jekyll mr. Hyde 19th century Scottish author and we can see that some words have already changed with time truth of intercourse is the title of this piece and it's just like perhaps the word intercourses shifted its meaning I'll we can forgive him the 19th century use of a gendered pronoun but the point there is I think that's going to get you into more trouble than that honestly so here's this interesting one this is a lovely paper I'm gonna come back to it later by mile lane in 80 programs life cycles and laws of software evolution any program is a model of a model within a theory of a model of an abstraction of some portion of the world or some universe of discourse I love this there it is and the middle of this academic paper it's just oh he must have had fun with that sentence you know and this is also this is also now your response when you're when your relatives ask you things so what exactly is it that you do and now I'm not fixing your computer you know it's but this words abstraction is an instrument it's an interesting one Dijkstra in the ironically named humble programmer I say ironically named because as somebody once observe the the unit of the ego is measured in Nano Dykstra's which gives you a sense of the calibration the purpose of abstraction is not to be vague this is really important because sometimes when people use the word abstract they think you mean kind of fluffy and the danger is in some organizations well Oh software architects gonna come over here and talk you know they're gonna abstract and it's like no no no no the purpose you can get it rotten there's good abstraction and poor abstraction but create a new semantic level in which one can be absolutely precise and this is quite important because what what the term abstraction means we use it all over the place and abstract abstraction abstracting but we don't often rest on what it actually means whenever I ask people what what is abstraction and I run a number of workshops and courses so this is a question that comes up quite a lot and I have a few answers from people and people normally talk about the purpose of it that's not what it is or rather it's part of what it is but it's not all of what it is people tell you about the good stuff but actually without the good stuff all the bad stuff abstraction is simply the removal of stuff yes it's from the Latin extra herring to draw off quite literally draw off water it is the removal and that makes a lot more sense when you look when you marry it with this you are trying to find you could try to remove the stuff to find something you can be absolutely precise back get rid of the noise find the meaning now we have a bit of a problem with meaning though and that's not we as developers that's we as human beings and of course I need to make the standard observation human beings developers developers are human beings I know discoveries through the 21st century still exciting you know event horizon telescope gravitational waves develop as a human beings bang that's your three so there is this idea that we we struggle with this and we end up with conversations you've undoubtedly heard this or use this in a discussion and it could be on absolutely anything it could have been on code it could have been on politics where somebody at some point yourself included I'm sure I've used this one oh that's just semantics it's just it's just meaning oh well that's okay then because obviously that solves it I mean what else is there when we're talking about this what exactly is it that you think you do particularly when we are talking about this stuff software that really is only an understanding of meaning it's it's it's so soft you know it's bits it's called soft or well you know I mean the other word for his uncle where but that doesn't quite roll off the tongue the same way so he's the point is when you are creating a software system you're creating a system of meaning and this applies both within the code and without the code within the code your constructs your choices they are to do with meaning they are to do with the way that you are trying to impose some meaning on an utterly arbitrary set of potentially arbitrary set of decisions from the outside the software is given meaning by the way that people use it with respect to themselves their businesses and so on and it has meaning that is far deeper than you can anticipate it turns out that we're not very good at influencing that but the bit that we can't influence directly is the code now when we talk about code there's a little it's come a little um narrowing that occurs the narrowing that occurs is when you talk to people about code then whatever is the top of their current languages list is what they consider to be code so if you talk to a C++ developer you see it's even their C++ developer honestly you're a C++ developer stop that's not career advice it's the point is why are you not also a Python developer in an HTML developer and a config file develop in other words all of these all of these and the list keeps on going down these are all code they are all code there's not the thing that appears in the center of your IDE that you put on first on your CV that's not the only code if you take away all the other stuff that is coded forms you do not have a system okay so there's a notion that this is a really large set of stuff when I say code I mean all of that stuff not just the cheering complete stuff not just the thing in your favorite language and there's a little wordplay we can do which is turns out to be surprisingly useful because a lot of people have different ways of approaching what we mean by code what is the purpose code was the role of code the idea that it is there to instruct the machine is kind of sweet and only out of date by you know a few decades what you're actually doing is you're codifying knowledge and this explains far more about software about on the most of the other ways that people talk about this it is codified knowledge you are trying to communicate instruct you're trying to structure communicate organize this is what we mean and this is how it's going to work all I'm doing is I'm codifying which of the problem domain I'm codifying knowledge of the solution domain the technical solutions I'm bringing together a system of knowledge okay this is the library's I'm using this is my knowledge of the language this is how I work with the tools and the people around me this is what I know about the existing system it's it's a marriage of knowledge now this kind of disturbs a few people because what they realize and they say wait a minute you're saying that that steaming pile of legacy is our codified knowledge yes and we go oh wow we're a mess it's just like mentally it's yeah human beings can hold multiple contradictory statements simultaneous it's Susan famously in their head and this is a problem because what you find this also tells you about the quality of a system if I go into a system and I'm confronted well here's something that we thought about last week this is what we collectively decided here's something that somebody else thought about six months ago that curiously seems to be in contradiction with what we've decided last week and then there's something from somebody I've never met from about six years ago that it's it in other words what you got is this mishmash of knowledge again this is very this is very human okay yeah you know you walk out of this room and there are people out there you have some really weird beliefs you know let's clarify a few things yes the earth is getting warmer yes it's our fault yes carbon dioxide etc etc science oh the earth is not flat by the way you know this kind of stuff it turns out that out there there is a we have the full smear of human belief that you've got the leading edge and then you've got this kind of medieval edge lurking at the back and all points in between in this sense our systems are nothing more than a mirror of the human race except that we do need to care a little more about them they are design systems they don't have to be quite that messy we have a number of choices so this is codified knowledge you can actually think of a software system as being an executable Wikipedia it's a collaborative exercise we're going to bring together all of these things this whole idea of instructing the Machine give up okay if you wanted to instruct the Machine I refer you to let me think my talk last night my lightning saw last night where I quoted Andrew Couric that if you brought no compromise in programming languages you I need to go in lambda calculus or machine code and the point is if you want to program the Machine get down there and I'm talking firmware not that fluffy high-level assembler stuff okay you gotta get you've got to get in there so you have a choice here you have a number of choices this is overwhelming this tells us about our paradigms our paradigms our systems of codification now what this means is that the main bottleneck and the main axis of software development is defined as a process of knowledge acquisition you are acquiring knowledge sometimes it's the technical stuff sometimes it's about the people around you the organization the requirements what do we mean when we say the requirements what is this system so knowledge acquisition it's pretty good this is this is how we kind of characterize it so if you're looking for what does the software development process look like then what's the knowledge acquisition process looked like and by the way again these are useful phrases feel free to include them in any presentation when you're when you're trying to speak to the higher-ups when people say so tell us about your development process ah we're structuring our development process around a synergistic leveraging of knowledge acquisition outstanding excellent you actually what we're doing is we're learning learning sounds so much more simple but learning is cumulative it's revisionist in other words it's incremental its iterative not necessarily over fixed intervals but there is this idea that as you learn things you revise your previous views your previous understanding it is also cumulative sometimes people get the feeling that they know less after developing for a while and then you know I say no your knowledge always increases it's just your appreciation of what you don't know increases okay and there is this point obviously that there's the here's all the things that I know here's all the things that I believe there are to know there is a peak moment there where the to touch is called adolescence and then after that point we end up with the inflationary phase where your realization although what you know keeps increasing your realization of what you don't know expands faster which actually needs some interesting challenges when it comes to communication and the notion of an event horizon of the universe but I'll leave that for another talk what we're talking about here then is how do I get knowledge around how I get this stuff around it's communication there's many forms of communication when we normally talk about communication there is this idea of face to face that's part of it but we're gonna see that there's a little bit more to it than that andshe conveying these ideas it can be quite challenging it also means that we have this rather interesting case that most software development unlike writing saying I talked about writing earlier on is done in teams it is done across multiple people which is why the whole communication thing turns out to be quite important because it is a collaborative exercise of group knowledge and knowledge acquisition it turns out that you if you end up with a team where each person knows stuff but you haven't collaborated then that's actually not really a team you have a problem of group knowledge your group knowledge is actually surprisingly small your collective knowledge is surprisingly small in that sense your individual knowledge may be high but it is distinct and disconnected it also turns out that getting a bunch of people together to work on something is well it involves humans and they're messy and they don't always agree on stuff and social negotiation it turns out that most of most of the debates that people have whether we are talking about brace alignment and spaces and tabs you know through the great religious issues of our time these are social negotiation when we talk about coding conventions when we talk about architectural guidelines these are social negotiation they are not about correctness they are about social negotiation because it turns out there are many things that satisfy the same ultimate desires and we may have preferences for one but that's not the same you try actually negotiate this now this gives us a really interesting insight again as tautoko bases and the structuring of a codebase it becomes a model of participation and reminder that code base is also the test code the scripts etcetera etc it's a model of participation what you're doing with a large system is you're saying this is how it is built and how you are invited or you know told to get lost in terms of the structure of it you know this is another way of saying software architecture but it turns out software architecture is a way of organizing how people communicate and circulate a building is not simply if we're gonna use the metaphor we should understand it an architecture is not simply a structure it is a creation of how people flow and how people interact within a space so before dismissing metaphors it always helps to understand them I found that most people don't understand what building architecture is and that doesn't surprise me it's not the kind of thing we normally spend our time worrying about is us we normally flow through it but this idea that we have a number of choices is really important software architecture is a matter of design now we're gonna talk a little bit about signs later as this word is presented design it looks like we're trying to remove signs and symbolism well actually it comes from the latin designate means to designate you try to designate something you try to create something so this is what this is this is what this means and we this leads us to the interesting question how does one do this stuff and synthesis which means put things together is most often correlated with the idea of design but there's another bit analysis which is the taking apart now what is the sequencing for this this is kind of an interesting one because people have struggled they say well you need to analyze something and then you can synthesize something and then they kind of reach a full stop they've run out of sentence and it's just like no no that's not how this works you kind of do that it kind of turns out you need to be going between the two now there's some really interesting observations and accidental observations we can make about things so a number of years ago I I did I used to do tuition and I I i told people doing computing at school computing at university the undergraduate degrees master's degrees some really interesting people you get to meet but one of one of the student moments that i remember vividly was a student trying to understand why she got such a low mark in an essay that was on development process and and it was to describe the kind of sequential life cycle the waterful life cycle and what she had written as she said right first of all what we do is you implement the system then you analyze what went wrong and then you design it so it's going to do it right and I said there is such truth in this such truth but that is not what the that's not what the person who asked the question was after I you know you have actually hit upon something very deep and profound but that's not what's going on here so if you want to do this stuff you need to kind of look at something else if we if we understand that a system systems built by people that are constantly changed there they start resembling aspects of the people the social structure and so on but we should look to understand if you want to understand the relationship between synthesis and analysis then perhaps let's look at the nature of life in the structure of life systole diastole this is the contraction of the muscles in your heart to push blood out and diastole is your heart expands the counties expand to draw blood in this is the stuff of life and this is really quite important because it helps a little bit more about the nature of learning learning is not a simple linear process there is this kind of notion of revisit re contemplate be shown a different point of view all of these things and the knowledge changes with time and Hemingway observed that the only kind of writing is rewriting and there was a great deal of truth to that and this idea that so it was kind of shocking that refactoring is a as a knowledge practice only came really kind of hit the radar about 20 years ago Martin Fowler's book first edition of refactoring was published in 1999 the original research was around ten years before though so there's this idea that we were a little bit slow a bit late to the game now I have a I have this interest that's the same writing and I'm fascinated by different styles of writing and I have no desire to do any screenwriting this is this book by Robert key story and he talks about screenwriting there's a little formulaic in a couple of places but there some really deep stuff really good stuff in here and he makes this observation which I thought was absolutely fascinating if a plot works out exactly as you first planned you're not working loosely enough to give room to your imagination and instincts I think this is really interesting because what he's saying is you kind of sometimes believe it's a very tight and formal about stuff and we we use our metaphors poorly we talk about people as if they were resources and we talk about the idea of creating software as if it were manufacturing and we talk about trying you know cold words like productivity I have no idea what that means for a human being except when you break human-beings down into their constituent chemicals which some of you did last night I can see so that the point here is that I like this idea is that if you really want to understand something you should expect there's the idea of like you have a plan but the trick is planning it's it's a continuous thing have a plan and expect to know more expect a little bit of surprise okay expect to find something new that may be confounding or it may be absolutely brilliant but there's this idea that there's almost a disappointment what if what if everything did go to plan how disappointing you learn nothing you knew everything to start with which I mean maybe that's that maybe that massages your in just the right way but there's a question here so um but one of the things are quite like doing is picking up words language stuff like that I run a page on Facebook word Friday occasionally I put up on a Friday definitions so this is this wonderful term penser it's from the writing community and while people look at that handsome is he talking about Panthers eat or about tanks is he you know it's Sancho Panza no you know people what about it it's like a writer who writes by the seat of their pants okay yeah actually there's a wonderful quote from Louie Louie l'amour and his daughter when they asked him he's using a typewriter so for those of you who are perhaps a little younger typewriters like a computer connected to a printer but without the screen yeah is that okay fine oh yeah your streaming character so let's let's update the vocabulary a slight way you do a hardware stream okay let's just for there we go so he said yeah he's racing along and his daughter asks him why are you typing so fast I said well I want to find out what happens yeah and that's pantsing okay that's what app answer is this is in contrast to a plotter somebody who plots everything to the eighth degree now it's very easy to look at this is some kind of like binary think but it's not it's a spectra you know writers lie along the spectrum and in we even embrace opposing ends depending on the genre that they're in but the same is the same is true of almost any creative activity now this also brings us to the rather interesting question of meaning so you have this word pants the point is that this word means different things to different people in this room it has default meanings and assumptions okay so there's this notion of yeah this can lead to some exciting confusion transatlantic confusion at times I'm confessing to nothing but yeah you get other ones the Australian English they're very liberal with their yeah weather's great so bring your thongs or something okay you've been me yeah okay you're not I'm not admitting to anything but that's kind of fresh I'll bring my flip-flops instead what's the problem here from here's language language and the points we use the term language all over the place there are many different things that qualifies language there's programming language and we so comfortable it's got fixed meaning it's about fixed interpretation the semantics that we can define in various different ways but we do all of this through natural language and natural language is a bit messy so when we come to the hard stuff we go in at it with we use natural language to define these things only what's funny is whenever people use a formalism there's always associated natural language text people are in it so the point there is like I've done the maths so that you can feel comfortable that we're being formal and you know proper and all the rest of it but here's what it means in natural language so we have stuff like algorithm which is now a process or a set of rules to be followed in calculations or other problem-solving operations especially by computer and that's good it's worth contrasting this would say a procedure there is actually a subtle distinction between the main differences that procedure can halt or need not help the algorithm always halts and gives you the output in other words procedures don't have to terminate but algorithms do because an algorithm produces an output okay so that this is kind of a this is a kind of an important idea the word itself it's had a bit of a journey that's the modern English this is the middle english algorithm that came from the french algorithm which came from the latin algorithm as' which came from well this is the arabic the the native of core ism or the person of charisma this is the last name of the nickname of the author of the book on algebra and algebra is kind of an interesting work because we kind of almost encountered it in the terms of synthesis it's the putting together of things specifically algebra as often the setting of bones there's a lovely metaphor for algebra the setting of bones to mend the broken things the things that have come apart but again we have a meaning problem because and this guy he so the guys are average afar Mahabad burn with alcoholism and it's often written in Arabic except that he was actually from technically from Persia and technically from the part of Persian that we now called from Kazakhstan so we have this interesting thing when we try to use a modern concept which is that of nationality and nation-states and try and project it back in time again what is the meaning of that to say that somebody is from Kazakhstan but is persian that is also arabic is and it's an interesting one because that doesn't quite mesh together from our point of view we're trying to create an anchor it turns out that language and meaning move let's go back to you know this rather interestingly challenging word I'm gonna put a couple of angle brackets on the outside here now what is interesting is therefore an overview is just that okay I know what he's me if there's a few of you in the audience can like I have no idea why that's important and the rest of you I didn't even need to put the hash include at the end it's just like suddenly I've already just by moving a couple of symbols I've already put you somewhere else it turns out that these subtle cues are profoundly important this is how humans do stuff so I'm gonna pick on I'm gonna go into the algorithm header put on my safari hat and it's gonna have a look at good sort because honestly sort is you know sort and stack you can do the whole of computer science than that so what does it mean how we going to define this and it's aa great a bit that I can understand without the vagaries of language we shall use logic we shall be logical and positivist about this we shall reduce this with logic so one of the books I learned logic from people just don't use typefaces like that anymore you know they just you know I don't know if that's a good thing or a bad thing but it's very evocative of its era and so how we gonna actually define the nature of saw so here's a little paper let's go back to the 1960s an axiomatic basis of computer program turning halt and he gave us a couple of ideas one which is this very simple way of defining the meaning basically the semantics of QED a statement or part of a program or program in terms of two logical statements about the state of the program before and after and he says if the assertion P is true before initiation program Q then the assertion R would be true on its completion in other words that's a precondition and post-condition so this is kind of important these days we tend to write it this way it turns out that that syntax was compatible with Pascal's a commenting convention so you can quite happily put your statements in between and your curly brackets captured comments that were you know if you could put something formal in and that people would then promptly ignore because that's what people do with comments so let's have a go at trying to formalize sort in terms of preconditions and postconditions and so you know I'm gonna do the C++ standard library saw I'm gonna leave the whole question of the type and the concepts of iterator concepts are just predicates on types types of just predicates on values so it's all predicates all the way down and types are about type correctness is about binding time perhaps you bind perhaps you demonstrate the correctness of a type system or the in correctness at compile time or you leave that until run time or some point beyond that that's a separate issue very interesting it's part of the contract of something where you want to use the term contract it's an agreement it just happens to be an enforcement that occurs at a different point the bit I'm interested in is really what can we say about sort now that's very tempting ok postcondition most people go in and they say write him we've got a range begin to end and importantly notice there's also subtle conventions meaning of conventions so a begin end that the end iterator is not the end it's one of those those ridiculous things that you end up saying oh yes that thing that I said was that thing it's not that thing this is the end no it isn't it's past the end so but that's too much of a word so we'll just say begin it but just do not let C++ programmer help you park your car okay yeah yeah yeah back up you've got plenty of space bang yeah you can stop now No so the point here is that people in media tell sort I know the meaning of sort it means the resulting range thousand that are sorted and convenien ufff we have we have a function in standard library is sorted brilliant so we can say that now the problem is you've just got distracted by the word sort and is sorted and all the rest of it it turns out there may be a little bit more to it than that turns out there's an ant and the values from the resulting range are a permutation of the original values oh yeah that's what I meant yeah but you didn't say it it turns out that in this case we didn't say it and it didn't mean anything and this is actually relatively common thing and in a formal methods workshop that I attended many years ago I think pretty much everybody in the class got this wrong everybody there because you're so focused on how do i express the ordering you know using mathematical log logic rather than using English words and you're so focused you achieve it it's just like yes and then it's just like yeah but are they are they're the original values oh damn just one thing one thing and this is important because sometimes when people shove this into tests they're in for a bit of a surprise okay and I do know of a case where somebody quite happily asserted this for their sorting algorithm that they had that they had developed they quite happily assert of this and the test passed magnificent sadly however it turns out that what they had done carefully and with many loops in a quasi optimal way was written the first value of the array over the rest turns out that is a sorted sequence it is sorted in non descending order it is it turns out that actually popping the first element over everything else could have been done far more easily if that is what they wanted to achieve and this is the oh that's what I meant and this is where we this is where we find that the nature of this stuff they have a simple revision of simple iteration now we come to the vexed question of what is there a precondition now this one came out and beyonds talked yesterday so I thought you know let's just go back to the original paper which I've noticed that many people who have been involved in the C++ contract stuff or indeed any of the contract for exact they don't read their literature really helps to actually read the original sources so what did tell you all say if there are no preconditions imposed we write true before in other words precondition true it's all good so let us do that yeah somehow that doesn't seem to quite cut it though it's when we put that in there we realized that that's not really the whole truth is it it turns out that's a bit more begin and end a valid iterators oh yeah that helps and from the same range and begin does not follow and what you mean like that [Applause] it's like Marshall I'll pay you afterwards now is that here's an interesting one is is that a decidable proposition no no turns out this is not I refer you to my talk on where we solve the halting problem the other night so that this is not a with or other within the system of stirred sort this is not decidable it does actually decide well outside the systems to sort that takes us into girdle space and all kinds of exciting stuff however it's too early in the morning for that this is not decidable and therefore interesting enough if we were to attempt to decide this within the context of sort we would discover that we no longer had an algorithm this is a procedure and all kinds of other stuff you know it's just like yeah so fine this is all good it's also a comment so therefore it doesn't exist people don't read it you know it's it's just not there so so we might try and reformulate this in C++ as adopted for C plus 20 there you go that's it that's all you can say so it's one of those reasons I get I fail to get very excited when people apply logic to stuff but when they start doing contract stuff again you need to read the history and discover quite as usefully as you hoped that's that's all we get to say which is a bit disappointing but that's actually not the main gripe so if we've already discovered that logic is not going to fully cut it and logic mediated through mediated through the entanglement and noise of a programming language gets really messy unless you had everything in there from the start we are not going to solve this problem but we have another problem how do i implement this because it turns out what remind me what header was this in algorithm what is an algorithm its precise specification of steps the one thing that most of the things inside the a C++ algorithms header are not is algorithms this is one of those yeah it's the algorithm header but it doesn't really contain algorithms because an algorithm quicksort is an algorithm exchange sort is an algorithm bubble sort is an algorithm I think that's okay oh he said bubbles well yeah no honest the exchange still has the same prob nerds all of these are algorithms the one thing stood saw is not is an algorithm categorically it is not an algorithm hmm so could I implement it like this there are two reasons I can't the one reason I'm interested in is to do with what other guarantees are there when we say sort what do we mean by sort and people have a kind of it when they read this in a certain context they have an expectation and so if I set this one up and C++ 11 I've got some values there three one four one five nine I've got a expected result set so I'm not gonna fall into the assorted trap one more three four five nine and then I'm gonna sort it and then I'm gonna say I'm going to set the values equal sorted and this is all good but we have another expectation that is not stated here and that we're going to say that this is an algorithm then we're gonna be talking about the performance it's not really an element so this is what this is where we start talking about so if I give you something that happens to have Q sort has no guarantees on it so if I give you something that's like this bubble sort or exchange sort you get old that's not what I meant that's not what I expected this is not okay show me how you're gonna do that yeah this is like oh okay this is a little bit we've got a little bit of meaning that we just have to make a promise but it turns out this also gets us into the discussion of what do we mean by certain things people often say when you talk about so as I said you can actually see through most things in computer science and computing you can see through the lens of standards saw or rather any sort and stacks because it turns out this is a common problem you ask somebody what are you performance requirements let's say oh we don't have any performance requirements yeah yeah I like that you do you just don't know it so what I'm going to offer you here is I can offer you permutation sort if you're not sure how to implement permutations thought here is a very simple implementation permutation sort basically goes through takes the arrangement of values and just goes through all the possible permutations until it runs out and in that case it is sorted what is the complexity of this if you if you offer this to people they will discover they have performance requirements okay this in other words you did not know it until it happened and this is really important because what we're dealing with here is is the dark matter the dark matter of software development or the dark matter of creation of design things which is assumption we have assumptions but the curious thing about assumptions they're very strange little beasts you do not know you have an assumption until it is contradicted at that moment you go oh I had assumed that at that moment you have discovered you have an assumption now this is quite interesting because it means that the best you can ever do is you can catalog assumption so far you can recognize from your own experience and collectively within a group we're going to make this number of assumptions here because you've done this before you know about assumptions okay but that's the ones you are aware of and the point is that set will get larger with time so occasionally you know as I remember seeing this in past somebody that's absolutely brilliant it's just like project list of project assumptions and it's just oh that's so sweet it's just like no the best you've got is list of known project assumptions so far to be continued should be at the bottom of the page okay it is an open thing it's not that you can't discover assumptions it's just that it's not closed at the point you thought it was closed so you got that and if you wanna make things a little bit worse there's bogo sort you know random shuffle until it's sorted which is complexity energy but again there's and so therefore we may say okay look really that kind of complaints this is - this is bad okay that's not what I want I need something that you know is n log N or better is there something better well yeah it turns out there is and this was an algorithm to come out of this is an algorithm to kind of for possibly the only good thing to ever come out of 4chan we don't know who did it was anonymous they wrote some pretty ropey script I've tidied it up a bit so it's actually execute when born she'll not just bash it sleep sort has some very interesting properties so we can run it and go ahead three one four one five nine one three four five gotta wait for a little bit and then we get yeah that's a really cool algorithm it's got oh and complexity oh but that's not what I meant it turns out that you actually meant something else as well when you said that you want to better performance you know as you've got drawn into the conversation when people when people talk they narrow in many cases the subject so I just showed you things that were Oh her if ik and so therefore you start fixating on that and that becomes the focus so therefore you focus on that once completely missing this over here this is the interesting property of humans we have a concept called focus and focus focus is a very useful thing and we talked a lot about attention management but focus by definition implies that something is not being focused on and we're very poor at recognizing that if I'm focusing on this I'm not focusing on that we focus on both well that's not focus is it focus on everything it's just like no I get that when I take my contact lenses out everything is equally blurry I have reduced is the great leveler he said no obviously nothing is complete with ax keys hey xkcd I feel there's been struggling with this problem for years struggle no more I'm here to solve it without there there and six months later Wow spawn is really hard you don't say we told you it was hard yeah but now that I've tried we know it's hard so what you see is we're talking here a little bit about what is knowable what is not know ability and decidability no ability things that we know things that we do not know this is this is difficult so this is wrong a nice piece by Keith Braithwaite in 97 things every programmer should know read the humanities and we kind of and he talks about he he refers to victim Stein no Victor Steiner basically was to people there was an early Wiccan Steiner later fiction Steinle they kind of disagreed with themselves and so when I said earlier on that you know you know software development normally takes you know multiple people sometimes those multiple people may be used and you can disagree with yourself in the past there's future me which is undoubtedly gonna disagree with past me and I'm trying on the arbiter between the two of my steady guys okay and Vick and Stein was all it's all logic it's all you know we can reduce everything to stuff later Wittgenstein was not quite so convinced by this the biggest light makes a very good case that any language we use to speak to one another is not and cannot be a serialization format for getting a thought or idea or picture out of one person's head and into another's which is a challenge because when you're writing code what you're actually trying to do is take a mental model here's how I conceived of this this is this informs my vocabulary this informs my choices this informs everything about this code and I'm gonna give you that idea this is how I would like you to view this not sit nearly as a set of symbols in curly brackets and bits and pieces there is meaning to this that goes deep I'm gonna offer your model but our bandwidth is severely limited victus tie also shows that our ability to understand one another at all does not arise from shared definitions we spend a lot of time talking about definitions and that certainly has value but we need to understand it has a boundary it has a limit it arises from a shared experience from a form of life mmm not the first time we mentioned that this may be one reason that programs who are steeped in their problem domain tend to do better than those who stand apart from it often we have this idea of software developers being observers of something rather than being in the something and this gives you a very different kind of view of the world the view from the inside versus a view from the outside they not different mind the gap no there's also something else when it comes to meeting we may say well okay let us go to the problem to me let us try and immerse ourselves let us have conversations and this is good but again those have limitations everything that we do will have limitations okay that's and and so we need to recognize that and be kind of at peace with it you know it's okay I'm gonna use all of these things that have limitations to build something okay rather than rely on any one of them I'm gonna go through all of them so Nate Jackson it's one of those one of those pieces with a great title your customer to your customers do not mean what they say I said I've never met a customer there wasn't all too happy to tell me about what they wanted usually in great detail the problem is that customers don't always tell you the whole truth how truth is that truth again they generally don't lie yeah this is not the issue when people don't tell you the truth it's in in in the world of software it is not because they are lying it's that they use they use their context until that context turns out to be quite important they use their terminology there is huge amounts of details they abstract it turns out we're not the only people who do abstraction they leave out loads of stuff because they don't think it necessary you understand it or rather it's so ingrained in their thinking they don't even see it okay and they make assumptions which we've already learnt about this is compounded by the fact that many customers don't actually know what they want in the first place a lot of people will complain about this our customers always the problem again I have bad news for you it turns out that customers are a subset of that group that is called humans this is a general statement okay you can find this almost any any discipline a friend of mine became a into the gap year and here he became a an estate agent but for part of that and he said honestly people have no idea what they want with her buying a house you know you can get a couple and they can have apparently had a conversation and they come in and they just say oh that looks nice it's completely outside what they SPECT either in terms of price or features or location they have no idea we haven't even hit the hard stuff yeah so this is a non-trivial thing so again it goes back to this idea that learning is part of this you are on a you are on a journey to use the metaphor okay you the whole point is it's it's an approach we've done it's not the answer is here it is how we are working towards it it is a process discrete so you be nice but okay I turned that I turned out I turned up late to the lightning talks yesterday off by one error so you know that's that's forgiven but I have a solution flat by the way so let's go back to 1968 we've done 1969 and this whole idea people say oh well yeah but the problem is that software engineering told me that I need to plan everything in advance I gotta learn everything in advance it's like yeah again I wish people would go back and read the sources we can't read everything this is true so this is why we have communities we can rely on the knowledge that other people other people require we should use our collective intelligence so this is a 1968 a couple of months before Felix Patrick Rainey did wonderful will likely talk on Doug Engelbart's mother of all demos which was a couple of months later 1968 was a hell of a year this is one of the quotes one of many many quotes inside these software engineering proceedings the design process is an iterative one you can't blame software engineering you can blame this understanding the software engine but the original conference that was named software engineering was not the place to blame they spent a lot of time talking about the fact you can't do this stuff by trying to know everything upfront that ain't gonna work so they're not the people to blame one of the other interesting things is they they look at they there's a number of things that are referred to and one of them is this book by Christopher Alexander you can't see a theme to books that were published awhile ago if they're important they're gonna be in black and they gonna use some slightly not quite right font but it's okay you can get away with it here a notes on the synthesis of form is one of those book titles that clearly is not a book title it was used allowed because notes on the synthesis just sketch so sometimes people just call it notes or synthesis but notes notes mostly and this is Christopher Alexander who came up with design patents in the 1970s but it turns out he this is published in 1964 very influential work in the 60s and I came across it in the 90s and I don't think I appreciated how influential II was because reading the software engineering proceedings it turns out referred to a couple of times in there what people are looking at is they're saying let us understand how he's talked about this if he's not just talking about building architecture he's talking about how we create things how we design things and what is fascinating here is that we can see this in relation to systems of meaning we made their full picture the process of form making it's the action of a series of subsystems all interlinked yes officially free of one another to adjust independently in a feasible amount of time this is the attraction from the software engineering conference was he's talking about subsystems here he's talked about modularity he's talked about large systems how do we create large systems we break them into parts and loosen the coupling between them okay and that's quite an interesting one when you look at it in fact quite literally the word analysis given that we've got we're synthesis there means to loosen and a loser in in Greek I believe yes it is Greek that's what it means is to loosen but also it it implies it works because the cycles of correction re correction there you go refactoring learning which occurred during adaptation are restricted to one subsystem at a time so this is kind of this is hold stuff and it's you know formally we can sort of define it and draw a bubble diagur's people people like doing bubbles and lines back then these days we use kind of like squares and rectangles you know the shapes have changed over the decades the midpoint was around the 1980s I noticed diagrams use what are called bub tangles or round tangles they are rectangles with rounded edges as if you look at notations through the ages and yes I am boring enough to have done that there is there is there is a kind of an interesting evolution there but this is if don't just think about this as code in a modular sense in a formal sense but we think about it as systems of meaning how do you create a system of meaning that a dot allows learning well you kind of loosen things you're allowed to adjust with itself it can at times contradict itself but be careful how care but the point is you need you do need to care about coupling and coupling coupling on incidental and accidental details I always imagined that this was the case first Roman programmer months seven eight nine ten don't have names what should we call them second Roman programmer egging on the first one I'll just number them isn't that bad practice to hard code numbers hearts fine they'll never change right September October November December it is that if you've ever wondered where those nuts got their name from we heart we are we are not the only people to lack imagination and do things horribly wrong it's a case of like yeah we'll call them seven eight nine ten we just had no other names for them so yeah and then we do a kind of a shift of two so we have a problem here the problem is what a meeting trying to get to meaning so how do we kind of start addressing it so in impulsive five one of the things we looked at was a relationship we talked a bit about meaning and there was a little part that I have quite a bit of fun writing semiotic s-- is it's kind of like this part of the study of meaning or symbols related to meaning defines a sign as a two part whole so we're going to design perhaps we should understand signs two part whole a diet comprising a signifier and the signified the signifier is the expression of a sign it's maternal AIDS material aspect the signified is the corresponding mental concept and gender by the signifier okay we have example yes we do dinner so dinner is an interesting one because it turns out that two people can be using this word and actually means something slightly different as I discovered with ex-girlfriend thirty years ago yes I said it's almost a thirty years to to the day not quite that she'd invited me round for dinner on Sunday she had some friends coming around it's just like yeah that's cool so I rocked up at 6 o'clock thinking I was early there's nobody there and she's in a reef foul mood and I can't quite work out why and then eventually I asked where are your friends and she said well they came about five or six hours ago we are we waited for you we are they left oh okay Sunday dinner is different too right okay Sunday dinner is equivalent to Sunday lunch if you're from certain parts of England family I'm originally from London and so quite sudden and she is she's from the north and there is a line running down the middle of the country that defines certain vocabulary distinctions and this one is I would say it was a relationship breaker but a couple months later we work together so you know we have these little things we are using the same signifier and yeah it turns out we have a different conversation yeah the semantics are quite quite different here's what here's what half - now for a number of you in this year have to yeah okay but there's a recent alum review going like that because you're speaking one of the other generic languages maybe maybe maybe he's Dutch maybe it's Danish maybe it's Norwegian maybe it's Swedish maybe it's Joe and all of these it's half before not half after it turns out that you know the simple translation does not quite work you can be off by an hour you know it's so this turns out to be relatively critical what is interesting is the influence of context because nobody was sitting there thinking that all that because of the context we're in now you may well have been awake at this point but that's not the context that we're in now we're in the context of thinking I'm at the conference and that has an afternoon and see so we have a default set of stuff we bring to every conversation and some of it can be quite subtle now of course you use certain sets of symbols and you know if you happen to be American and I say half to you go one so yeah arithmetic but you know again context of evaluation turns out to have a huge huge distinction but you know honestly to those speaking US English I'm just gonna clarify quarter of four is one so so we'd have these words and how they drift and how one community can use them in a particular way and not realize its implications so a term that I find is used extensively and we you have Kent back to blame for this he used the term velocity originally a lot of people think this is a scrum term it's it's not scrum is like English it's it's kind of borrowed from everywhere or stole them from everywhere borrowed is such a gentle word no again these words have meaning stolen forever and so people often talk about develop a velocity and they talk about their team velocity and they measure their velocity Marie our strength unit sometimes and if people focused on velocity I think that would be a fine thing but they don't because what they're actually talking about is speed which turns out not to be the same it turns out that we were going to be very falling although in casual parlance velocity and speed may be interchangeable if we're going to be formal about this and we're going to try and define something I don't know if we're gonna talk about something I software development then perhaps we should care about the difference between velocity and speed because it turns out that it's a vector quantity which means it has direction direction matters and a lot of people are asked the obsessed this is the blind spots like right we need to be developing faster honestly you need to be going in the right direction the speed becomes a secondary issue I have experienced this when driving round the Ring Road system outside outside Brussels trying to get to Germany in in the era before I had the year before Google Maps and the I didn't have a sat-nav with me I used Microsoft autoroute if anybody remembers that and autoroute again assumptions these naive assumptions about how we view the world based on our our experience and so you know well done to those in Redmond who realized that there's more than one language in the world so that was good but it turns out that they had made an outstandingly erroneous assumption that there are only two languages they needed to worry about when dealing with Auto rich in other words the language of deployment which in my case is going to be English UK and then there is the language of the target okay so if I'm driving in Germany that I'm expecting the German names so I can recognize them okay it's no good to see me yeah Munich yeah but when should now I need to see that so I can just be sure about that that's fine the problem is what is the language for Belgium yeah this is the stuff of wars and all the rest of it you know so the point here is that there is the idea if we have one place for another language that's not how the world works and we and so therefore you have this and so therefore I am busy driving round the Ring Road in the Flemish part in Flanders we have a bunch of names that are printed assuming that French is the default language and they don't use they don't accept in the Brussels region they don't use two languages and so I'm guessing half the place names because they're French but actually the place names on signs are not in French in Dutch and I'm guessing and eventually I realize I'm going the wrong way how do I realize I'm going the wrong way because the Sun is in exactly the wrong part of the sky it turns out I was going at speed in the wrong direction the right direction matters and people are obsessed with this and of course we there is a relationship between these things and then there's a subtle relationship and it turns out people say well you know there's this and you know it's it's you know it's with respect to time and do stuff like that and go that looks a bit technical and complex though it does help us and then people say well let's just keep it simple let's just imagine we're moving at constant speed they do it now this matters to us in software because s what has asked me T is time s means stuff you just stop me if I'm getting too technical for you ok s means stuff it's the amount of stuff we're getting per time and maybe V is value ok and and this is a very simplistic view of of how things are but again what we've done is we've accidentally reduced something is quite complex how are we learning how are we able what what is it that we are doing right what is it that we need to make right in how we're going to get better at this the codification Lodge how we as a team all of these questions have just been reduced to some measure of stuff there's a lot that is not being said now of course turns out that you can say an awful lot with absence of something and Kate Gregory's talk the other day on what do we mean when we say nothing is it's quite important there's a self referentiality sometimes and that indeed nothingness turns out to be important but sometimes it's knowing what does it mean is sometimes has meaning so this is a blank screen but we now sometimes get the problem of when we try to define things it changes the very thing we're trying to define so if I label this is blank it is no longer blank yeah and then we look at the origin of the word it's from the French well which is this so so I love the fact that blank screens are normally black in fact that was an interesting one how to unnerve the the AV people is I had you know we'd spent a bit of time at the beginning of the talk trying to set things up and make sure that everything was coming through what's my first screen it's black so it's just that I thought we fixed that problems that we're good so I can have a blank red screen now it turns out the red is an interesting color because it has meaning most colors have some kind of Associated meaning but it's a subtle meaning and when people say oh we define things through words or we define things through symbols that's not entirely true turns out there's a whole range of stuff it turns a color has meaning we teach kids you know red means stop green means go that's what they mean we actually didn't use those words and we can subvert meaning as well the red man do not cross him but sign that's one of the things in Bristol we do we do Street up and Bristol Bristol is great for street art but it was also great for subversion of science and you know the red man has meaning okay you see that and apparently apparently they don't understand this in the US which is why you go into the US and every every street sign is an essay every street sign you said I've never read so much it's like how do you make sure that people do not exceed the speed limit you put loads of signage up that's written in words and so you have to slow down to readers just that that's that's quite clever if that's was the intention walk don't walk honestly read man works for me but don't cross him and we can we can subvert things signs so easily subverted death is coming at anytime on foot way notice how the addition of one word of one symbol changes the meaning it's a lot more exciting it makes walking way more exciting but this is the other thing is sometimes we pick up fragments of what we think are the correct requirements or the correct interpretation of a piece of code but we don't realize there's another piece of code there's another thought another assumption that actually contradicts it or throws it in a completely different light so look at with red it was green these are colors and words that have particular meanings but we now come to the problem of not only just misunderstanding people when we talk when we write code when we write anything whether it is an email when we're trying to communicate something all communication has its limitations and some of those are because we're starting from a different position but then we have the problem of like can that person actually know what it is that I am saying sometimes we hit a boundary a genuine boundary there so so last year you know year before in 2019 now last year before we went to this um outdoor art installation here in Bristol and we turned a corner and my wife said she chuckled and said can you see what that says what I said oh I see they I can see it's like discoloration yeah they've done this 90% of the people I teach 95% of the people looking at having a good chuckle and there's the rest of us who read green colorblind struggling with this but it's okay I'm in technology so I've got my phone out flipped it it's like yes this is a solvable problem okay but the point there is in order to do this in order to reach that meaning and this is important when we talked to people not just when we're talking about the customer divide but even within software we may make assumption we may not even see the thing that somebody is pointing out we may not perceive it until somebody makes a point of it at that point I can put effort into I can put work into this and to get a result out but I have to be made aware of these things we are often not aware of that which we cannot see and do not know then there are other things that just simply won't you know so as well as Ben car blind I'm also synthetic and since it's easy for me manifests itself in terms of numbers and this is a climb standard test and somebody who has number grapheme synesthesia will naturally pick apart the twos in the fives because they're actually slightly different colors that's how I remember room numbers when I go to hotels is they all they're all color coded which i think is brilliant and convenient it's also one of the reasons I often tone down syntax highlighting because it's wrong most of the time the in fact they in fact this standard what they chose the wrong colors for these it turns out that two is actually green and five is red and you're thinking how can that work yeah well that's in my head not in my eye so I'm good so but this point here is that can you make somebody see something that they are not actually wired to see then becomes very personal Kandinsky is believed to have been synthetic and this art has a very particular meaning which means absolutely nothing to me except that I like it but it doesn't mean something to me in the same way it meant something to him so we're now into the realm subjective experience we can move between things that are objective this is a whole spectrum and understanding the nature of knowledge is a very difficult one because some of it is accessible some of it is decidable but not all of it is now we can take stuff like this and default Association we use the word green green often means something very positive is to do with the environment and ecology and then we say well Green yes the colour of nature that's my black and white view of nature so so what we've got here is a tree and of course we are very familiar with tree structures in software although sometimes you know when I told my kids oh yeah in software you know you know in software we call that a tree structure folders and stuff like that but the trees always have the roots at the top the leaves have the leaves at the bottom when you start saying it to somebody who is not in software development arts staying there going like I sound like an idiot the kids are looking you're kidding right no no really it's a yeah it's like the roots that's just that yeah how do you guys run the planet you know this is not green but you know so you know so what's this yeah exactly see that only works for a certain subset of the population and I'm very happy that some of that subset is in here so what we're messing with here is the thing that is the Stroop effect and this problem that when we have channels that communicate a stream of factors is the idea of light I need you to say what the color is on the word and it turns out that here we have two channels of information in fact I think that's purple I've actually chosen the car not entirely sure about maybe I should just say it's great the funny thing is much green things turn out red for me so yeah anyways yes so obviously it's gray I remember teaching my kids colors and half the time I was actually asking questions and that is that's going dad okay you know it's just that it was one of those things of like actually I'm supposed to be teaching you but okay so there's an interesting point here it's also told that this is also teaches us about how we design systems of meaning and systems of interaction it's very simple concept of a system of interaction a toilet cubicle in a public place now this is kind of interesting because it turns out that one of the most dysfunctional ways of doing it this is actually one of those cases where words help you know words actually work in this context if you say engaged or vacant that works but you may say well yes but what if I don't speak the language that's fine you only need to do one experiment yeah if you choose a character central language that I do not know I can establish the meaning very very simply with one test ah that set of symbols that set of squiggles means it's engaged if I see another set of squiggles and I'm going to make an assumption here that it's two-state logic then it's the other one in other words this is discoverable and this is also interesting when we talk about systems of meaning how discoverable is it on the other hand one of the dysfunctional one so dark and like a dark and white that also works but red and green I don't know how those companies are still in business but they are still in business producing red and green syphilis going out I have no idea there's no experiment that I can perform once to find this out or well I can do it once per door that's not very effective but what is interesting here is when we have multiple channels so those actually on the front of the scrum book and the the goal here is to actually say what the color is but you've got an interference if you read English there is interference if you don't read English there is not interference so if somebody presents this to me in the language that I have no idea about then actually I can read off the colors quite easily so this is an interesting thing because we've been talking about knowledge and talking about acquiring knowledge and now I'm saying actually sometimes you can have multiple sources of knowledge and they will interfere you now know yeah you know too much this is so pat yourself on the back for knowing too much but this is an important point the meaning is our ability to ascertain the meeting has been confounded so let me stop at the scrum thing up here because sometimes there's another thing that people have adopted in scrum they talked about they talked about velocity there's another term that I keep seeing thrown around which is that of value and there's a lot of hidden meanings and possibilities in here and so people sort of a value you should to work on things that have value to whom well that's kind of an interesting one to whom does it have value yeah because the things I value may not be the things that my colleagues value the things that I value may not be the things that the customer values oh yeah right let me set that Kevlar in business value okay so how do we feel about destroying the and stuff like that you know that that's a different kind of value what about my personal growth and learning in an organization that's a different kind of value we're saying something here whose business oh yeah but the question is what are we saying we say we've got to prioritize my business value however there is a small problem people this has become a mantra it's a standard mantra what we're gonna do we have all these requirements we're gonna prioritize them by business value it sounds like we mean it sounds like we mean business it sounds like we know what we're saying we don't it turns out that prioritizing by business value is impossible it is not possible it is not this is well actually it is you need one of these and this is how I propose to go back and fix time yesterday and turn up in time for my talk well I suspect that might be in a parallel universe so for the rest of you you you are you are fated to walk through to go through time and approximately one second per second and that is the only way to reach the future because this is a statement about the future it's not presented as a statement about the future but it is there are things here that are not said it is a hypothetical business value how can you know the business value of something by having delivered it and got value for your business yeah but that's a future thing how are you going to do this without monads okay no how's this going to work and without a time which time machine no doubt okay that's next year's lightning talk how do we do this you can't know the value now you may be with somebody in a business who's convinced that they know the value that's great but conviction and confidence have nothing to do with being right and wrong I refer you to politics okay so the point there is that I something may be utterly utterly convinced but you you need to approach this with a certain amount of humility because the what we're actually talking about is estimates but people if the minute you put that word in there it changes the whole meaning of the thing you can only prioritize by estimated business value you cannot prioritize by business value you might as well prioritizing by unicorns and it'll be way more fun okay you can only prioritize by estimated business value an estimate is a probability distribution which means it distributes okay it's got lumps and bits and breaths and stuff like that it turns out that you can't order things by this shape okay it has no natural that you can impose an ordering but the point is that you may have something that well maybe it brings in a little bit maybe it brings in a lot but you know it could go either way or whereas this one's quite confident now which one is above the other well it isn't so you have to use another criteria I think criterion to get the answer it's always worth remember this is not just a software thing you know it's am so 2009 one of the highest-grossing films of all time was released Avatar James Cameron's Avatar tall blue aliens and human comes along and kind of saved the world type thing okay 2012 John Carter tall not quite blue aliens human comes along saith well that might have over-reduced both of those plots there how much did they cost to make both of them cost approximately cost of a billion US dollars how much did they gross in terms of revenue well John Carter kind of got about 1/10 of the revenue so yeah avatar got a lot John Carter not so much now you don't think the what do you think the studio executives are sitting they go like yeah this is gonna be completely flop yeah let's back it no they were he an estimate based on tall blue aliens well off can't maybe they should made them blue that maybe that would have worked put the round alpha centaury instead of Mars but the point here is the best you've got is estimate of business value it changes the language and it changes the meaning fundamentally it turns it from something linear just think far more complex it's not a linearizable thing so when we do these words we need to understand the consequences yes the planner guy destroyer for a beautiful moment in time we create a lot of value for shareholders so let's be careful of this word value in its naked form it's it has consequences but this does bring us to something else and the point here a lot of it is context it's the shaping of context and how things are certain that we may be confident of the meaning of something and conveyed everything that we have understood but context determines it and returning to my laman he came up with a really interesting system or simply of classifying pieces of software s programs P programs e programs and an S program is one whose function is formally defined by a de Rivel from a specification you know obviously gave me a specification and I can pretty much tell you I can candidates for how we're gonna implement it and and how we're gonna test it okay I'm fairly confident so that's our friend sort it's also Bank it's also most banking software where we are dealing with banking in the sense of the banking that is governed by rules as in when I put money here from here then there is conservation of money okay there's a whole set of there is a conservation of money principle that operates here okay transference between accounts these are that all of that stuff is that s that is all s okay so there's a lot of stuff that we do that is reducible or is directly classified as s and that's kind of program this is great then we have slightly more interesting ones the P programs despite the fact the problem to be solved can be provided to find the acceptability of a solution is determined by the environment in which it is embedded so notion eventually here what we've got is acceptability I cannot establish the criteria upfront a priori or an even I cannot simply learn and say this is definitively it because it turns out it becomes a moving target now what is interesting is that this was done in a time before AI but it actually fits a lot of AI systems because it's doing something I don't know is that the right thing I have no idea let's just say it is okay we determine the acceptability I can derive the tests for this effectively but I cannot derive from first principles of test I have to define what I mean by this is okay and that's kind of interesting because we get to be on both sides we get to be on both sides of of the creation we're actually creating the acceptance criteria well some people say something like it should be okay yeah yeah performance should be adequate yeah that's we've had that one but this is an interesting one because acceptability we are dealing with potentially approximations and we all create there's a to systems of meaning interacting what do we mean by acceptance and what do mean how do we build the thing that gets slippery but no more slippery than II programs and again this is an interesting one because a lot of what we now do creates these a systems programs that mechanize a human or societal activity to be precise the program has become a part of the world it models it is embedded in it now back in 1980 my layman picked a an example it's quite obvious and visual easy to understand he picks an air traffic control system the output of the air traffic control system goes via human communicates who then communicates with the artifacts that are modeled within the air traffic control system the planes and we'll give them a course of action that communication then changes the ultimately the position of that plane which then is registered through the system so therefore it is now a part of the world now you used to have to contrive examples a little bit these days we don't have to social media does it for us and honestly it invents stuff as well alternative facts we've seen truths in this talk but this idea that a lot of what we do is now this the problem is that we think of a lot of things as being like this you know we think oh it's a tight little algorithm we understand how this is supposed to work and and and that's fine and I can test that and yeah this is one of my favorite examples of of this kind of thinking so 2011 yeah 2011 the making of a fly the genetics of animal design I use this slide once and there was actually somebody did a PhD in genetics in the audience they came up to me and said yeah that is a standard text that's so it's a good text apparently but you know I'm gonna go for the second-hand price of 35 US dollars rather than the buying you for 1.7 million dollars it good but it's not that good so we've got an interesting situation here so this is Amazon as marketplace rather than Amazon as a direct vendor and we see we've got two vendors here prof. math and board eBook but obviously if you're in for a 1.7 million why not go the whole hongdo 2.2 you know it's so so this is the thing this is this is what so this was the interesting analysis that was done over successive days these the only two players broth math and bawdy book once a day they update their prices and it turns out that they have got a fixed ratio so prof. math is employing a very simple very simple algorithm we find the lowest other price out there and we price ourselves below it we are going to be you know you can't beat us ninety-nine point eight percent of that other price okay we are always the cheapest in the market they have the book board ebook do not have the book what they're doing is they're saying oh you want this book that's fine you buy it from us and we sneak over there buy it and search you a twenty seven percent of so markup genius how can I test this yes each one of those systems is perfect within its own view it's closed system view and you put them together and it gets guessed at 24 million before somebody pulls the plug now this Amazon now has guards against this stuff I believe but the point here is how easy is this to create it is incredibly easy this is the nature of modern markets it's the nature of modern systems we can Laffer that as you may have noticed the pound has been experiencing some entertainment the last couple of years and you know the and oh yeah happy non brexit day by the way but there's a thing here there's a thing here there was a mark here there was a flash crash October 2016 and honestly if you you know I was watching the pound kind of you know I was watching the power relatively closely during 2016 and what was fascinating things was during the week you know the only other time so the 24th of June it crashed and the weeks after it kind of dropped and then and then there were some really interesting drops during the during one week in September which happened to be the Conservative Party conference every time a politician spoke the pound went down he was absolutely fascinating Theresa Meister spoken Wow that knocked a lot off the pound oh my god hammer rods up that knocked a lot off the pan it turns out like honestly just shut up just just shut up because it's affecting the PAP but this is after that and even a bunch of Tory Tory politicians speaking rapidly can't emulate this especially not 1/2 12 see what I did there it's not 6 so this takes this is a speed that humans this is speed this is definitely not velocity that we got here this is humans can't screw things up this fast humans proceses software that can do it and this is this is the problem we've now got a lot of systems that people have envisaged as s systems and they said oh but we put in all the assumptions no you have not you have counted for all of the assumptions you have discovered so far okay that isn't that is unbounded by the way oh no no no no we've got everything again confidence not a substitute for reality okay people used to talk about the we live in a post truth era as we discovered it's a pre truth era the truth has its way reality ultimately wins but this is the things we're not very good at doing this because we have closed our tension focuses it narrows as we solve a problem because that is the nature of human focus and problem-solving this lovely book on actual architecture as its quote from the finnish architect Eliel Saarinen always designed a thing by considering it in its next larger context now that doesn't mean that you will know the next large across it but if you don't consider it you definitely won't be doing the right thing and when we talk about full stack development which I have been doing in lightning talks this week I want to switch the meaning here development needs to go further than the technical stack when we talk about the full stack it doesn't just go down a long way I mean honestly when a lot of people say I'm a full stack developer you kind of look at what they're doing and saying you're right in JavaScript that touches the database that's your full stack honestly I'm pretty sure it goes a long way down it also goes a long way up this is the point full stack includes the world and the people around the software and turns out that we we're not very good with logic and stuff like that it turns out that it involves other systems which we did not specify and do not understand and that is not necessarily an intractable problem or rather it only really truly becomes a problem when we don't think of it as a problem if we say that is not a problem we're guaranteed to have one if we say we're in a continual state of learning we need to discover the meaning of this when you place something in a system it changes the meaning the consequences we often interpret meaning by consequence there's the one thing that we are very good at seeing but that so I want to I'm going to close by talking about Michael Jackson and again there you go there's a signifier and a completely different significance ignition you sitting they go like Michael Jackson my goodness he did software requires the specifications as well as Thriller and beer yes the the late beer Hunter who I have one of his books at home so yes he managed to reach the age of was this he died at 66 67 honestly if you look at the number of books are published on beer and whiskey it's perhaps not surprising but I think he died happy this also some Michael Jackson former head of the United Nations Kosovo forces and yeah but I'm not talking about any of them this is this Michael Jackson and this is a fascinating book it's um it's a book many people pass over because honestly as titles go yeah it's not a killer is it it's the subtitle gives you a hint alexxa kind of practice principles and prejudices okay here's stuff I think about okay this is quite a good book it's structured alphabetically over seventy little pieces half page two three and a half pages on different things and one of the he talks very much about how we understand these things and he says the biggest challenge we have is too often we push the problem into the background because we are in a hurry to proceed to a solution and it's this idea that we we are in a we are in a hurry and people say oh yeah but you know just talking about this that's just semantics that's just like yeah it's just meaning but that's not the conversation stopper we need to rewrite that because that's what this is all about it's just meaning yeah that's the beginning thank you very much [Music]
Info
Channel: ACCU Conference
Views: 14,867
Rating: 4.8625956 out of 5
Keywords: c++, ACCU, ACCUConf, ACCUConference, ACCU Conference, ACCU 2019, ACCU Conference 2019, Coding, Programming, C++ Programming, C++ Coding, C++ Talk, C++ Tutorial, Code, Talk Video, C++ Talk Video, Coding Talk Video, kevlin henney, kevlin henney 2019, kevlin henney talks, kevlin henney c++, coding semantics, abstraction in c++, software architecture, ludwig wittgenstein, christopher alexander, ken schwaber, mike beedle, cpp, meaning, language, semantics, language semantics
Id: ndnvOElnyUg
Channel Id: undefined
Length: 88min 27sec (5307 seconds)
Published: Tue Apr 30 2019
Related Videos
Note
Please note that this website is currently a work in progress! Lots of interesting data and statistics to come.