[0:02]Hey, this is the Level Up Engineering podcast. where we talk with some of the most successful engineering leaders who reveal actionable management insights that help you take your developer team to the next level. This episode is brought to you by Coding Sans, a software development agency building web applications from design to delivery with React, Node.js, and Angular. Check them out at codingsans.com. Welcome to the Level Up Engineering podcast. I am Karolina Toth and I speak with engineering leaders by weekly. It is my pleasure to welcome back Uncle Bob. he was on episode 15 of the podcast. He is behind everything clean code, so, um, if you are a programmer or a technology leader, uh, you better know his name and I'm sure most of our listeners will probably know you and of your work and perhaps your work. Today, um, we are going to talk about a topic that we actually got started on um during our last conversation. In episode 15, we ended on a note talking about ethics in software development and how it can be applied and and what kind of a professional standards we need to um adhere to as software developers. So, this is what we are going to talk about today. Without further ado, um my guest is Robert C Martin, aka Uncle Bob, and um I would like to first ask you to tell a few words about yourself to our listeners. Oh heavens. Um, certainly. Um, let's see. I, I became a programmer, um, probably at the age of 12, although no one would hire me at the age of 12. But I wrote my first little bit of code at the age of 12 and the year was 1964. So, so, um, let's see. I think that means that I will have been programming for 58 years now, I think. Um, I got my first real professional job as a programmer at the tender age of of 16, although it was a very short-lived employment. Uh, I got my first permanent employment as a programmer at the age of 18 and I've been programming ever since. That's just, you know, what I do. I like to program and yes, I have, you know, over the years I've had a career which led me into management and then led me out of management. And then I founded a company and then I dissolved that company and, um, what I really like to do uh is sit at my keyboard and write code uh and explore the beauty of of um coding cleanly and efficiently uh and ethically. I love that. Thank you. Thank you for bringing it back to our topic. Um, so, if there is an individual contributor or a technology leader listening to us, what would you tell them? Why should they care about ethics in software development?
[4:19]Our industry is very young.
[4:26]Um, the very first bit of code to execute on an electronic computer was probably in 1945 or 1946. And that's a a fairly short period of time. That's less than 80 years, less than the lifetime of a human being. Uh most human beings. And and so, we have not yet had the time to understand the ethical impact of what it is that we do. For the first 50 years, the ethical impact was relatively small. Computers did not drive everything back then. Even, even up to 30 years ago, computers were not in everyone's homes. We did not have uh personal computers. We did not have computers on our wrists or or computers in our pockets. We did not have computers mounted on the wall. We did not have computers in our microwave ovens or our dishwashers or our washing machines or our cars. Uh, computers were far away from us most of the time. Nowadays, however, that's very different. There are computers everywhere. The the modern human being in the Western world, at least, and probably in most of the world, is surrounded by a sea of little computers, everywhere. Their phones, their watches, their thermostats, their clocks, their their main their appliances, their cars. And our civilization is dominated by software. Nothing happens in our society nowadays. Nothing happens in our society without software being right in the middle of it all. Our society, our civilization, depends on software. And that means it depends on programmers. And those programmers, whom everything depends upon, have no code of ethics. Have virtually no profession. There is nothing that we profess. There is no set of standards, no set of disciplines, no base ethics that we all agree are the right things to support our civilization. And I consider that to be a very unstable situation. Something is going to have to give. Because sooner or later there will be a disaster. And that disaster will dominate the politics of the time and cause legislation to be enacted that deeply constrains our industry.
[8:29]Right. Right. And we should probably have a united front as to what we stand for in software development. That would be a good thing.
[8:45]All right. All right. So, now before we get into how this is actually going to be done, um, let's talk a little about how it can be applied. Um, what what are some things that you either foresee as as possibilities that are happening? Um, if I recall correctly, we talked about autonomous cars last time we talked. And and how they propose a huge threat. Um, something that usually or originally was only discussed by philosophers, but is now an actual reality for for people who own Teslas. Um, so so how do you see ethics being applied in software development? It's not just Tesla's, by the way. Yeah. Most modern cars nowadays have some some amount of automatic control, whether it's the braking system or the steering system or the engine management system. There are computers sitting in the middle of all of those devices, uh exerting control influences over the head of the driver or or uh in in response to the driver. So, so this ethical question has taken on quite a bit of meaning even today, even before we have truly autonomous cars. So, how does this, how does this impact us? How does it apply? Well,
[11:15]we as a as an industry do not understand, do not have a set of quality standards. What is quality software? What what does it mean for software to be well-made? Do we understand that? Do you understand that? Do we have a an agreed upon framework that tells us that this software was well-made? We'd like to have that, of course. We'd like to know that the software in our cars was well-made, the software that decides whether or not the brakes should truly be engaged. We'd like to know that those that software was well-made. We would like to know that the software that that run in the airplanes that we fly in, that we would like to know that that is well-made. How do we make that determination? What standard can we use to decide whether that software is well-made? And at the moment, we have no such standard. There are independent bodies that try, um, but they don't often succeed. And so we wind up with, oh, uh people being killed by the uh the malfunctioning of the software in their cars. Or people being killed by the malfunctioning of the software in the airplanes they fly in. Uh one can imagine uh much worse things happening as well. So, without this kind of background of disciplines and standards of ethics, we have to put a big question mark above our heads and say, well, what, what does it mean for software to be well-made? And how well-made must it be for a microwave oven as opposed to uh a jet airliner? Right. What's, um, what does it mean for you? I, I have some ideas as to what you're going to say, but I'm really curious. In your opinion, what's, what's quality software? Quality software is software that the programmers know works and know they can adjust easily. Quality software, quality software is software that is easy to change. It does not impose uh a high burden of cost on the customers who want that software when they want changes to it. Quality software is software that works according to what the uh customer demands. That it it, um, it performs the job at hand without the risk of strange behaviors or crashes or rebooting every midnight or whatever the the uh the problem is. And the programmers know that that software is correct. One of our, one of our problems over the years has been an ethical problem of deploying software that the programmers are not sure of. You know. Now, if you're talking about, you know, a microwave oven, you might have a lower standard than uh a jet airliner. You still don't want to blow up your kitchen with your microwave oven. You do not want to blow up your kitchen with your microwave oven. But there's even more to it than that. Most microwave ovens nowadays have the option of being on your WiFi. Most refrigerators have the option of being on your WiFi. Most thermostats have the option of being on your WiFi. And if they are on your WiFi, they are on the internet. And if they are on the internet, they are vulnerable, possibly vulnerable to being taken over by malicious characters in the outside world and use, then used to attack others through denial of service attacks or other kinds of internet malfeasance. And therefore the, the implications of having any software at all put on the internet is, uh, pretty severe. I am thinking, uh, first of all, I'm thinking I live, I live in the 20th century because my fridge is not on my WiFi, but I, I really do see what you're, what you're getting at here.
[17:15]So, um, is there something specific, the way to lead some some ideas from you perhaps as to how can they make their voices heard? I have written a book. The book uh the title of the book is Clean Craftsmanship. Uh and the the content of that book is a set of disciplines, standards and ethics, a proposal for a set of discipline, standards and ethics. Uh and I I would start with that. Start there. Read that book, see if that resonates within you. See if that, if the the standards and the ethics and the disciplines within that, highly technical book. Deeply technical, lots of code and also lots of behavioral ideas. See if those, those disciplines and standards and ethics resonate with you. And if they do, then yes, continue to talk about it with others and adjust your own behavior. Again, it comes down to personal responsibility. Adjust your own behavior to make sure that whatever standards, disciplines and ethics you adopt, you follow those. And they are the, you know, the fundamental principles of your career. You can talk to others. You can form groups inside your company. Um, why wouldn't you do that? Get, get a lunchtime group together, get a uh a Saturday group together. Talk about these issues. Talk about them with your managers. You know, you can ask your managers, do you want us to ship crap? I'm going to say no. And they will also impress upon you the importance of time. And time is always important, of course. But then, then we need to have the discussion, you know, the, the negotiation. Well, okay, time is important, but quality is important, but ethics are important. How do we balance that? And that is, that is always going to be a matter of discussion amongst all the principles. A discussion that generally does not take place right now. As this continues, hopefully, this will go out to customers. You can imagine a company saying, our software developers have adopted a set of discipline, standards and ethics. And that means that you, customer, will have greater security, greater comfort, greater uh value in the products that we supply. You can imagine that becoming a marketing message. You could imagine the business world turning and saying, oh, wait a minute. We, we supply the quality, not just the speed. I, I use a, um, I use a software product when I'm in the airplane. Uh, it's a software product called for Flight. The developers of for Flight, I, I have the highest regard for those guys. I have never seen this software crash. I have never seen it misbehave in any kind of uh significant way. Every once in a while, there's a minor thing, but but, you know, generally speaking, when I get in the airplane and I'm using that piece of software, I feel pretty comfortable with it. And that is a, the highest praise I can give to a set of software developers. I will allow my life to depend upon what what those guys have done. Right. And that, that's a very powerful message. I love that. So, I really do. I am hearing that we need software developers who are responsible for their work. We need software developers who do the best they can. Um, so they are, they are professional in the, in the very hard skill sense of the word. Um, they follow clean code principles and and, um, they will remind their colleagues perhaps if uh their colleagues haven't been following their clean code principles. And also a software developer who is open to discussion and can stand up for um his ideals, um as to what kind of software they want to release.
[23:44]So, um, the third thing really keeps resonating with me with the more people I talk from software development, um, the more it's highlighted that conversing and communication is really important and you should also, you know, have those skills developed if you haven't yet, even though you are a software developer. And our conversation makes it sound like especially because you're a software developer. Thank you. I was not the one who said it. Dear listeners and watcher, I wasn't the one who said it. Thank you so much for stating that.
[24:59]Um, dear listeners and watchers, um, it was my pleasure to have Uncle Bob on Level Up Engineering again. Thank you so much for blessing us with your time. Um, I think this conversation will give anyone food for thought. Um, and I, I hope we get to speak again at some point in our lives because this was fun. Thanks for staying with Level Up Engineering. If you enjoyed this podcast, so will your friends. Share this episode on your favorite social networking platform. To stay up to date with our content, follow Level Up Engineering on Spotify, Apple Podcast, or Google Podcast. Brought to you by Coding Sans, a software development agency building web applications with Angular and Node.js. Check them out at codingsans.com.



