BOB MARTIN PRESENTS: The Future of Agile

Video Statistics and Information

Video
Captions Word Cloud
Reddit Comments
Captions
let us proceed water what's the chemical formula h2o which means two hydrogen's one oxygen in a single molecule the molecule looks like Mickey Mouse that big oxygen molecule in the middle two little ears on the side those are the two hydrogen atoms why do those atoms stick together and the hydrogen atom has an electron cloud around the outside that's negatively charged the height the oxygen atom has an electron cloud it's negatively charged why do these two negatively charged things stick together they should be repelling each other why do they stick well let me draw you the situation here hold on now let me get my pencil out you know days are a little different nowadays my pencil has software running in it when's the last time you had a pencil they had to reboot so let me see if I can draw the water molecule for you mm-hmm let's do a sketch not that one let's go over here yeah kill that that's good no not that okay fine and let's see here's an oxygen atom and here's two hydrogen atoms looks like Mickey Mouse and what I've drawn are the electron clouds now why do these electron clouds stick to each other well let's ask a different question where are the protons protons are in here there's one there and there's one there there's a bunch of protons in here those protons are positively charged now if you were an electron where would you like to be in this situation you want to be as close to all those positive charges as you can yeah wouldn't you cuz you're attracted to positive charges they turn you on so where would you want to be well if you were an electron you would like to be right here or right here now you're not allowed to be there all the time sometimes you have to go around the outside and fulfill your duties to populate the electron cloud but most of the time you can sit right where it's nice and warm and comfortable between those two positive charges and look what happens you get a nice negative charge built there that's attracted to these two positive charges you get a nice negative charge there that's attracted to those two positive charges and the whole thing is stable that's called a covalent bond covalent bond is nothing more than the electrons wanting to be between the positive charges and exerting just enough force to hold those positive charges in place and you learn in high school that it's all about the shells and there are eight things and they can be only eight or six or whatever it is all of that is true of course but the real reason is that you know I trends just want to be there and they attract everybody so fine now the water molecule is interesting because I can draw that line and notice that all the negative charge is on one side or most of the negative charges on one side the bottom side there is mostly positive charge or at least it's more positive than the other side which means that the molecule has a dipole it's negative on one side and a little more positive on the other side now that's unique many molecules don't have that characteristic water does and it's a very strong dipole what that means is that when you sprinkle a little water on your hand there's little electric charges on your hand and all the water molecules will rotate so that the negative or positive side whichever is attracted to them will stick to your hand this is what makes water wet water is wet because all the molecules rotate and stick to whatever they can they're free to do that rotation and they have the dipole so they slip in this is also what makes water a very good solvent water can dissolve things because it'll rotate and stick to the molecules that have a slight positive slight negative charge and it will pull them along with them salt will dissolve in water this way other things to sugar will dissolve in water this way lots of things do this is why water is a good solvent it's not hard to tear those hydrogen atoms off the oxygen atom it only takes about 40 or 50 volts probably up 40 right so here's a nice nice little experiment you can do if you have kids the kids will love this you get a glass of water fill it up with water get some 9-volt batteries you know those 9-volt batteries they have a little male and female thing at the top all right so they look like rectangles and there's a little male/female thing and a little male thing and then you get another one put it right here and you put the female part there in the male part there and then you get another one and you put the female part there in the male part there and you get another one and another one you get five of them now that's nine nine volts times five that's 45 volts that's plenty and you just stick them together they'll stick and beep nice you get a couple of wires you take a couple of wires you dip them into the glass of water don't let them touch just let them hang out there put a little salt in the water that helps little salt and what you will find is that bubbles will form around those two wires on one side you'll get oxygen and the other side you'll get hydrogen you could actually collect it if you wanted to if you wanted to like collect it in balloons but you don't have to just let it kind of sit there and bubble and fizz if the glass has enough of a lip on it then the oxygen and the hydrogen will collect in that in that part of the glass so the hydrogen wants to rise it will escape but some of it will stay behind you can let it fizz for about a minute and then walk up with a match and get a little explosion not a big but it's cool because you get your kids to watch and look at it's bubbling kids so now watch this if you do that long enough and by long I mean about five minutes you will find that the glass of water has gotten pretty hot takes a lot of power to rip those hydrogens off that oxygen the batteries will be pretty well depleted you will have used most of those batteries up and if you were very careful you would note that the density of that water was just a little too high not much just a little little T like water is usually one gram per cubic centimeter but now it will be just a little more than one gram per cubic centimeter and the reason behind that is that heavy water water that has one extra Neutron in its hydrogen's does not want to get ripped apart quite as much as regular hydrogen does regular atoms do so you will find that your water glass is slightly enriched in heavy water now the Atomic Energy Commission is not going to come by you don't have to worry about that however if you want to buy about ten thousand batteries and repeat that experiment over and over and over again with the same glass of water you could get rid of all of the normal water and have nothing but a glass of heavy water that would be expensive and not what I'm supposed to talk about so let's actually talk about what I'm here for this is just going to be a fun talk not a lot of Technology I'm not gonna put code on the screen although I am going to talk about programming and programmers and I'll be talking a little bit about the past actually I'll talk a lot about the past and a little bit about the future if you look around the room you will find that there is a certain imbalance in this room there's more of one kind of people than there are of another kind of people specifically I'm going for the type of chromosomes you have there aren't awful lot of Y chromosomes in here too many and not quite enough X chromosomes right now why is this although the ratio in this room is actually pretty good but why is this what's going on in our industry that would concentrate males into programming and not concentrate females by the way that's the opposite of how it used to be in the 50s there were more women programmers than men programmers in the 60s it was pretty even when I got my first job I got a job at a place where the had a couple of dozen programmers and about a third to a half of them were women but 10 years later the ratios had completely changed and today in the Western world the ratios are horrible it's about 3% women what is going on now I don't have an answer to that question I'm not here to try and answer that question I just think it's awfully interesting there must be some process at work and some folks think that process is nefarious and other people think the process is natural I just don't know what the process is but something is at work to keep that ratio the way it is I don't think that's stable I think it will probably have to change for reasons that I am about to discuss let's go back to the earliest days of programming right 1946 there was in those days one programmer and I think I can tell you who that was I think it was that guy Alan Turing interesting dude wrote this paper in 1936 answering some esoteric mathematical problem I won't bore you with what it was except to say that in order to answer this esoteric mathematical problem he had to invent the modern digital computer now he did this by assuming that it was a device that could make marks on tape and he didn't think it was electronic and he didn't think it was even automatic he thought that a person would be operating it according to very strict rules but it doesn't matter he invented what we would think of today is a modern computer and if you has anybody read his paper you have anybody else this is this is a very difficult paper to get through that's very very thick and so I advise you to get a book and I think I have the slide for this book let's see if I do no I don't okay the name of the book is the annotated touring is written by Charles pet sold Charles pet solds name you may remember he was the guy who wrote all the MFC books by the Microsoft foundation class books back in the 80s and 90s and he eventually decided to stop writing software pornography and actually write some real good history of software and he wrote the annotated Touring the annotated Turing reproduces Alan Turing's entire paper but it does so in little snippets and it surrounds each of those snippets with the history and the explanation and what was going on and how how it affected touring it's a fascinating book to read I have read it twice I'm going to read it again it's a very very good read and it will give you a deep insight into the very beginnings of this industry that we're all in how many of you are programmers they say that's most of you what are the rest of you we have some testers in the room we have testers oh yeah how about how do we have the certified scrum masters in the room the hold look at that we got CSM's in the room that's great yeah so touring had invented this device in his paper it got him interested in the whole automatic mathematics thing the computational mathematics he got recruited by the war effort and used his knowledge to help make machines that broke the german enigma codes we could we could say that Alan Turing won World War two or at least was a big contributor to that the kinds of equipment he was using looked like this this is a relay anybody played with a relay relays are fun they're real simple to understand right this is an electromagnet just a coil of wire if you run a current through the coil of wire it magnetizes that piece of metal this other piece of metal and snaps towards it and that drives this little lever system that changes the position of these switches and the switches might close them and I'd open depends if you think about that enough you'll realize that's enough to do computation what does it take to do computation what operations are necessary to build a computer necessary and complete you only need two operations to make a computer to do anything negation and either and ER or doesn't matter which it is and or or doesn't matter negation and and ER or you can get negation out of a relay just by opening a contact when you energize the coil you can get ands and ORS out of electric circuits just by wiring them together you can build a computer out of relays and he did they built nasties very interesting computers that searched through the the solutions for the Enigma code but a relay is slow how many operations can you get out of a relay well you know ten per second so so imagine a computer that has a clock rate of ten Hertz faster than you can think but still pretty slow vacuum tubes had been invented and they thought about using them a vacuum tube would be a hundred thousand times faster but they were really unreliable in those days they weren't being mass-produced in any quantity they weren't being reliably produced they they drew a lot of power they failed a lot they leaked a lot so they couldn't make anything very reliable out of vacuum tubes they vacuum tube could be used reliably in a circuit that had one or two tubes in it but if you had to put a hundred tubes in it you knew that they were gonna fail so they didn't want to do that until a little later not wasn't too much longer the war had been won by this time but they started to build these vacuum tube machines and this one is the automated computing engine this is the first computer ever made or at least some people think it's the first computer I've ever made there's some doubt about that but it was certainly one of the few first electronic computers ever it was a von Neumann machine it was programmable you it had memory it used vacuum tube so it was relatively fast the memory the memory it looked like this it was mercury delay lines there's a big long tube of mercury and you put a speaker at one end and you pump bits into that speaker and those sound waves move through the mercury at a pretty high rate of speed and you put a microphone at the other end and then you capture that electronically and wrap it around to the beginning so this is rotating memory kind of like a disc except it's moving through the mercury the memory was in the mercury and they made that work they got that working he this computer had 1024 words of 22 bits they didn't know about bytes and they were just trying to store bits and it worked it was fine except that everything every time a truck went by it shipped the mercury and messed everything up so they had to eventually stop using mercury delay lines and they fell back on this approach and this approach is a cathode ray tube who's seen a cathode ray tube really an old TV set and we remember old TV sets you turn them off and they didn't go off the picture just kind of collapsed and slowly you know until you were just staring at that I you know why did that happen well it's because the the cathode ray tube had a filament at the back end and that filament would throw off electrons and the electrons would move forward towards the front of the tube where there were phosphorous and the phosphorous would glow you turn off the tube you turn off the TV but the filament still hot it takes a long time to cool down it's still throwing off electrons and you still get that little spot until finally the filament cools all the way down the other thing about a cathode ray tube is that they used these plates they put voltages or currents through these place and they could move the beam so they could sweep the beam across the tube that's why televisions worked by the way but the nice thing about the beam is that it would deplete the charge on the screen wherever the beam hit and then the next time you swept that you could tell by the current density in the beam whether the beam had been there previously so it was kind of memory the tube remembered where the beam had been and so this became the memory of the automated computing engine it also became the primary output device people would read the results of their programs by looking at the bits in memory this was memory you could actually see that was the output device and Alan Turing would write programs and then read the results on the screen of the memory device now what was writing code on this machine like well there wasn't an assembler he didn't have any language at all he had to write it all in binary is anybody written code in binary this is fun right I've done this you can do it you have to translate all the instructions into binary he used base 32 by the way he grouped his bits into groupings of five and then he would he would write it all down and then you know he would be able to get those bits into memory using a paper tape reader he had to do all of the instruction the address arithmetic by hand so he knew had to know what you know what addresses he was jumping to and what addresses he was reading from and writing to and so on and all that address arithmetic had to be done by hand it had to be done perfectly if you added an instruction that changed all the addresses he had to go back and change them all very time-consuming very deep detailed work and yet he wrote a lot of code and executed a lot of code the kind of code that he wrote was the kind of stuff that you and I hope we never have to write the the folks who made this computer did not know that anybody would want to call a subroutine the idea of a subroutine hadn't really even been thought of so there was no stack and there was no way to capture a return address Alan Turing had to invent that concept and he had to invent the concept of a stack and he had to write the code that would implement a stack of return addresses and he had to do that of course in binary he wanted to do math in real numbers but of course a computer only deals with integers so he had to write a floating-point package in binary has anybody written a floating-point package go home and do this this is fun all right so this is a weekend exercise get rid of the family you're gonna disappear down in the basement no one's gonna hear from you for two days and go down in the basement and write the code you can do it in Java if you wish just don't use public floating-point numbers you use integers and write the code that will add two floating-point numbers together and you'll find this very interesting challenge there's all kinds of crap you've got to do to line those numbers up and do the exponent subtraction and all this stuff he was doing this in binary so that's pretty cool you get a whole bunch of other stuff like that he wanted to do long calculations which he managed to do over the over the year or so that he worked and then he wrote a document about his experience and I've drawn a few quotes from this document because they're remarkable quotes first of all he said a year later we shall need a great number a great number we'll talk about that in a minute of mathematicians of ability are you mathematicians of ability is that what you are because there will probably be a good deal of work of this kind to be done how did he know how did he know that there was gonna be so much work to be not I think if he if Alan Turing were alive today he'd be astounded at just how much work of this kind has been done I mean Angry Birds after all but he knew even then that they were gonna need a lot of people to write this code and he called the mathematicians of ability because he recognized that this was not easy stuff this is hard mathematicians of ability that's what we're going to need he went on to say one of our difficulties and boy did he nail Alan right will be the maintenance of an appropriate discipline so that we do not lose track of what we're doing now there's south sounds like the voice of experience to me I think he lost track of what he was doing one or two times and came up with a few disciplines to use have you ever lost track of what you were doing writing code yeah ever have you ever stared at the screen again what the hell did I just write the maintenance of an appropriate discipline what could that discipline be huh well we need to go forward so mathematicians have ability a great number appropriate discipline keep those concepts in mind as we move forward in time the number of computers in the world is now on the order of one there was a time when there was just one and I'll use Big O notation so that I've got room for slush right but on the order of one the number of programmers in the world was on the order of one there was a time when there was one programmer in the world and the date were pretty sure of 1945 1946 somewhere around them and that's not that long ago that's 73 years ago is that right 73 74 or something like that it's not that long ago less than a person's lifetime ago there was one programmer in the world how many programmers out there now well think about that for a while we'll come back to that question the problem of memory was pretty significant cathode ray tubes couldn't store enough bits so we stumbled upon this idea now this is a core plane that I own this is this is core memory I own this core plane I bought it when I was 16 years old actually a friend of mine bought it and I bought it from him recently he actually gave it to me but I have this at home this is a micrograph of the same structure I took this micrograph this is a core plane these little rings are ferrite ferrite is powdered iron and clay that has been baked now it's powdered iron so it's magnetic and it's clay so that you can get this shape and then you weave them into this network of wires now why well if you run current through these wires if you run just the right amount of current through these wires you can magnetize one of the Rings if you run too little current through the wires the Rings don't magnetize but if you run just the right amount through they do so what they would do is they would run half the necessary current through that wire and half the necessary current through that wire and that would be enough to magnetize that ring and none of the others and so they could flip the magnetic state of a ring it could be now north south or south north two states one bit and that's how we would store our bits in memory how do you read this well you take a bit you take one of these rings and you flip it you you presume that it is a 1 you don't know its state you write it to 0 if it was a 1 it will flip as it flips it induces a current on another one of these wires in here and you read that with a little amplifier if it didn't flip it doesn't induce that current that's really hard to read by the way but they tuned it all I got it all working and core memory became the way that memory was stored in computers between oh the late 40s all the way into the 70s core memory I worked on a lot of core machines who worked on some core machines here anybody work with core nobody worked with core a core memory was great you turned the computer off all that magnetized cores they stayed they kept their magnetism you turned the computer on everything was in memory we used to load the operating system up into memory and then turn the computer off then turn it on later it's still I'll be there we put our programs in there turn it off they'd stay there for weeks right because the cores did not get unmagnetized but those cars are expensive think about making that now these little rings they're about a millimeter in diameter and those are big for core memory there are a lot of cores that were smaller than that how do you make that well you put it on a loom of course but you still need people to thread those wires and a lot of people very labor-intensive core memory cost more than $1 per bit memory was really expensive in those days a dollar a bit who's got a thumb drive in their pocket right now that's got Oh 16 gigabytes 16 gigabytes what is that 256 no 64 Giga bits yeah 16 gigabytes would be 64 Giga bits 64 billion dollars worth of memory you and I do not understand just how rich we are yeah and I mean that very literally we are overflowing with memory memory is just everywhere we have wealth beyond our dreams in memory you and I we don't even think about memory anymore anybody think about how they're gonna fit it all in memory how are we gonna fit this up who cares you know well how much you got in your mis yeah that's 16 gigabytes in my machine yeah it's who cares anymore we don't catch we spend it like you know we're going out of style the other thing we spend our cycles nobody thinks about that anymore we used to count cycles we used to count the number of instructions you know there's a microsecond there's a microsecond that's two microseconds we do all that math I don't care anymore we don't we don't worry about it on fact we've who's using Java if or I was using c-sharp okay both of these languages run on virtual machines what does that mean virtual machine it means that the machine has a simulator inside that pretends to be another computer and it interprets the code as though it were this other computer so it's burning cycles like crazy just to walk through this code now I know there's jitan compilers and stuff like that and they solved that problem on the other hand if you had told me 30 years ago that the majority of the world would be running their you know enterprise systems on virtual machines item I would have said you were insane nobody would do a thing like that would be way too slow it's not anymore our machines are stupidly fast absurdly fast and the machines are stupidly cheap how many are doing it in the cloud now just spit up another server well I need 80 servers for that one okay well Amazon's got plenty this is a different world right then I grew up in but by now it's the 50s core memory is being used vacuum tubes have become pretty reliable their mass produced in quantity it looks like it's possible that we could build computers out of vacuum tubes reliably and we could build lots of them and so IBM started to build them there were a few in place by the time Fortran was invented anybody work in Fortran you oh yeah look at that got Fortran good good okay couple of Fortran guys Fortran was invented the year after I was born I am older than Fortran by a year this is Fortran this little code here just to give you an idea of how primitive this language is this if statement here oh yes we had if statements this statement says well if the quantity IB plus IC minus ia is negative then jump to line 777 if it's zero jump to line 777 if it's positive jump to line seven nine nine that was an if statement that was the only if statement in early Fortran and the line numbers you see the line numbers up there you'll notice that they're not necessarily in order because they weren't actually line numbers they were just labels arbitrary numbers that you could stick on a line they did not have to be in order they never were in order they were just names for those lines a line did not have to have a number you can see that one if statement up there doesn't have a number you don't have to have a number on the line you can if you want to but if you're gonna jump to it you need a number now why would they use numbers instead of names cuz numbers take less memory than names many names take bytes numbers take maybe two bytes a word and the language was designed to fit in these very small machines the see here is a comment all right and notice that the C's all line up in a particular column that column was reserved first column was reserved for comments that you couldn't put anything in that column except AC I don't know why they thought that was a good idea but they did when we wrote this code we did not write it by typing it programmers did not know how to type in those days they had no keyboard skills there were no keyboards for them to use right we wrote our code on paper with pencils this is a standard coding form that we might have used you'll notice it has 80 columns and about 30 rows and we would write our code in black number two pencil our editor was an eraser and we would very carefully write this code and then executed in our brains over and over again looking for any flaw that we could think of and by the time we were done and we had thought okay we're done with this we this code is probably going to work it was still in paper so we had to walk it down the hall to a room where there were keypunch operators the keypunch operators were operating key punch machines now in this in these days anything that went into a computer went in on cards you didn't type things into a computer you didn't read things in from tape anything that went into the computer went in on cards and came out either on cards or our printer everything went in on cards that means if you were doing payroll you had a bunch of data you needed to get into the computer somebody had to punch that if you were doing inventory you had a bunch of data that had to go and somebody had to punch that so there were people who would gather that day to write it all down on sheets of paper hand it to the keypunch operators keep on top ratings were madly punching cards those cards would then go to the computer the programmers would walk into that room and these people were busy in there punching punching punching like crazy the programmer would walk into that room and all the keypunch operators would stare and glare at them because we're adding more work first keypunch operators ever saw I walked into that room young programmer 18 years old I had a little sheaf of paper I wanted them to please punch it and one of the key punch operators looked up at me with you know anger in her eyes she said flutter away little butterfly so I ran out of that room with my tail between my legs and I went down into the basement I found a key punch machine it taught myself to type I never went back in that room again many programmers however used the keypunch operators they would walk in the room and they would toss their paper into the basket and eventually usually a day or two later the keypunch operators would get to it and you could go and get your deck of cards now the key punch machine would punch in you can see it up here there's the cards up there you can see the little holes but very at the top of the card you'll see that there's a little bit of code written up there there's a dot matrix printer in the key punch that would that would print on the card what the card contained so you could get your box of cards and you could go through it and read the code by looking at the top of the cards and you'd better too because the keypunch operators did not punch accurately they had no idea what they were punching they weren't programmers so you would walk through there make sure they punched everything they didn't so you'd have to fix a few cards and we had a key punch machine in the room for us for us to fix it eventually you got the deck into a state where you thought it was acceptable you put a rubber band around it you write your name on the top draw a diagonal line across the top in case you drop it and then if you drop you all you have to do is get that line to line up again take it down the hall to the machine room programmers were not allowed in the machine room programmers never touched the computer right only operate were allowed in the machine room operators were a different species of human they had complete domain there was a lock on the door only they had the key to that lock you wanted to compile your code you went up to that machine room door and you made the necessary gestures of obeisance and then you put your deck in the basket and you walked away and then an arm would reach out from behind the door and take that deck into the bowels of the machine room where it would sit until 3:00 in the morning it would sit there until 3:00 in the morning because that machine was busy it had to run 24 hours a day had to run 24/7 the machine was is a $10,000,000 machine in the 1960s so they didn't of idle time was a disaster so those operators were running bills of material in inventory and payroll and every other batch job they could until 3:00 in the morning during the morning all the jobs are done they stacked up all the programmers compiles on the card reader push the read button and they went and had coffee all the compiles would run they'd print off they'd take those print offs they'd tear them off they'd put them on a table outside the machine room you came back the next day maybe your job had been done maybe your compile had been run you went to the table oh there's my thing it says Martin on the top you take your listing and the deck of cards you go back to your desk you open it up and realize that you had forgotten the comma this was your life in order to get productive a programmer would have to work on five six seven programs at the same time you'd get one ready and get it put it in the basket get the next one ready got to put it in the basket I had to have a whole bunch of them going in order to be anywhere near productive this was the era that Lisp was invented who's written some Lisp oh look at that I got some whispers in the room 1950 what eight Lisp was made Lisp is the language that will not die we have tried to kill it many times it keeps coming back it's like the cat I think that keeps coming back the very next day Lisp will go away because of that I now believe it will be the final language once we have finally settled everything out only one language will be left it will be Lisp all programmers will be writing a lisp eventually it's not the case today probably will be one day but that was the beginning of functional programming functional programming began in 1958 it actually began in 1936 when predicate calculus was invented but the first programming language to do functional programming was 1958 you may think that's a modern concept it's not between 1954 and 1960 IBM sold 140 of these 705 709 species of computer these were monster machines in size and in expense as far as power they were like minuscule right my air pods have much more computing power than that machine did but in the day it was a pretty good machine they were horrific aliy expensive they were vacuum tube machines they're very difficult very unreliable if you jumped on the floor you could shake those tube filaments and get them to misbehave so it was a very difficult time for computers I mean where they were horribly expensive they were million-dollar machines IBM did not sell computers in those days they rented them and the rental price was enormous IBM kept the capital value they would just rent them out and this was the era of Fortran and Lisp and COBOL and a bunch of other languages this is also the era where programmers were mostly women or at least they started out as mostly women and gradually transitioned to about 50 50 men and women one of the original programmers was Grace Hopper this is Grace Hopper Grace Hopper who was in the Navy she was eventually a Commodore she got involved with computing very early she is the first person to realize that a human-like language could be used to program a computer she called it a compiler she coined the term compiler she also wrote the very first compiler which was language called a zero that no one knows today eventually she became instrumental in the primary driver of another language called COBOL for her sins anybody done COBOL here sorry about that awful awful thing to have had to experience I'm glad you survived to the effort COBOL was a moral good and an implementation disaster the moral good was that the idea of a language that could almost read like English was a great idea it just doesn't work in software so it was a failed idea but it was a grand vision that doesn't mean it wasn't a popular language it was a wildly popular language for about 30 years but it was not a great language in any sense these were the programmers of the ENIAC the program the computer at Princeton this was not a stored-program computer this was programmed by plugging cords into into slots and panels and these were the programmers it was all done by women and by the way programming this machine was no mean feat you had to have a heck of an engineering sense to to figure out all the timing pulses and the math and how to do this and that so fascinating why were they women by the way men built the machines women programmed the machines it was a definite divide in labor and programming at that time was considered clerical work that changed later but back then it was clerical work and so it fit within the mindset that women were able to do it was much more technical than it was than it is today by 1960 the number of programmers in the world the number of computers in the world was on the order of a hundred think about that you know in the 1960s not that long ago you know flower power and hippies and Vietnam War and stuff like that maybe there are 100 computers in the world maybe 200 maybe 300 but it's on the order of hundreds of computers not thousands I went to the University of Illinois with my father it was a science teacher and we looked at the computer lab at the University of Illinois in the early 60s and they were building a new computer there the iliac 4 and the guy who was building it was very proud of it and he said to this group of people that I was in he said when this machine is finished the computing power in the world will double which says an awful lot about how much computing power there was in the world number of programmers was about 10 times larger than the number of computers now why well because in those days in order to keep a computer running and you had to keep it running 24/7 in order to keep it running you had to load it full of code and any code that ran was code that you wrote there were no libraries there were no frameworks there was nothing you could download no little cute things that would run no operating systems right that was literally hard metal empty memory and if you ran something in it you wrote what ran so it took a lot of programmers to do that about 10 times the number of machines 10 programmers per machine is about the right number but the world was about to change now who were these programmers these early programmers the very first programmers writing all this code who were they this thousands of people there were no there were no computer curricula at school you could not go to university to learn how to program the universities didn't even have any computers in those days or maybe one or two did but hardly any did right and there were no courses you could take so how did you learn to be a programmer and in those days what happened is that the companies who owned computers went to their employees and said who wants to learn how to do this and a few people who were technically-minded scientists mathematicians engineers would raise their hands and say yeah I'll take a stab at this these were not young people these were old people they were in their 30s and 40s and 50s they were mature they've been in the business for a while they understood the business they were in and they were thinking that this would be an interesting opportunity were not graduates they were mature the earliest programmers were old keep that in mind but the world was changing fast the transistor had been invented transistor completely replaced a vacuum tube almost overnight and the computers that used to be big and power-hungry and expensive suddenly got small and power efficient and cheap and the numbers of them could rise enormously by 1965 IBM was making 1401 computers and by the tens of thousands and these were cheap machines they look still big but that's much smaller than they used to be the one big thing here look at that sucker right there that's a disk right now that disk has platters that are three feet in diameter the platters themselves are about a half an inch thick they weigh a good 500 pounds per platter you'd have about 14 platters in that thing right and when you turned it on they had a beefy motor in there to spin that sucker up it would sound like a jet engine going off and the floor would shake and everything and then it would all settle down as all the resonances had been damped for just the right frequency and that thing would sit there humming hmm well all those just spinning like crazy they had like four or five seek arms or on the outside they were driven by compressed air had a seek time of about half a second but they'd have a whole bunch of those arms around the outside maybe you could put oh five megabytes on that thing maybe right I worked in a computer office once where it had one of those and we were in the we were in the computer room and we looked down at the floor and little metal filings we're coming out from the disk drive we called the maintenance guy over because in those days you had a permanent maintenance guy on staff all the time called the maintenance guy over said is that normal and you know the blood drained from his face and he hit the power button should know the the disk the spindle was was carried on mercury bearings one of the mercury bearings had dried up right and this thing was grinding the grinding the axle he said you know a couple of those things have cut loose they'll go right through a concrete brick wall so he's glad he turned it off these machines rented for $2,500 a month in nineteen sixty-five dollars right that's about twenty thousand dollars a month today but that was in reach of a whole bunch of companies and so now it was possible for thousands of companies to have computers in their buildings and of course they could write payrolls builds a material and inventory and general ledger code they had to have programmers though the number of programmers the number of computers in the world shot up now now it's on the order of tens of thousands the number of programmers went up - and it went up by a factor of ten now there had to be hundreds of thousands of programmers in the world just to serve those machines who were they who were these hundreds of thousands now it's only been 20 years it's only been 20 years and we're already at this phase where there's a hundred thousand programmers in the world I'm 13 years old at this point I have actually written my first lines of code right I've been actually played with the concepts of computers I knew I wanted to be a programmer by this time there are a hundred thousand computer programmers in the whole world who were they well there weren't enough engineers and scientists and mathematicians and there still weren't graduates coming out of a university so the programmers had to still be drawn from employees but now it couldn't be the best and brightest it had to be the next tear down still bright still intelligent accountants planners marketing deal whoever had a technical bent the business had to have programmers had to have these programmers so they would train them they wrote aptitude test does anybody remember the era of the aptitude test to see if you had the aptitude for being a programmer this is a terrible time in enlight because you'd have to answer all these stupid questions and then there would be a binary result at the end no you're not a programmer yes you are well that's just dumb nowadays we know that programmers come in at least two different varieties so programmers needed to be drawn from existing employees and once again these were older people they were people who had been around they've been in the business for a while they might not have been brilliant scientists but they were at least brilliant people they were still old though not mathematicians they were experienced disciplined professionals they had been in the business for at least a decade they've been around they understood what projects were they understood what the business was then you had to talk to management they were not twenty-two year old kids coming out of school very different from what we see now my 1966 IBM was producing producing a thousand IBM 360s every month I worked on a number of these machines back in those days they were gorgeous machines beautiful things to work on very reliable very fast they were just there was something really solid about working on an IBM 360 very very reliable machines and they were making them in in huge quantities thousands of them every month this was a fascinating era in 1966 olio Honda and Kristian Nygaard working in at the University and Oslo invented object-oriented design object-oriented languages were born in the mid-60s they built a language called simulus 67 based on Algol oh oh god its birth in 66 in 1968 Edsger Dijkstra wrote the famous paper that said go-to might be considered harmful and structured programming was born and we already saw that functional programming had been born a few years before that with Lisp in 1968 ken Thompson and Dennis Ritchie go on to the seventh floor of the of the AT&T building the bill labs and they invent two things in a matter of a couple of weeks they invent see and they invent unix and they changed the world they were not told to do this they just had a need and they filled that need by inventing two landmark pieces of software by 1970 Digital Equipment Corporation is producing 50,000 pdp-8 these are little tiny machines desktop machine it would sit about the size of that podium right there right tiny little machines this thing would be maybe maybe Oh $20,000 here's one PDP 8's that was $10,000 it had a 48 microsecond ad time had def 4k of core my friend and I in high school we would sit and we would look at catalogs catalogs of computers we would look at catalogs with PDP S's in them and dream about how we could get $10,000 we didn't get $10,000 but we did go to the digital sales office and play with their computers there by 1970 the number of computers in the world is on the order of hundreds of thousands now there's a lot of computers around now hundreds of thousands of machines how many programmers are there well still a factor of 10 more about a million programmers 1970 maybe there's a million programmers in the world it has only been 25 years maybe there's a million programmers in the world who were they hundreds of thousands of computers a million programmers well I was one of them that's me at the age of 18 I was already working as a programmer never went to college for it never had two always had a job never had an issue nobody cared actually not many people care today how many of you taught yourself to program ok that's a good half of you taught yourself to program then you went to school probably I don't know if you thought the school was useful a lot of people come out of school thing you up it's great to be there I didn't really learn much you may have learned something I don't know but even today the college curricula for computer science is not driven by experience how many of you went to school and came out and went into industry and got a real culture shock like well I didn't think it was like this College is supposed to prepare you for industry so far they're not doing a great job of that tens of thousands of new CS and EE grads poured out of the universities by now there were university programs for learning how to program and the universities were cranking them out by in enormous numbers tens of thousands they all had something in common they were all young and for some reason they were almost all male there was some demographic change that happened that happened in the universities don't know why but the grads coming out we're almost all male and my first job there was maybe a couple of dozen programmers most of them in their 30s or 40s half of them were women look at the age difference and the gender difference and they were older and they were about half and half men and women roughly ten years later I'm working at a different company maybe 50 programmers there all of us in our 20s or early 30s 3 we're women that's just my experience of that era something happened right then think it was in the colleges don't know for sure but the people coming out of university programs were primarily male and they were stupidly young here's the graph it's a fascinating graf of women in STEM fields the blue lines are women graduates coming out of university in STEM fields the red line is computer science what the hell happened and it shows this happen sometime in the 80s I think it actually happened much earlier because my experience was the number of women dropped in the mid 70s so don't know but that's a fascinating curve I don't know what did that but no matter what happened businesses had to have programmers and what very young men lack in discipline they make up for with energy anybody here work overtime on a project like you know more than 40 hours a week or 50 who's got the record in here who's done a 50-year Hey oh look at that yeah how about a 60 anybody and see notice we know we know cuz we wear that number on our shirt I must 60 or who did a 70 come on somebody did a 70 our week in here Julio he had a few of those how about an 80 we got an 80 or nobody did in 80 hour weeks that mean I was the idiot what young man lack in discipline they make up for an energy and they're dirt cheap you can hire him for a song when I got my first job as a programmer I was making 68 hundred dollars a year I thought it was a fortune it was enough for my car payment and I could still live at home it's a great time for me beep energetic labor now remember up to this time programmers were disciplined professionals right the early programmers were not these young kids they were disciplined professionals they were older they didn't need a lot of management or process they knew how to manage their time communicate and work together they've gone through the whole problem of figuring out how to work at a company they understood deadlines and commitments you know the old rod jobseeker songwriting what to leave in and who to leave out I understood all that stuff they were mature older people and they did miracles those early programmers were the ones who built the IBM 360 virtual memory system and sent us to the moon and did Apollo and Gemini and build you know came up with structured programming and functional programming and object-oriented programming these are the folks who came up with Fortran and COBOL algal Lisp C in Unix all these things that you and I would depend upon now that was done by those early programmers the older ones the disciplined ones the mathematicians of ability the original programmers who knew how to get big things done but now if you were to look at those guys and see how they worked what you would notice is that they were doing something that we would call agile today how many of you are agile I know this is the agile thing right it was I'm at the agile conference or something like that ok they were - although they didn't call it agile but they worked in short cycles they measured their progress the the programmers on the mercury space capsule wrote their unit tests in the morning and made them pass in the afternoon a kind of strange kind of test-driven development but all those concepts were there they were invented by the those early programmers in the 1950s and 60s but hordes of young testosterone driven men cannot be relied upon to invent their own disciplines process must be given to them from above and it was fortunate for the industry that right at that moment 1970 someone wrote a paper his name was Winston Royce the paper was called the development of large-scale software systems and the first page of that paper had this diagram on it and everybody looked at that diagram and said yes that's what we need now they didn't bother to read the paper is the paper went on to say please don't do this but it doesn't matter because they just looked at that first pages and yes yes this must be the way it makes so much sense we're going to do it this way and this process got imposed upon the young testosterone-driven young men like me and we suffered through it for 30 years from 1970 until roughly 2000 that was the domain that was what we were taught to do analyze design implement we could never make it work we always blamed ourselves that's just because we didn't do it right we didn't do enough analysis we need to go back and do more analysis more design we ready getting into code to fast over and over went around this loop until about 2000 when a bunch of us said you know maybe this is a bad idea from the start guy by the name of Kenneth mekin did the extreme programming book and Ken Schreiber and Jeff Sutherland did the scrum book and people started thinking about well maybe there's a better way and eventually we all met at a place called Snowbird and we and wrote the ads a manifesto and all that stuff happened and the whole agile revolution kind of turned us around so now we're not so focused on waterfall and we've escaped that early problem but we have another I told you that there's maybe a hundred thousand hundred million programmers in the world well it's only been 73 years how do you get from one in 1945 to 100 million today in 73 years 74 depending on any account and what kind of growth curve is that is it linear not linear must be exponential okay if it's exponential let's choose a convenient base for the exponent we're programmers we'll choose the base of two how many powers of two get you do 100 million what power of two is 100 million what is the log base two of a hundred million Wow two to the tenth is a thousand so 2 to the 20th is a million two to the seventh is 128 27:27 doublings from 1945 to now twenty seven doublings in 74 years how many years per doubling two and a half two and a half just the number of programmers in the world double every two and a half years the answer to that is probably not because it probably doubled much faster in the first decade because there was one day when Alan Turing was the first programmer but the next day there were 10 and the day after that were probably 20 right so the first decade it probably doubled much faster than once every two and a half years and then it started to slow down there's very good reason to think now that the number of programmers in the world doubles every five years and I want you to think really carefully about that the number of programmers in the world doubles every five years does that meet with your experience and you look around and say no the number of programmers I know has doubled in the last five years the number of programmers I see in various places or various meetings doubles every five years why are there all these people in Montreal at a meeting with some guy yelling at them it must be a lot of programmers in Montreal does the number of programmers in the world double every five years and if that's true and there's very good reason to think it is then it has a very stark implication half the programmers in the world have less than five years experience half the programmers in the world have less than five years experience and this will always be true as long as we are doubling every five years which leaves our industry in a state of perpetual inexperience there is no way we can get the right ratio of experienced people to inexperienced people because we're bringing them out of universities way too fast now we got to have the programmers so we've got this dilemma it's a dilemma of inexperience you look around a programming organization what you see is a bunch of young people you don't see a lot of old people and you come to the conclusion that Alice must be a young person's game only only warped sick old people would stay in this business they ought to have gone into something else by now right where are all the old people now we're all still here you know there just weren't very many of us to begin with back then we're all still here now this is a problem for us and this is where we're getting to the future of programming this is what's going to happen hardware's changed a lot in the last 70 some-odd years the demographics has changed on awful lot in the last several years last last 70 years but the software hasn't changed all that much what is software if statements while loops assignment statements it's about it not much more to it oh you could talk about classes if you want to but classes are just data structures with functions we've had data structures with functions for a very long time software hasn't changed very much the hardware's changed a hell of a lot software hasn't changed all that much if I took a programmer from 1968 and brought him forward in time they'd be able to write the code it looked at Java and go whoa that's kind of cool I can write that if I dig you and put you back into 1968 you would be very disappointed but you could write the code and you wouldn't find it all that different the machines you'd find very different the code you wouldn't find very different the code hasn't changed much Hardware changed a lot but something else needs to change our industry needs to grow up what we are is not a profession you'd like to think of yourself as a professional but can you tell me what you profess a professional professes what do they profess they profess standards and ethics and discipline this goes back to touring again the appropriate discipline what are your disciplines can you and you state your disciplines can you outline them and justify them to me do you have something you profess or do you just write code and the answer is most people just write code they don't have any built-in standards they never learned them at school the school doesn't teach you any ethics of programming doesn't teach you any discipline of programming doesn't teach you what the standards are what are our standards what oath do we as programmers take to serve our our society and the answer is none none people just hire us to do whatever how much software is running in this room at the moment 30 years ago that and that number would have been none today how much software is running in this room at the moment sitting on your belt yeah how much software is running in this thing or right now I got all kinds of processes running in here Facebook's running in here and Twitter is running in here and phone software is running in here is a map software is running in here as I move it it is clicking at me because it's it's thinking that it wants that I want its attention it's telling me that people are trying to talk to me it's sending me little messages if a if a flood occurs in my basement I will get an alarm here if the power goes off in my home I will get an alarm here this is constantly running I have software running on my belt enormous amounts of software I have software running in my earphones I put them in my ears there's a Bluetooth connection to the phone little processors are running in here with enormous amounts of software I've got software in my car keys my car keys our chef software running in them there's software running in my watch I am a skeleton surrounded by software the meat of my bones is software how much soccer is running in the walls of the room there software in that funny little box on the back wall there I don't know what it is maybe it's a thermostat just a little box software running in that I'd give odds there is that projector clearly has software in it what about those speakers the speakers have software running in them it's cheaper now nowadays to filter out 60 cycle hum with a little digital signal processor I probably software running how about the exit sign does that exit sign have software running in it the thing that says sortie exit right I don't know how you say sortie so I'll just say sortie fine there's software running in that sign there's a battery in that sign batteries have to be trickle charged to keep the memory effect down probably a little digital signal processor in that battery monitoring the charge of that battery no fire alarm on the wall software running in that hope not how about that thing on the wall there I'd it well it's got you know some kind of touch panel display looks pretty complicated got to be software in that there's software running in the walls and if you go to your house there's software running in the walls of your house how much software is running on the roads modern car is 100 million lines of code in it that's not a Tesla that's just a regular old car and most of that code is in the entertainment system in the env and the GPS system but some of that code sits between you and the controls of the car you realize there's an if-statement between you and the brake wouldn't you like to know what that if statement says you know if what how many people have been killed because that if statement failed the answer that is dozens dozens of people have died because the software controlling the brakes and the accelerator failed horribly Toyotas paid out a couple of problems with that what other problems have we had who knows about night capital night capital yeah I know I won't tell you the whole story it was just let me tell you it's four hundred and fifty million dollars were lost in forty five minutes because some software idiot did something stupid wasn't even that stupid just forgot to load one server loaded all the other 13 forgot to load one 450 million dollars right big loss how about how about 737 max now that's pretty bad one not all software there's a hardware component in a software component but there's definitely a software component in there you and I are killing people now we did not get into this business to kill people you know we got into this business because we went into a store and saw trs-80 or a Commodore and we wrote a little program in basic to print our name in an infinite loop and thought we were gods and now we're killing people that's the problem how often do people in this country interact with a software system and the answer to that is continuously on a minute-by-minute basis because there's nothing you can do in our society without interacting with a software system you can't microwave a popcorn you can't wash the dishes or wash your clothes or use the dryer you can't change the heat in your house you can't make a phone call you can't drive anywhere you can't buy anything you can't sell anything you can't pass a law you can't enforce a law no insurance can be claimed or filed nothing happens in our society unless software sits right smack in the middle of it every activity of modern society is is governed by software somehow someway you and I write that code we rule the world other people think they rule the world then they hand the rules to us and we write the rules to execute the machines that do everything I think we should talk about our tax rate that's what I think we rule the world we ought to be able to tell people you know our tax rate should be different otherwise well we can make it different anyway the day will come when some poor software idiot does something stupid and kills ten thousand people at a shot it doesn't even take much imagination nowadays to think what that might be ten thousand people dead one shot just because some software person did something stupid and when that happens the politicians of the world will rise up as they certainly should and they will point their fingers right at us and then will ask us how we let this happen and you might think now they're not gonna point their finger at me because they're gonna point it at my boss you're gonna point at my company does anybody remember what happened when the CEO of Volkswagen North America testified before Congress about why the Volkswagen had software in it that cheated the California EPA system and the Senators asked him how could you have let this happen sir and the man said and I quote it was just a couple of software developers who did it for whatever reason that finger came right down right and it should cuz it was a couple of software developers who did it not for whatever reason they knew exactly why by the way those software developers are in jail now as they should be because they wrote lying cheating code and this is what I talked about ethics right are we going to write lying cheating code are we going to write code that kills people are we going to write code that loses fortunes are we going to write that kind of code or is there some discipline that we can invoke at some point those politicians are going to point that finger at us because the event will certainly occur and when they do we better have a better excuse than you know my boss told me it had to be done on Tuesday that's not a good excuse and if that's our answer then the politicians of the world will do what they must they will legislate they will tell us what languages we can use and what frameworks we can use what platforms we can use what processes we have to follow what signatures we have to get what courses we have to pass what books we have to read and we'll all end up working for the government which I would really like to avoid so how can we avoid that we can avoid it the way the actors avoided it the doctors were eventually regulated but they came up with the rules first they enforced those rules first they came up with their own governance system and they they came up with an oath long long ago and they came up with a way of enforcing their commitments and their standards and their ethics and we should do that too if we did that then when the politicians of the world pointed at us and said hey how did you let this happen because the event will occur whether we're disciplined or not the event will occur and when it occurs when the politicians point at us it would be a very good thing if we could say this was an accident but it was not due to our negligence here's our disciplines here are the standards here are the ethics that we followed here's how we enforce it this was not an this was not negligence this was an accident and if we can say that we will probably escape the worst of the regulation they will try and put on us but we could not say that today because right now we don't have that discipline we don't have the ethics we don't have the standards we are not a professional we need to become one for our own preservation we need to become one but we aren't there yet oh that was a happy note wasn't it now let's see oh yes yes yes yes yes do two - I did so many slides that I didn't talk about that's okay there we go there we are there we are there we are yep yep yep and that's the end are there any questions sir so one of the things we have not been very good at in this industry is developing leaders and I mean you know programmers who have enough experience and who then are willing to take the young programmers under their wing and say this is how you're gonna work and I'm gonna be watching over your shoulder like a hawk and I'm not gonna let you commit anything until you have learned to do these things does anybody a pilot in here anybody ever learn how to fly right Oh go learn how to fly go to an airplane really go to an airport one day and take a couple of flying lessons right and you watch how the instructor treats you you're not gonna do anything unless that instructor tells you it's okay and you really want that guy sitting right next to you as you land that airplane for the first time all right and we don't do that you know we get them out of school and say okay write us a multimillion-dollar billing machine go and yeah these guys what do they know bunch of kids well okay we'll dink it together where are the leaders where are the people who know where are the people who will say all right you three you're with me you're sitting with me you're gonna do exactly what I tell you to do you're not gonna step out of bounds for the next two years we don't do that and we need to where are the executives who set expectations expectations not just that the software will be done on time but that the software will be done well where is that executive who understands that getting it done well is the key to getting it done on time any ship captain knows this any ship captain understands that the only way you're gonna get things done on time in a battle is to do it damn well but the executives don't treat them treat the organization like a ship that they are captaining especially not the developers because they look at the developers this is this uncontrollable unconstrained force of nature that they throw meat at and especially and hope to get programs out of most of the problem comes from the way we we the older people treat the younger people if we took them aside and you're gonna you're gonna behave this way and you're gonna behave this way until I tell you not to that would make a big difference but we don't do it we don't do it we sit there and think well we're just programmers and so are they they're equal to us they're not they don't know much and they're in charge of an airplane that they're gonna crash into the ground and you're gonna be riding in that airplane so you might want to sit next to them and help them figure out how to land anybody else with a question yeah yes ma'am all right I'll answer that question 1986 I was working at a company and it was a start-up and there was a guy there was hired and he gave everybody a nickname I was Uncle Bob and and he made it the most annoying wait I was about come here Uncle Bob I like this bunk about me Uncle Bob said this is just made me crazy and I left that company not because of that but I left that company and went to another company and nobody was calling me Uncle Bob wait he's calling me Uncle Bob so I made the mistake of putting it in my email signature and then everybody knew I was Uncle Bob and I went to a conference a couple of years later and people started pointing at me I'll go Bob I'll go and I thought oh my god I've I've created a monster and I tried to take it out of my email signature and when I took it out of my ill email signature people emailed me said no put it back put it back and I thought okay this must be a brand I guess I deserve at fine and I've kept it ever since that's how it occurred yes programmers were already making pretty good money back then in the 1970s let's see what my salary in in the early 70s was around eighty four hundred dollars a year I was hoping for 10 grand a year boy that was a big mark for me I wanted to get to ten grand and that probably happened in I don't know 75 or 74 or something like that and then and then you know I wanted to be 20 and then I wanted it to be 30 salaries were going up pretty fast of course there was hyperinflation at the time as well so I'm I don't know how to separate those two that was during me the high inflation years you said something interesting you said women didn't want I don't know that that's true at all they weren't there I don't know why not I think that's a very deep mystery that people have tried to solve and I think people have tried to solve it with very simplistic arguments I don't think those simple arguments work I just don't know what happened or why I don't know what the motivations were yes but you can't say that lab trick because people get fired for saying that at Google if you worked at Google and you said that you'd be fired right so you can't say that oddly anybody else how can we have how can we help on how to how can you help with well how can you help with the whole professionalism thing the craftsmanship thing okay think about it think about it as a necessary part of your job you know think about this idea of standards and disciplines and commitments a someone that is old enough is going to decide for themselves what their initial personal standards are what are your standards have you made that decision do you know what your ethics are personally do you know what your disciplines are personally can you articulate them to yourself can you to articulate them to someone else how many of you for example are practicing test-driven development okay so there's about Oh 10 percent of you where are the rest of you on this have you thought about that as a discipline if you are not executing it why aren't you do you have a good reason or are you just kind of coasting along saying I never needed it before do you have a set of disciplines that you specifically adopt a set of standards if you think about that first once you get that in your head seek out like-minded people at user groups like this find if there are other people maybe you can talk to them and come up with a more a more comprehensive set of standards and disciplines and if it's really that good maybe that will grow yes ma'am you say no I'm not right so you know and the complaint will be made right you're gilding the lily you're just wasting time you said no I'm not and that's all you really need to say right because you were hired for what you know you were hired to be the expert so you have to act like the expert and if someone challenges you and say you know I think you're wasting time with all this testing nonsense I'm not well I think you'd go a lot faster if you didn't write those tests no I wouldn't well how do you know I've tried that and I definitely go slower if I did if I didn't write those tests boy you should see them mess I could make if I didn't write all these tests no no no I'm I'm definitely writing these steps well I don't buy it you don't have to I'm the one writing the code there is a certain attitude of the professional right you don't hire a professional and then tell the professional what to do you hire the professional and then the professional tells you what to do you go to a doctor the doctor tells you what you are going to do sir it's time for you to go to the hospital now your appendix is about to burst you don't argue with that and you go to a lawyer because you're being sued the lawyer tells you what to do that's how a professional works if you are professionals you will be hired to tell your employer how to work and when they come back inside well I don't believe that it's about you hired me men I'm the professional here if you want to write the code go ahead anybody else so the culture issue is a very difficult one and let me phrase it in slightly different terms let's say that you're working at a company and you want to do test-driven development maybe there's three other people in the country in the company that want to do test-driven development you think it's a good discipline but there's five others who don't this is not a stable situation there's going to be a divorce they can't stay together right and you might try for a while maybe we'll try to convince them the two cultures will collide and you'll try to convince each other maybe you'll even convert one or two but in the end there's going to be a divorce and somebody's gonna quit somebody's gonna leave maybe they can stay in the company and go to a different group or maybe you just leave the company and go somewhere else this is what we see happening over and over and over again people catch a discipline they want to follow the discipline they think it's good they get really frustrated at the company they're working at cuz nobody else wants to do it and they bail out they go to a different company and there's nothing wrong with that and by the way there's plenty of job openings so it's probably not gonna hurt you much might actually make a increase in salary Oh estimation yes how much time do we have here okay all right so I can do this relatively quickly first of all remember that these are estimates the word estimate means guests and the guess is not a very good guess so you make it very clear that you are not providing any commitments these are just estimates now they will interpret them as commitments anyway but that doesn't matter second of all you never give one number right one number is a bad idea so what you do is you say okay you want to know how long it's gonna take me to do X well if everything goes perfectly and I mean perfectly like you know every morning I have the right breakfast cereal and then you know Mike my co-workers are always polite and there aren't any stupid meetings well then I could get this done in three weeks if things go the way they normally go it's gonna take me more like eight and if all hell breaks loose like it sometimes does it's gonna take me 30 now you give them those three numbers and I exaggerated them slightly but the the technical definition of those two numbers is the 5% and 95% lines all right and you give them those three numbers they weren't like the three numbers I'll tell you okay you get better than that can't you better than that you can come on you can do better than that no whoa come on there's got to be some way you can you can work this through and get me better numbers than that I mean you said you could maybe do it in eight weeks why don't you just say you can do it in eight weeks no can't do it in eight weeks maybe about 50/50 odds of that not sure I'm gonna get any better I'll come on you can do better will you at least and here's the kicker gotta watch out for this one all right will you at least try and here's the process going on in your mind now right if I say yes he'll go away I should say yes so that he goes away but you must not say yes because yes is a lie why is it a lie because there is no behavior change you will enact because you said you would try so what you should say instead is I'm already trying there is nothing else I can do the numbers I've just given you are the numbers that I am confident in it might be five days it might be 35 weeks thirty I can't remember what I said but you know what I said now I will refine those estimates every day every week I will give you better numbers because I will know more every day but I can't give you better numbers right now that's what you have to do make sure that everyone understands that you don't know that's the most important thing to to communicate you don't know and you don't have a way to find out until you have done more work and the work you need to do is the work on the project to help you refine those numbers down the managers don't like that because that puts the risk on them they want the risk on you which is perfectly fair they want to shed the risk of course they want to shove the risk you must not accept that risk because you can't you can't make the promise never promise something you don't know you can do never tell them okay man you know we're gonna really pull out all the stops we'll get it done by Friday when you're not sure you can do it because once you say you will do it you damn well better do it see you tell him give them the odds give them give them the probability distribution and let them fight with you but don't don't give in on that very hard to do you know people we programmers did not get into this business because we like people right we got into this business because we don't want to deal with people people are complicated we don't like that but you have to be able to deal with people on things like this one more if there is one more yes yes yes well it sort of does work the question was if you didn't hear the question it was the agile is the is the process that was observed by observed to be used by disciplined people in the wild right agile is observed in the wild and we invented it we reinvented it or rediscovered it in order to help communicate to young people is do I have any idea why this didn't work well does it works fine if you teach young people to do agile they'll be happy to do agile anybody remember Karate Kid right teachers say student do and it really is that simple no the teacher says do agile student does Angela we don't have a lot of teachers teaching that and there are a lot of people in in companies that could teach it but don't and that was that whole leadership argument I gave before but if you get a kid out of school and say okay here's how we're gonna do this right you're gonna estimating points you're gonna work on it on a one-week delivery schedule you're gonna write tests you're gonna refactor you're gonna pair program you're gonna program with these guys I'll tell you how to do that if you do that you teach them that they're gonna do it and you know they may never know another way of programming nobody's helped nobody taught him nobody told him to do it we tried you know we tried to have anybody going through an agile transition agile trance how will that work you know we tried a whole bunch of those they failed horribly most of them they they succeeded in converting a few people who then quit and went on to other jobs where they could do agile but Mary seldom did we actually transition their organization that doesn't work all that well very often maybe some of you have had some different experience with that I think that's enough for me huh probably enough for you too thank you all for your attention [Applause]
Info
Channel: AgileMontreal
Views: 32,718
Rating: undefined out of 5
Keywords:
Id: FedQ2NlgxMI
Channel Id: undefined
Length: 93min 13sec (5593 seconds)
Published: Tue Dec 03 2019
Related Videos
Note
Please note that this website is currently a work in progress! Lots of interesting data and statistics to come.