Select text to annotate, Click play in YouTube to begin
00:00:04
a programmer really doesn't get into that level of thought process for the first 10 15 years it's an issue right because there's a lot of reinventing the wheel happening all the time oh sure if it's a good idea the good idea tends to spread unless there's somebody in the management level working hard to make it not spread try and write about the things that don't change people talk about productivity while at the same time doing everything they can to prevent it
00:00:30
from happening and the well because they don't understand where the productivity comes from fred brooks came up the other day in a conversation i'm going so here's a book that's really old right the fred was right yeah yeah exactly yeah but with the exception of the chapter on punched cards pretty much everything everything in that book is still relevant people not thinking enough about whether is that right but that seems like an odd well
00:00:57
i i think you do want the old goots around but but you know here's one that's what 25 years now why doesn't anybody read this book so i wrote this one not too long ago what are the ethics of being a programmer that may be the last book i write this episode was made possible thanks to kotopia.tech hi bob hello alan how are you good how are you
00:01:25
i'm just fine so we are tasked to talk about what are the two old but classic books today and i it was interesting because i you know i was reading through them in preparation for this again and i haven't read them since they came out so it's been a while and one of the things that i had to say looking through it is thank god we don't have to deal with ejbs anymore and all of that stuff but like a lot of the classic books there's still certainly
00:01:54
a lot of stuff in there that's just as relevant as it was the day you wrote the books um you know particularly the clean code book is that i look at a lot of code and clean is not a word that i would choose to describe the code that i'm looking at so we could start out i guess by talking about i'm kind of curious as if you were to write it again how would you change it based on on what's happening now as compared to what was happening then well it's an interesting question
00:02:24
um i might choose a different language you know martin fowler rewrote the the refactoring book and he changed the language to javascript right i don't think i'd pick that language um maybe i maybe i'd use python or or a language that's on the ramp up getting more and more popular if i had my absolute druthers i'd use closure because i think that's the language of the future
00:02:50
yeah closure people always say that they've been saying after 20 years though so it's taken a while but i think it's on its way up but um the principles in the book i would not change much this is one of the one of the things that i focused on in all my books is to try and try and write about the things that don't change you know there's a strategy with books that if you write about the stuff that changes a lot you'll be able to sell a lot of books for a really long time
00:03:20
and then you just have to write another book and another book and another book and i've taken the opposite approach right i want to write about the things that don't change over time so that they are relevant for a very long time and i i hope that the clean code book and the clean coder book and so forth have remained relevant over the last decade or so that they've been published well they have at the certainly at the level that
00:03:47
they addressed the problems you know it's another question something else we can discuss is that one of the things that i respond to when i read all books that are basically heuristics right books of kind of rules right things to do to make things do right is that um they're very kind of context specific in other words when i look through your book i'm saying this is great if what
00:04:12
you are is a programmer and you're looking at the code but you're not looking at the architecture right because it's all focused on starting with the code and refactoring and tdd and all this wonderful stuff that programmers should be doing of course but um i i look at some of your advice which is great advice but some of those issues could be solved by thinking architecturally rather than thinking just in terms of the code yes things like naming and that kind of stuff yes um so
00:04:43
how do you fix that right people are i guess how do you fix it on many levels right both on how do you fix the architecture but also how do you fix people not thinking enough about whether is that right but but you know i think about things like ddg right dddd has been around forever but it's suddenly gotten popular again because of microservices um is it my disturbances that did that i think it was microservices because people started
00:05:09
people started saying oh microservices are bounded context which is not true but people started saying people started saying it anyway and all of a sudden people were reading about ddd because they read that microservices were bound in context so i must at least something good came from microsoft well i'm not as negative on them as you seem to be but the the the issue is that ddd is suddenly on the scene in a way that it wasn't that's good which is a good thing right because it gives us organizational principles that help make the code better make it
00:05:36
cleaner right is it it uh you know helps a lot of stuff it helps with names it helps with everything and um so the problem that i have often though is that when i come in as a consultant to a company the programmers are not thinking architecturally at all they're just they're just thinking about the code that's in front of them and it limits them it limits what they can do right it limits how much they can clean stuff up but it limits there's limits everywhere and i would like to get rid of those and i don't know how to do it right as people are really
00:06:03
set in their ways so why don't you start enough old coots like us here well there is that this is something i talk about a lot right is that the fact that um the the number of programmers in the world grows at an exponential rate and that leaves the the number of old people compared to the number of young people at an impossible ratio you know yeah you got half the programmers in the
00:06:31
world have less than five years experience right and this continues to be true as long as we're growing at this crazy rate that that rate is going to have to slow down because there's only eight billion people in the world and we're starting to get within range right so okay it's a vampire problem right if a vampire bites two people and they bite two people and they bite two people eventually everybody's a vampire right it doesn't take that long it does not take that long so you know i write books like this and and uh
00:07:06
i wrote this one a long time ago which is you know just full of of this kind of you know stuff that you learn the hard way after 15 20 25 years yeah and i i kind of hope that that makes its way out to the younger folks because there aren't enough guys of our experience on teams directing those teams yeah but it's not just a number of
00:07:34
programmers issue it's also a ageism issue and uh a youth culture issue and lisa i see that out here now admittedly you know i'm in the valley so it's worse here than it is in a lot of other places yeah but um but there we are right and the the um it's an issue right because i there's a lot of reinventing the wheel happening all the time oh sure it didn't have to happen oh sure yeah
00:08:00
yeah and you know the ageism and youth culture how would you not have a youth culture if half the programmers always have less than five years experience everybody looks around and they say well everybody here is in their twenties this must be a a job for people in their twenties and and you got the one guy in the back who's 40 or one guy in the back who's 50 who's sitting there going
00:08:24
you know wait a minute i've been doing this for an awful long time why are you telling me this is a youth culture but if of course that's the people coming in yeah and people are paying attention to your books right well i hope some of them are i hope so right but so there's wisdom in the books it's that people are so why is it that you'd be willing to read a book that has stuff in it written by an old coot and no offense since i'm one too and the and at the same time
00:08:50
um the the you don't want the actual old coots around it seems like an odd well i think you do want the old goots around but but you know here's one that's what 25 years now is anybody reading this is there is any any of the young kids out there reading design it's a good question you know what i hear about design patterns design patterns are an old idea that's now out of date because our modern languages take advantage that's complete nonsense absolute nonsense
00:09:18
but i hear that over and over again here's a bug i'm sure you're familiar with this one why doesn't anybody read this book full of good information you know tom demarco structured systems analysis and specification great ideas in this book why doesn't anybody read this book there's tons of information out there yeah it's old and good i was just thinking about that in
00:09:49
terms of fred brooks came up the other day in a conversation and i'm going so here's a book that's really old right it's frederick yeah yeah exactly yeah um but with the exception of the chapter on punched cards pretty much everything pretty much everything in that book is still i love it i always keep them handy you never know when you're going to need one pretty much everything in there is irrelevant and i you know it's particularly brook's law itself is relevant
00:10:16
people don't seem to get that right all of the no estimate stuff that people have such fits about that's all in fred brooks right fred is talking about it talking about how bad estimates are and how we shouldn't be basing basing our planning on estimates and stuff back then and that all seems to have gone by the wayside which is really unfortunate but but there is some there are some evolutionary things the other day as i was i was talking to um um who was i don't remember anymore but another problem with being an old coot but
00:10:47
we were taught we were talking about the problem of design patterns in the context of simplicity right and that the obvious negative of design patterns is that they're complex they add some complexity to the system and you know you had the the fool me once for me twice rule in one of your talks or your books or something which is applicable i think right just do it do it as simple as possible and then add the patterns when in refactoring stage when it does and um but a lot of people don't get that subtlety and they'll read something like
00:11:19
clean code and they'll you know you're you're talking about open closed for example but that pulls in the design patterns right it pulls in command and it pulls in strategy and it pulls in dependency injection and all the stuff that adds complexity to the system and i you know the biggest problem that i see when i look at code um when i come in as a consultant is it's all way too complicated you know half of it doesn't do anything and half of what's left used
00:11:44
to do something but nobody looks at it anymore and there's all the all these all this code solving problems that never happened because somebody thought they might happen you mean it looks like a whole bunch of kids have been tearing through the place and making them it does but it also you know a lot of it comes from the old waterfall thinking that it's like expensive to make changes so we we want to try and think of everything in advance right and um we need to fix that right and the the
00:12:14
the stuff that we're talking about is kind of complicated in a way because there's subtlety to it right there's nuance you don't it's not just a bunch of rules that you followed by road right you've got it's got a it requires thought and it requires understanding yes right and so how do you develop that right how do you get people to develop it well these these are the the the long term question how do you solve world hunger well yeah so
00:12:43
did you ever take a martial art yes okay so i did two and and the way our instructors taught us is that they would have us on the first day right they would have us on the mat and they would teach us one move and and in my case it was jiu-jitsu right so they would teach me one move escape from the opening okay you're gonna do that and they would have us repeat it and repeat
00:13:09
it and repeat it and go home and practice it come back repeat it repeat it repeat it and when they thought we had gotten that move they would add another move yeah and this just would continue for a year or a year and a half and by the time you know you were willing to get a uh you were ready to have a belt increase and then they'd add more and more and more and eventually you got
00:13:33
to the point where you got a black belt right and during this entire time it's all this rote repetition of these moves that you've focused for months learning and perfecting and then you get the black belt and everything changes and all of a sudden it's now we expect you not to do any of that now we expect you to integrate you have just begun you are
00:14:00
now a student and you may now integrate and we don't want you doing those moves anymore we want you figuring out from the situation you're in what context and how to use what you've learned to escape or or dominate the situation and that's when the the true learning really begins we have an industry where you go you get kids that graduate from college all they've learned is three
00:14:30
of the 50 moves they need right and they're thrown into the environment where they have to write code and that's all that comes out is those three three moves and there's nobody to help them learn the other moves and there's nobody to help tell them that the real goal here is to get those moves so well under your skin that you can begin to integrate them so you were talking about the
00:14:54
nuance right you were talking about the complexity well that that takes time to learn time to get good at a programmer really doesn't get into that level of thought process for the first 10 15 years in my experience maybe it took me that long yeah but it could go fast i'm a big big mob mob programming ensemble programming kind of guy programming good idea yeah and one of the reasons
00:15:21
i like it it's because it helps shorten that curve a little bit because you're you're collaborating hopefully with at least a few people that really know what they're doing and i think some of it rubs off right is that or even even if you only know three things right the other people in the mob know three different things so by the time as you start working together collaboratively you all start learning the things that the other people learn and it all goes a little bit faster but
00:15:46
i'm still seeing a lot of resistance to that right mod programming is like one of those things where when i do a mob programming workshop i come in and everybody's going i don't know that this can't possibly work and by the end of the week they're going how could we ever have been programming without doing this and the but making that transition is hard right it's people they have to experience it to really kind of get it to the point where they're willing to try it and um you know it gets us back to the how do you make changes problem right is
00:16:12
that the the bunch of kids in the room that don't think everything's perfect and they and management is fighting against them right some manager's going well well five people sitting around watching one people one person work we can't have that can we and the the um it's it's it's a hard problem it's like i guess i think about this because this is my life it's trying to convince people to do things that they ought to be doing but they they aren't and resist yeah
00:16:39
i've i've been through that mill so many times you're trying to convince trying to that's why you know why i'm an old i don't try and go you can't keep it right and you're right you can't convince you can demonstrate you can exhort you can you can encourage and a few people will get it a few people will learn and they will follow and and then what you've done you consulted you
00:17:07
is you have started a war inside that organization and there's suddenly a group of people it has one set of values that are opposed to another group of people who have a different set of values and they cannot coexist somehow or another they either have to learn from each other or there's going to be a divorce and that's something i've watched over and over again is you know the people that i that i teach and exhort will either eventually become the only people in the team or they will flee the team
00:17:40
and i don't think it works any other way sometimes you can get and you wonder how you wonder how a captain a ship's captain gets the entire crew to act in unison how did how do they do that yeah how does the military manage to pull this off well there's marquette's books right you read marquette's books i don't know i haven't read mark you
00:18:05
should have right turn the ship around it's a great book oh okay and um he was a submarine captain so it was a small group right is that the i don't know if you can expand that out to to business size but which is what a team of what 50 or 60 in a submarine that's still a pretty good good size just a good size it's a good sized group but it's not like an enterprise with six thousand yeah and um he basically empowered everybody he said you know i can't tell you how to do your job
00:18:31
you can do you know how to do your job better than i do so i'm not going to tell you what to do i'm going to give you a strategic directive and you guys figure out how to make that work and um it did pull everybody together right is that it everybody was everybody felt empowered right they felt they felt like they were part of a bigger thing rather than being ordered around and really i think helped them a lot and you know and i do see that social thing happening in groups too i hate open offices but in one of the big open offices i was working in we were
00:19:01
doing tdd and and mod programming and that kind of stuff and i was talking about creating your own workspace and the team took it took me seriously and they literally went out and bought a couch and they and they bought a big monitor and they plonked it down on a desk right in the middle of this open office right so they had this little lounge area where they were sitting doing their mob programming staring at the giant monitor and people would walk by and they said what are you guys doing and gradually i was watching that infuse out into the rest of the organization
00:19:29
as they explained themselves and people looked at it and they said oh that's interesting um so it's not a war so it doesn't have to be a war it's that it can it can be a sort of if it's a good idea the good idea tends to spread unless there's somebody in the management level working hard to make it not spread well i've seen that one yeah but so what you were just talking about reminded me of something that happened to me about 20 years ago when we were very early on doing agile consulting
00:19:59
and one of the things that we would do is we would advise our client before we ever came out to do the teaching of test driven development and pair programming and all that stuff before that we'd say you got to get your programmers out of offices and into a into a room and set up with tables and we'd give them a kind of standard layout and and they would do that and then um we'd get this phone call and it happened more than once and we'd get this phone call
00:20:26
and then the managers would say things are so much better now these people are actually getting things done and they're collaborating and they're talking with each other and okay yeah if you get people talking to each other and and working together they tend to work things out pretty well but on the other hand i also participated in a number of events like that where there
00:20:51
was a subgroup of programmers in this in one case who were literally um sabotaging the rest of the team because they could not tolerate the value shift right and and probably because it was depriving them of some status that they had previously had and so they were they were literally literally laying plans to sabotage what was going on and you
00:21:17
know once we discovered it um well they weren't at that company anymore yeah you know that's the way it has to go the people complain about that right is they say oh but if we're gonna be agile we're gonna have to get rid of these people that are not willing to be agile and i go well yeah and they're going but we can't do that right and that there's some there's tension in there too you know one of the things that i recommend to bigger clients is that if you're really going to try and do this
00:21:41
whole agile thing you've got to provide an out for the people that don't want to do it that's humane yeah we're going to find you another job yeah yeah you don't have to worry about it right as we'll even pay you until you find another job but you obviously can't work here but we're not going to make your lives miserable as we'll find something that you can't do and things go much easier than when you have a bunch of middle managers fighting tooth and nail for any kind of agility because it damages their status and they you know and they don't want to do it and the
00:22:10
it's a big deal but yeah i also worry about this in the context of remote because remote doesn't it doesn't have to be but it can be very isolating um i look at hunter hunter irrigation right that where woody's all first came up with or his team at least just came up yeah and they're still they were 100 mobbing shop right right six or eight teams mobbing 100 of the time and they all went remote and they're all still doing it they're all just mobbing every day
00:22:36
they're just doing it on zoom instead of doing it physically in the space and that works but there's not much space there to infuse for new ideas to infuse out to the organization as a whole in a remote world because you don't see the whole organization you just see the team that you're working with so it can be very limiting and i i kind of i see these trends now right dhh talk about all remote all the time for everybody and that can be very limiting i i worry i worry about that it's there's a siren call of not commuting but
00:23:04
on the other hand i worry about that in terms of the organizations growing the virtual connection is adequate for some things but it deprives you of so much human contact and so much interpersonal stuff that can really only be done face to face that i'm with you i agree it's there's something limiting about it and i i fear that we are going to go through a decade of
00:23:34
very sterile um collaboration i'm not quite sure what the word is well i'm seeing it happen both ways right i'm seeing both i don't use the word introvert because people use it wrong but there's a class of programmer that just doesn't like to be around other people yes has nothing to do with introversion right so just to get this term straight but yeah but um they love the whole
00:23:57
i'm going to work at home remote for the rest of my life and i don't know i don't ever want to talk to anybody and then meanwhile there are a bunch of incompetent managers going oh we can we can take all of this money we're spending on offices and we can make our employees spend that money instead therefore saving us money right is that they have to like set up an office and do all this stuff that we would normally have to pay for but we don't so that's great right because we don't have to pay the money anymore we don't have to pay money to set up their offices anymore yeah
00:24:24
well you put these two things together and it seems deadly to me and um i worry about that is that the the i like you know they talk people talk about productivity while at the same time doing everything they can to prevent it from happening and the well because they don't understand where the productivity comes from yeah right or perfectly reasonable to sit there and say well you know i could i don't need a parking space i don't need parking lots i don't need
00:24:49
all this infrastructure everybody can work from home we don't even need a building anymore and it seems like you're saving a lot of money but you don't know what the cost is and by the way that's that's the same thing that happened 20 years ago with offshoring all you know all of a sudden we're gonna we're gonna have people in x country and people in y country they're all gonna write this code and it's all gonna come here and it's gonna be perfect that worked out well pretty well yeah but it took 10 years 15 years for it that's the fear
00:25:26
right that's the fear another another 10 years and all started by this coven thing and we're going to be living with the echoes for a good long time yeah is there a way to fight back how do you fight back against it well i mean you and i are sitting having this discussion and if there's a bunch of people listening to it maybe they're gonna put a little thought into this like well you know maybe we should have people come back to the office every once in a while and actually look at each other's eyes and you know smell each other
00:25:59
actually eat the pizzas yeah there's this effect you know staring at a screen and and the effect is a lot like uh being behind the wheel of a car looking at the windscreen it's a lot easier to call someone an idiot when you're when you're holding onto the wheel of the car looking through the windscreen and and if you're on zoom all you have to do is kind of mute for a second and you know say something under your
00:26:27
breath and then unmute yeah and that is uh that is a weakening of the interpersonal connection yeah i just don't know how to make that point it's also it's also exhausting at least it is to me you know i i've been having to do a lot of zoom teaching and i can't go for more than half a day before everybody is so exhausted that they can't absorb anything anymore so here we are it's a year into this covert thing right and i have literally not been on
00:26:53
a commercial aircraft since last march now i own my own airplane so i can swim around a little bit but you know a commercial aircraft i haven't been on i got an invitation from a a college in michigan about two months ago to come out and give a talk and so i hopped in my plane and i flew out there's a real quick flight and all of a sudden i'm on stage and i'm talking
00:27:19
face-to-face with a group of programmers and it was just wonderful oh yeah and god and it's like this i forgot what this is like i forgot what it's like to look at people in the eye and see their response and have the the person-to-person feedback uh and so i'm just chomping at the bit so that this can start again because yeah uh i think there's i think it's
00:27:44
very harmful the way we're doing it now and it's the way it had to be done but it's harmful well let's hope for the end of coven there's anything you want to talk about i've been sort of driving things you want to drive for a while what do you want to talk about let me tell you what i'm up to um let's see so yes i did write clean architecture a while ago what else did i write not too long ago oh yeah let's see i don't think i have it up here i got a book over here so yeah there it is
00:28:12
you know i did these zoom things and then i get a bunch of books out and i leave them in a pile yeah so i wrote this one not too long ago i didn't even know that one existed yeah clean agile and this this town is a rant this this is me you know the old curmudgeon telling all the young kids to get off his lawn i already walked through all the agile principles one by one saying you know this is how we did it 20 years ago this is how it still should be done today and all the stuff
00:28:41
that everybody's trying to do probably not a great idea anyway that's the uh that's the old man's yelling at everybody about agile and i'm in the midst of another book now which is going to have the title i think it'll be clean craftsmanship and that's a book about disciplines ethics and standards discipline standards and ethics in that order
00:29:08
and it tries to climb the hierarchy you know saying okay we start with disciplines of course test driven development is one of is a big one yeah refactoring simple design things like that and then climb up another level to the standards what is it that the executive expects you know we talked about the ship captain the submarine captain right how do you get the the crew to behave as a unit and you said right okay well you empower them
00:29:35
to solve the problems but you give them the problems to solve right you set the expectations so the standards are the expectations how do we expect a software developer to behave and then once you've got that's once i've got that all spelled out then i go through the ethics what are the ethics of being a programmer that may be the last book i write unless i write a book on closure
00:30:06
that one will have huge market yeah you know what maybe a little enclosure might sell really well who knows subscribe to the go to youtube channel now and join the experts in person or online at any upcoming go to conference using the promo code book club visit gotopia.tech to learn more
00:30:45
bye
End of transcript