dogear

enter for all results · esc to close

Demanding Professionalism in Software Development

youtube.comvideo45 minby ElapseTechnologies

transcript

what is the speed of light it's fast a good answer what 1,000 m per second 300,000 m/ second 3 * 8 3 * 10 8 m/s yes that is the speed of light 299 753 I think um how do we know this observation observation of what light very [Music] good the first fella to try and measure the speed of light that we know of was Galileo and as Galilea would have he had a very simple scheme he took two lanterns he covered them both with a cloth he climbed a mountain with one he told his servant to climb a mountain with the other he said look when I take the cloth off mine you take the cloth off yours I will time it with my pulse his conclusion was that the speed of light was what you said damn fast he couldn't tell a difference we didn't really know the speed of light until the 1700s this was at a time when we had already figured out how big the solar system was and we could start to measure the aberration of the orbits of the moons of Jupiter they would uh shift in their orbital timings by 16 minutes from January to June that happens to be 16 minutes it takes light to cross the orbit of the earth and that how we figured out how the how fast the speed of light was since then we've had a whole bunch of different ways to do it uh you can use spinning mirrors you can use oscilloscopes lots of interesting ways to calculate the speed of light we found however that the speed of light showed up in raw calculations having nothing to do with light or at least we didn't think they had anything to do with light right around the uh early 18 00s a fellow by the name of Weber did a simple calculation regarding the electric charge and the Magnetic charge this was at a time when nobody knew that they were related and he found as he divided these two units that a velocity popped out and that velocity was 3 * 10 8 m/ second he knew what it was can you imagine the shock as he took the unit of electric charge divided it by the unit of magnetic charge and saw the speed of light come out what did these things have to do with light at the time no one knew it took Maxwell to figure that out Maxwell determined uh the whole theory of electromagnetics he came up with the nice notion that electromagnetism travels in waves he showed that those waves would travel at the speed of light and he said well what else could light be so Maxwell told us what light was oscillating electric and magnetic fields but Maxwell left that that open to one question he said what's the frame of reference how did this velocity just come out of these calculations what is that velocity relative to well never mind that in interesting discussion we could get into Einstein and all of that but we have something else to talk about here let's see if we can uh I know it's disappointing isn't it I mean I could go on for an hour on physics and science but okay all right all right let's see pray to the yeah see there yeah what is that it is it's the Galaxy in Andromeda uh M31 it is um the closest galaxy to the Earth maybe four million light years 3 million light years close by um slightly larger than our galaxy our galaxy is the Milky Way uh headed towards us in about 3 billion years it will collide with our galaxy and that'll be interesting for us well not for us but for whoever's around at the time should be a fun time anyway there's a button I can push here oh there it is ding yes hello everybody I'm your new CTO I don't know what happened to the last guy he's gone but I'm with you now and I will be your CTO going forward now I know there have been some problems in the past I understand that we've had some issues with quality and schedule but I want to let you know right now we're going to deal with that and we're going to deal with that not by blaming anybody else or trying to to point our fingers at other people we're going to deal with that differently are we professionals what does it mean to be a professional and do we meet that challenge are we professionals a professional is someone who takes their job very seriously they have pride in what they do pride of their work a professional goes home every day proud of what they've accomplished that day a professional knows what they need to do and they don't compromise what they need to do they are hired for their knowledge and they execute that knowledge are we professionals we um we need to be that's something that's getting more and more important look around here how much software is running in this room right now uh a great deal one might say that it's too much but it is a lot I mean how many smartphones are there in the room a lot and um do you have any other handheld equipment that might be uh running software in it are there is there software running in those two projectors certainly um what about this microphone here what about right in here right in the little microphone is there software in there it could be a DSP in there certainly there's software in this thing whatever this thing is radio transmitter it's got to be software run um what about the batteries in your laptop is there software running in those batteries there is most likely they've got little processors in them and your laptop talks to little processors they got a couple of cameras up there they look pretty sophisticated got to be software running in them there's a lot of equipment over here got to be software in those are there elevators in the building software in those elevators how about that phone over there is there a thermostat on the wall oh yeah over there software in that thing you go out on the road there software in all those cars every single one of them of them and does that software control things like the brakes and the engine and the throttle how many times per day do you put your life in the hands of an if statement written by a 22-year-old at 3 in the morning we need to be professional who's heard of night capital I told the story to the class earlier today night Capital anybody here of night Capital other than the people who are in the class today so night Capital lovely little company trading firm uh doesn't exist anymore some software guy left one of the test systems online um bunch of other traders who didn't work for night Capital found out about it started trading with it it was trading stupidly so they stole about 450 million ion dollar from the company in a matter of a few hours the CEO woke up the next day he didn't have a company it was gone overnight right jumped some software guy killed the whole company anybody remember what happened to Barkley's Bank people woke up in the morning went to the ATM machines their balances were zero why some dumb software guy it took him a couple of days to sort it out but by then all the customers had fled I mean what would you do my bank balance is zero right I'm leaving that bank doesn't matter if they gave it back to me later they might take it away again who knows what kind of software people they've got there at some point something very very bad will happen something worse than $450 million something very very bad will happen and it will be some software guy's fault some dumb software guy and I don't want to be here when that happen I would like to be able to say of you of us we were professionals we did not behave that way we did not allow that to happen we understood what was at stake you understand what's at stake right you are programmers the lifeblood of the company runs through your fingers this is not some little stuff that you're dealing with your company our company Depends for its life on the software that we write we are the reason the company makes money or loses money we are the ones who hold within our hands the lifeblood of the company we are the surgeons the doctors doing open heart surgery on the systems of our companies we need to treat it that way with that level of serious ious nness with that level of professionalism you are all heart surgeons I wear this green band I wear it as a reminder because it's easy to forget to behave professionally we have not grown up in an industry that considered itself serious most of us don't take the industry seriously most the most programmers don't take themselves particularly seriously we're kind of a happy go lucky crew we like to talk about geeky stuff galaxies and stars we like to do all that geeky interesting stuff we haven't taken ourselves seriously but it's time we do I want you to know and I have some expectations expectations about how we will behave from now on I don't care what's happened in the past the past is the past but I expect certain things I think we all should expect these things from each other and I'm going to list them for you but as I do I want you to realize that these are just the kinds of behaviors that you would normally expect from a professional group of programmers there's nothing outlandish that I'm going to ask you here there's nothing out of the ordinary there's nothing you can't do there's nothing that is inappropriate and we will begin with the most important of them under no circumstances will we ship we will not do this this is the green band we will not do this no schedule will make us do this no yelling manager will make us do this no one will put their nose in our face and say ship it now damn it and have us say okay if it's crap if it's we will not ship it this is a fundamental responsibility of a professional it's why we were hired as professionals to know when something is and to be able to say so sorry we cannot ship this it's crap it has to wait until it's not crap anymore and that might take some time there has been some fecal matter shipped over the years that period has ended we will no longer do this I expect that we will always be ready do you have your hand up yes all right can you just go back one slide we take a picture of that it's a very important sentence okay it's fine thank you all right good it's being tweeted I expect that we will always be ready what does this mean it means exactly what it says we will always be ready ready to deploy ready to ship ready to execute we will always be ready I I don't want to hear oh the release isn't ready I I don't want to hear QA hasn't finished burning it in I I don't want to hear uh we haven't put that module back together I want us always to be ready now I can understand a few hours delay if we have to put a few things back together I might be able to understand a day or two's delay a weak at the outside but I don't want anybody telling me when I walk in and say all right boys we got a ship all right people we got a ship I don't want anybody saying oh well we're just not going to be ready for weeks no I want you ready I want you ready all the time I want you ready to ship if you can pull it off every day I want you to pull it off every day if you can pull it off every hour I want you to pull it off every hour find some way I don't care how find some way to be ready to deploy all the time no delays I definitely don't want any of these silly things called Burnin periods does anybody do that stabilization periods after you release it then you stabilize it no no no keep it stable all the time it's always stable it's always right it always works it's always ready to deploy I expect that you will be able to add features in such a way that if I say we need to deploy tomorrow you will say okay you might not have all the features done that I understand I understand if we don't have all the features done I don't understand not being able to deploy now I don't know how you're going to do that there have been some recommendations over the years things like uh short Cycles there's this this thing out there that that's got five letters in it called scrum I you know does that do it I don't know if that does it fine maybe that does it maybe it doesn't but you are the professionals who can figure out how to be constantly ready that's what I expect figure it out figure out how to be constantly ready figure out how to keep the software running all the time without defects make sure that it's never ever broken I've noted from time to time that sometimes code gets checked in to the source code repository that doesn't compile I don't expect that anymore I've noted from time to time that sometimes code gets checked in that does not run I don't expect that anymore if it gets checked in it's ready to deploy period I expect stable productivity and by that I mean that I don't expect you to to start out fast and then slow down I've seen this a number of times where people will begin a project and go very very fast but then a year later they're going horribly slowly I don't exactly know why this happens but I infer that what's gone on is that the code started out small enough for them to go fast and then as they roared through their process they made such a horrible mess that they just slowed down to a braw I don't expect this I don't expect anybody to slow down if you can deliver features at a certain rate I expect that rate to remain constant if we add new people it should go up if we lose some people it should go down but I don't expect this funny slide down into chaos I want you to just stay constantly working at the same rate now I don't know how you're going to do that maybe it's got something to do with not making the mess maybe you could keep the code constantly clean I've heard that bad code slows us down so I have an idea no more bad code keep the code clean and then we can go fast all the time I know this is different I know it's not what you expected but I I believe it's possible for us to behave this way and I expect stable productivity constant fast Behavior I expect inexpensive adaptability which means that when the customer changes their mind which happens on rare occasions I expect you to say okay and I don't expect horrible estimates I don't expect people saying oh God you don't know what that means everything's got to be redesigned from the bottom up I don't expect that I expect you as professionals to have identified those parts of the system that are stable not going to change I expect that you have separated them from those parts that do change and you've kept them nicely isolated from one another so that when those things that do change change it's a simple matter of changing them for example we may want to change the database you know oracle we've got this contract with Oracle that's fine but that may not last and some other company might produce a database that we like better and it may be that one day I say you know I've done the cost benefit comparison and Company XYZ has got a better B database and Oracle imagine that and so let's shift our systems and I expect that you will be able to do that without huge cost in a matter of a few days just pull the Oracle out and put the other thing in I I understand that lately there has been um some thought that even the notion that a database is relational could be brought into question that maybe there are databas that are of some other form no sequel I hear it all the time no sequel what if we wanted to put one of those in that should be possible and it shouldn't take a lot of effort if I said we're moving to couch TB you should say right we'll have it ready tomorrow what else might change well the web server I mean the web server is you know what might change the fact that we're on the web I remember back when there wasn't one any everybody remember when there wasn't a web right we still had applications do you remember what happened when the web came along and all the applications had to change and it was hell I don't want that hell again the web might change I expect that when the delivery mechanism the web or whatever when that changes and it will I expect it will be easy to make that change I expect that you will have designed the software and organized it in such a way that that change will be moderately trivial I don't want anybody coming to me and saying that the whole system has to be redesigned no we will not redesign the whole system I expect you to keep the system constantly clean and appropriate which means that you're going to have to continuously improve it I don't want it to get out of date I don't want it to slide down some hor horrible Hill of of entropy into a into oldfashioned codes right I want you to constantly keep the systems up to dat clean improved if there's some new library out there I want you to use it as soon as you can if there's some new interesting language out there I expect you to figure out a way to encorporate if you can I expect you to keep the systems up to date and clean at all time I don't want anybody sliding down that nice relaxing Hill into irrelevance keep everything continuously clean and continuously working have you heard of the Boy Scout rule the boy scout have been doing this for years the Boy Scout rule is very simple they say keep the campground cleaner than when you found it leave the campground cleaner than you found it this sounds like a good idea to me leave the code cleaner than you found it every time you check it in check it in a little cleaner than when you checked it out every day every time you touch the code improve it slightly never let let it get worse always keep it getting better continuous Improvement at all times I expect Fearless competence now I have seen over the years people who have become afraid to make changes afraid of their code afraid of what might happen if they touch a line of coat perhaps they bring coat up on their screen and they see something that ought to be cleaned and they think I should follow the Boy Scout Rule and clean it and then another thought occurs to them I'm not touching it because they know that if they touch it they might break it and if they break it it becomes theirs that fear is not professional and I I expect you to behave in an entirely different way I expect you to behave this way when you see something in the code that is wrong I expect you to clean it instantly without fear without hesitation I expect you to be able to mold the code I expect you to be the masters of the code you are the professionals you wrote the damn stuff you ought to be able to mold it and flex it and twist it and turn it it should be yours and you should be able to do this fearlessly and competently I don't know how you're going to do this I have heard that there are disciplines disciplines such as um oh something with three letters in it that begin with a t and a d and a d I've under I've heard that these disciplines might help you gain this Fearless competence but I don't care I don't care how you do it whether it's with test driven development or some other mechanism I simply expect that you will not be afraid to touch your code at any time that you will be able to maneuver it and manipulate it and clean it with a will and an aggression and a fearlessness that is required if we are going to survive I expect extreme quality now guys I I expect you to go home every night look in the mirror and say God I did a good job today God I did I really earned my pay today I probably earned double my pay today I expect you to go home every day and feel that way I expect you to always know that you have done the best job you can that the code you've written is as clean as you could make it that the estimates you've made are as honest and open an estimate you could make that the designs you're working on are adaptable and flexible as you could make it I expect you to do a good job with extreme prejudice I expect you to behave like professionals extreme quality I have someone building a house for me at the moment and that person is a Craftsman beyond my ability to understand it he um made a mistake bought the wrong hinges for the doors the wrong color spent $4,000 on the wrong hinges we pointed it out to him and he said oh that was my mistake I'm fixing it paying for it we said well look that's expensive and you know maybe we can work something out he said that is not the way you should think this is my mistake I will cover it what if you made a mistake in the code that cost your company $110,000 would you behave like that person would you write your company a check for $10,000 I can't tell you that that's what you should do because the company is asking you to take risks outside of your ability to cover them however you should look at that and think I just cost the company $10,000 I need to figure out something I can do about that and probably the only thing you can do is make sure it never happens again I expect QA to find nothing uh now what else should we expect QA to find I don't expect them to find hordes and hordes of bugs why would QA find anything the code was in our hands we gave it to QA why would they find anything now sometimes mistakes happen sometimes things are overlooked I can understand if QA comes back with a bug but I don't want them coming back with a list a library QA should wonder why they're [Laughter] there and it's our job to make them worried about that when QA finds nothing we've done our job when they find something we should react how did that happen how did that bug get out to QA how' that happen and we'll find that hole and we will fix it under no circumstances should we ever expect QA to find something there have been cases I know in the past where deals have been been struck between the programming staff and QA we're not going to talk about that at Great length except to say those deals are no longer in effect you will not supply them with bugs that justify their job and they will not hand them back to you so that you can hand them back to then again we are a team and team members cover for each other imagine guys on a sports team each one has a position to play but each one can play someone else's position because someone might get hurt or imagine being on board ship everybody's got a job to do on board ship but everybody knows how to do someone else's job because someone might get hurt they cover for each other I expect you to do the same I expect all of us to cover for each other I don't know how you're going to do this but what it means is that you're going to have to learn someone else's job perhaps several other people's job you will have to become familiar with their code familiar enough to deal with it you will have to stay aware of it at all times you can't just get one little review and then walk walk away from months you will have to somehow I don't know work with these other people on a regular basis to learn what they're doing understand where they put their files and how they create their their ant files and their make files and everything else that they do so that if for some reason one of them is absent you can step in and cover for them I understand there's this practice out there called pair programming I don't know if that's what it's going to take but I do expect that if John disappears the rest of the team can continue to make progress without just waiting for John to come back I expect honest estimates and what is an honest estimate the most honest estimate is I don't know when you don't know that's what I expect you to say now I expect you to find out but if you don't know how long something's going to take I expect those to be the words out of your mouth if you have some idea of of how long it's going to take I want you to be very careful about how you say it if you say well I think it might take three weeks you have lied it won't take 3 weeks what you're trying to say is it might take one week it might take 10 weeks and maybe it'll take three what I want to hear from you is that range I want to know what's in your head about the uncertainty I want you to tell me Well the most likely answer is three weeks but there's a good chance it could be 10 weeks and a moderate chance that it might be two I want you to give me the shape of that curve and then I want you to constantly up update me tell me over and over what's happened to that curve is it shrinking is it widening every week I want you to say oh well we we've got new information we think we can tighten up that curve I do not want you to give me a date because a date is a lie a range is the truth and please make that range realistic I don't want anybody shortening it up on one side or the other I don't want you know sometimes look I mean we're all human sometimes my people the managers are going to come to you and they're going to say oh can't you do it faster and you'll have to say no because you were hired to say no you're professionals you are the ones who know you are the only ones who could say no you're the only ones who have the knowledge to be able to utter those words no and that is the most valuable thing you can say it will not be well received no one will H shake your hand for saying no no one will patch you on the back for saying no but it will be the thing you will go home that night and say to yourself God I get a good job today I said no what's the worst thing you can say no yes is fine as long as you believe it yes is fine if you can believe that you get it done say yes be very careful about saying yes if you say yes I'm going to hold you to it if you say no oh I'll hold you to that too what I don't ever want anybody to say is that they will try please tell me what you are going to do differently because you have now used the magic word try how is that going to change your behavior in any way what new magical thing have you pulled out of your pocket that allows you to say oh oh I'll try I know what try means you say try to me when you want me to go away okay I'll try now get out of here I know what this means I expect and I I don't know why it's necessary for me to say this to a room full of programmers but I expect automation I do not expect you ever to force some humans to do a repetitive job for example testing the system why in the world would we have human beings repeat the same test scripts over and over and over again at immense cost when we could have a computer do that I expect you to automate your test scripts your build scripts your deployment scripts and everything else that you want your machines to do everything should happen at the click of a button I don't expect you of all people to tolerate manual Behavior I expect you to continuously and aggressively learn a programmer is like a doctor a programmer is like a lawyer a programmer is someone who is constantly reading constantly learning constantly ahead of the curve we see languages come and go you should know every one of them as a new language comes out you should should be on top of it as a new library comes out you should know it as a new technique comes out you should be aware of it you need to be ahead of the curve and you do that by learning and oh by the way I'm not going to pay you for that I expect you to do that at home not my time thank you I do however expect that you will be doing it and if you don't there are people who do I'll find them and I expect you to teach I want you to take the new people coming in and teach them every day I want you to be talking to them and showing them how things work I want you to be Pa programming with them so that we are bringing out the next batch of programmers who will not make the mistakes that we have made whether or not you wear a green band I expect everybody to act like they are wearing a green band I expect professional behavior from all of you thank you I am pleased to be your new CTO are there any questions then you have a meal to eat I suggest you eat it thank you all for your attention [Applause]

from
Talks
added
2026-10-10
likes
0

similar

  1. Talk - Speed Perception and Lighthouse ldnwebperf.org
  2. Speed as a habit firstround.com

    By Dave Girouard.

  3. 7 minutes, 26 seconds, and the Fundamental Theorem of Agile Software Development youtube.com
    video · 8 min · jbrains762 category #talks link ↗
  4. Lighthouse developers.google.com
  5. Simplify Challenging Software Problems with Rocket Science youtube.com
    video · 23 min · Confreaks category #talks link ↗
  6. == ? === ??? ...#@^% youtube.com

Talks › Categories > Methodologies: “by Robert C. Martin (Elapse Technologies 2012) [45:03]”