Find me a user who's decided to use a product based on clean code, and I'd love to interview you on my main channel! Until then, it remains something software developers care about -- and probably for good reasons!
📄 Auto-Generated Transcript ▾
Transcript is auto-generated and may contain errors.
all right it is Monday December 23rd I'm headed into the office I got a topic that I'm a little heated about so I'm going to try to uh take my own advice keep it cool as I'm talking through it CU I'd like to do it justice um and actually talk through the points and not just be uh ranting about things although ranting feels kind of good I still want to be able to make a point uh that is logical because we're going to be discussing some something that I feel like is highly illogical and I'll have to come up with a good title for the video but you probably clicked it because you saw the title and the whole point of the conversation is that customers do not care about how clean your coat is that's going to be the focus of what we go
through I do have to stop for gas so I need to remember to edit that part out so you don't get stuck in the car while I'm not even here um but this um this picked up this is something I mean I've seen before but uh over the weekend there was a LinkedIn post obviously it was on LinkedIn right um and someone was basically saying like I can't believe I have to defend this but like essentially it's ridiculous to say that customers don't care about clean code because they absolutely do and then they tried to make some points and they entire post was about comparing it to comparing clean code for software development to a clean kitchen in a restaurant now um I have so many things that I want to talk about here and I'm actually amazed it says it's only like less than
30 minutes to the office today so I literally might have to split this into two videos as I get ranting here but um the first that I want to call out just with the the whole framing of this conversation for how it started is um this is what we call a false dichotomy fallacy okay um the entire argument that was being presented here everything came back to well let's just go back to this restaurant example right like if we go back to the clean kitchen you you want a clean kitchen right you wouldn't go to a restaurant that had a dirty kitchen would you so why would software why would people buy software where the code's not clean and I mean if you form your entire basis for an argument on something that's completely irrelevant it's going to be really difficult to have a conversation
with you because you've already rationalized this other mental model and it's just not applicable so it's like arguing with someone that can't even talk about the same thing okay so so I wanted to start this entire thing by saying when you have uh these types of conversations going on um it's just a false dichotomy it makes it really difficult to have a logical debate when someone's anchored everything they have to say to a false dichotomy okay so the first thing that I wanted to kind of talk through here is um sort of like this disclaimer I absolutely take the stance that customers do not not care about how clean code is I absolutely take that stance what that does not suggest and I want to be very clear about this from the beginning because I think people hear that and if they take the other
stance or they're like no I think customers do they automatically think that I'm suggesting that we should not have good coding practices right by saying that customers don't care if I say that that must mean that I'm suggesting Engineers should not have good coding practices it's not the case at all what I am saying is that customers don't care about that customers want value they want their problem solved right they want to have value delivered to them at a price point that they feel is fair or a good deal right they they don't want buggy soft software they want their problem solved and they want to pay ideally as little as possible for it and they want their problem solved fast these are things that customers want right like these are things that customers want then people the argument starts to become well you need
clean code in order to do that if you have messy code it's going to be hard to not have bugs it's going to be hard to deliver software quickly right and it's that's not necessarily false but who cares about that software Engineers care about that we care about that because we see that as one of the tools that we have control over to try and enable delivering software to customers holy crap it's bright customers don't give a about clean code and I want you to do this little example before I pull into the uh into the gas station here when's the pick no let's do this pick why is someone honking the light didn't even turn green yet it's amazing oh they're turning right ah those people pick your favorite software could be a game could be an a phone app could be a service
you use pick your absolute favorite okay now what I want you to do is write down or think of a number from 0o to 100 about how clean the code base is for that product that you pay for you can take all the time that You' like think hard about it and I want you to write down that number your favorite thing that you pay for favorite software service could be a web application web Ser maybe it's Spotify Maybe it's YouTube maybe it's some program that you use for work and you love it like Visual Studio or something you just love using it what is your favorite and then I want you to write down or think about a number from 0 to 100 that scores how clean the code is and um if you haven't noticed you probably can't do that or maybe some
of you can but the reason you probably can't do that is because you don't give a all right so now that we have gas I want to do a bit of a different experiment here so let's pretend let's pretend that we could have those clean Co code numbers published from the companies somehow they came up with a system to score their clean code and it's published now everyone can see it by the way um if you can't sense the sarcasm around the clean code part either um and this notion that we can somehow gauge the cleanliness of code in a uniform way there's a lot of sarcasm um because I think that's the most arbitrary measure ever but let's assume we could do it let's assume there's a system that lets us understand uniformly how clean code is so because that's what customers care about
now your favorite company has published their clean code score it's at 75 out of 100 re it's respectable it's not perfect it's not 50 it's not failing it's 75 okay now is releasing information about their upcoming update it's exciting okay they have been able to improve the performance for their ability to solve your problem by 20% okay so they can solve your problem 20% faster cost is the exact same you're not paying a cent more but now they can solve your problem 20% faster okay maybe that means in a video game there's 20% less loading time or 20% more frame rate or if you're streaming stuff you get 20% more quality whatever it happens to be okay you get 20% more no extra cost but they tell you our clean code score has regressed by 20% they're adamant they're saying the the release Cadence they
have it's not changing it's not changing but they they've measured their clean code it's now 20% worse it's regressed do you go oh I guess I need to switch it's time we move on the clean code score has regressed to a point that we cannot accept it the cost stayed the same the performance got better they're still sticking to the release window that they promised the clean code we can't we can't deal with it it's just unacceptable now does it sound a little bit like ridiculous now let's take the same example okay and when they're saying their clean code score didn't regress or sorry they it did regress now uh they release Cadence let's say you know what we're unable to keep up with our software releases every month to get bug fixes and stuff out to you in a timely manner we can't do
it we have to change our release Cadence that might be something where you're like oh I've been used to this company that's been able to provide updates new enhancements bug fixes on a regular basis and now that's slower hm okay but they did say 20% boost in in quality performance whatever it is and same cost I think those things are things you might care about as a user but maybe that's not even enough okay so when we think through these things I'm trying to get you to think about what does a end user care about because the reality is end users should not care about how the software is put together they shouldn't care about what the classes look like they shouldn't care about what your cicd pipeline looks like they shouldn't care about your their your unit test coverage if it's 85% versus 90%
those are things that we care about as software Engineers because we understand that when we try to improve those things they should help influence the outcome that the users do care about so it's not that those things are not important it's about who they're important for and that's a huge difference it's not to like as I'm saying this it's not to suggest well Nick is saying we don't care about having well structured code I guess we shouldn't test any anything I guess it doesn't matter if our cicd pipeline fails 30% more that's not what I'm saying at all I'm saying your end users don't care about that they care about the outcome of those things now to give you an example say your code is not clean whatever whatever that means uh and let me interject on this because I thought something that was very
ironic when I was having this discussion online was I was saying I think clean code is an extremely arbitrary measure and the author of the post was kind of like yeah but I mean like Define it however you would like it's about having extensible maintainable code but you define what that means so so what so we don't even have a a concrete definition of it but we're we're trying to claim that customers care about this but we don't even have it defined okay interesting interesting take um so let's assume we have a code base and the code is not very clean again whatever that means but we've been able to we've been able to ship software in a timely manner the customer are happy with in terms of defects that escape like customer reported bugs those are extremely low customers are happy with that and
we're solving what the customer's pain point is and not only that we're selling it at a price point that they're happy with okay now let's continue on with this thought experiment so times going on people have said when code is not clean will slow you down and I agree based on cleanliness being some amount of maintainable extensible code whatever that looks like when these things have not been factored into a code base or we're not paying attention to them not addressing Tech debt in some capacity right the architecture is not being addressed and we're just kind of going in one path and not reconsidering things this can slow you down over time absolutely as an engineering team but that's one variable in the entire process okay so we have some unclean code let's imagine that the areas that we are building in we start doubling
down and we say you know what there's so much unclean code here but as we're building these these new features out we're focused in these other areas we'll make sure that as they're being landed we can improve the quality and you keep up to date with it so now internally something that customers do not see at all you're addressing some clean code okay now you're sustaining it so did did the customers care about the clean code you started addressing going forward no they have no idea they have literally no idea how clean your code is they care about getting the value delivered regularly they don't want bugs if we go back and we say okay we're not we're going to still continue to write slop code whatever that looks like but you know what we hired extra Engineers or testers or we invested more into
our testing infrastructure so we write the slop code but now we have this awesome test infrastructure that catches defects before they go out it's great so that's how we're able to keep up with our our velocity of releasing value to customers low one escapes still right we're still catching the bugs before they go out because of how the automation works we catch them early so developers don't waste too much extra time and because it's sloppy code they're writing it faster but they're able to sort of go back and fix things up I'm just making this up right my point is that you just Ed a different mechanism to address the rate at which you can deliver software and we didn't touch the code cleanliness this time again I am not saying that you should go write slop code I'm just saying that in these examples
literally a customer does not care about this stuff they care about the end result how you achieve that it's up to you and that's why I like the example at the beginning when I tried to say go score the clean code of your favorite companies and software that you're using you can't do it you're not making purchasing decisions based on how clean code is You're simply not doing that there is an exception to this arguably maybe more but I wanted to kind of highlight this right if you're if you're purchasing software that's like an SDK or you're integrating things you you are a developer and what you're buying is for you to use as a developer because you're integrating with it one might argue that you have a lot more exposure to how clean that codebase is so if all of a sudden the API
contracts are changing dramatically every release or the apis are really difficult to use that might be a side effect of how clean the codebase from the people releasing the SDK that you're working with whatever apis you're using so I think that could be an exception but if they did an amazing job see they do an amazing job and they have a really good API contract and everything that you're not seeing is trash still works but you're like I don't know why is someone write it that way does it matter to you do you know what it looks like is it performing well again it's it's not about things being valuable or not it's about who they're valuable to and I will keep saying it customers do not care about how clean your code is software Engineers care about how clean the code is and that's
because we understand that when we're trying to improve the different aspects of our software development we can achieve releasing things of higher value we can do things more efficiently we can catch defects easier we can have faster iterations we understand this as developers customers do not need to be concerned with what's happening behind the scenes like that they don't need to know how clean the code is in fact they do not know how clean the Cod is I wanted to spend a little bit of time talking about the restaurant analogy because it drives me nuts um the the whole false dichotomy thing trying to think some of the conversation on this uh on this LinkedIn post was like someone responded to me and they said well when's the last time that you you asked a restaurant about how clean their kitchen is like they were
trying to prove a point when I said do you know how clean the coat is of your favorite software they said well have you asked a restaurant how clean their kitchen is I said no no I haven't and they they're going aha see proves the point proves it proves what you're you're comparing food prep to software delivery you've created a false dichotomy and you're trying to say that because I don't ask a restaurant how clean their kitchen is that's on par with my comment about knowing how clean the code is which was the whole argument by the way was that customers care about that if you cared you would ask and I guess they're trying to say well you care how clean a restaurant kitchen is right so why haven't you asked well there's some reasons for that and I think this one might actually
shock people because it's maybe hard to accept if the cleanliness of a kitchen in a restaurant was actually your very first first priority truly if it was and I mean this seriously I want you to think about this if it truly was your first priority at a restaurant don't you think the very first thing that you would do is ask a restaurant to see their kitchen or to have proof about how clean their kitchen is if it truly was your priority you would say I need to see the records of your inspection from the health inspector and I need to see how clean your kitchen is and I need you to explain how you keep that kitchen clean and if you do that I mean okay then you've you've proven that you clearly prioritize that the most right as a as a customer I just
don't think it happens now that doesn't mean that you don't care at all about it but again this is a false dichotomy I actually think a closer representation is not how clean a kitchen is versus how clean Cod is I might compare it more closely to how clean a kitchen is to how secure software is or privacy okay so data leakage I think that's slightly closer because the cleanliness of a kitchen the reason that you would care about that is because your health is at risk and it's a lot welldefined to have a clean kitchen you don't have meat scraps and rotting food out you don't have rats and cockroaches running around but when we talk about how clean code is you could have someone put up code on the internet and say look how clean this is you could have half the internet going
this is code I can't believe you wrote this it's a lot more obvious to describe the cleanliness of something in a Kitchen come on you got to move over pal that's not how you do it but absolute idiot um they're just not the same thing so and it was interesting to watch some of the arguments around this because the um one of the things they were trying to say was like when the kitchen's not clean the people preparing the food can't move as quickly so then your food's going to take longer I mean it might not look organized are we talking about organized or are we talking about cleanliness from like a hygiene perspective or both because maybe the kitchen looks disorganized to you but they can navigate it very easily and effectively but again like we're talking about a kitchen here not Code false
dichotomy it's a very loud motorcycle um it's just it's very bizarre to me that looks like something's on fire if you can see it out the window um very bizarre I don't really get the like I think what's happening is that people anchored I can't talk over that motorcycle it's crazy it's not even going fast that's the crazy part um I have to move in front of this person I think what's happening is that people are using the word clean and like it just it was convenient to Anchor to it and they were trying to say oh in these different professions you know where we can talk about like how much people care about their profession right they're talking about mechanics as well right you wouldn't go to a mechanic that was losing parts and disorganized and stuff you're you know these people in these
different professions they need to have they want to take pride and take care of what they're doing and yes they do absolutely and they should because they understand when when they do those things they can deliver what the customer wants I might suspect that the more organized a mechanic is the fewer problems they're going to have but that is not a direct correlation it's certainly not one that I can draw I do know that if I go to a mechanic that's fair price and they fix my problems I do it at a pace that I'm happy with I don't give two shits how organized their shop is don't lose my stuff fix my stuff let me charge get charged a reasonable price and do it in a good amount of time hopefully I don't have to see you again sometime soon and that's the kind
of mechanic I want how they accomplish that I don't know and quite frankly I don't have time to figure that out but the kitchen thing I think again it's easy to say clean clean code clean kitchen one of the reasons I do think it's a false dichotomy especially is because I try to give you a funny example about not actually checking in about the health code and stuff like that right people aren't doing that however if it was brought to your attention you would care if someone said hey look that restaurant that you really like going to by the way every time the health inspector's gone recently bad news right you'd probably stop going so you probably do care but I think it's because there's a lot more of a correlation to having truly sanitized kitchen and your ability to be sick from the food
that you're ingesting and I think there's significantly less of a correlation with clean code whatever that means and this other thing that is not comparable to getting sick which is is software being delivered on time if there's bugs in software you might have experienced this people don't like bugs in software obviously but you know what goes a really long way if there is a bug in software and software teams can fix it very fast that actually speaks volumes about software teams these are not the same thing this is a false economy to compare these things I do think it's much closer to security and privacy like I would not want I for example let's let's kind of walk through this before I park if I'm using a cloud service of some sort if we follow my train of thought from earlier I don't go necessarily
checking on their security and privacy policies I maybe as a end user I just want to trust that a big company could do the right thing right they got they're providing me something The Price is Right it's solving a problem I'm going to I'm going to go for it but if there was something published that said data leak privacy concerns if there was such a thing you bet that would a rode my trust with them right very much like you're not going to go check the health code at a restaurant before you eat there even though you're saying you care about it you probably don't check but if someone told you that it was in bad shape you'd probably say yeah I do care about you know I do care about these things that are going to put my health at risk so I think
the clean restaurant thing is much more close to um security and privacy and software and that has nothing to do with the rate at which software shipped that may have no correlation with the number of bugs you could call like a security Gap or a privacy problem a bug right but I mean like terms of like functionality bugs versus uh security and privacy specifically they're just it's the wrong comparison so in closing customers do not care about how clean your code is and that does not mean that you should go write shitty code
Frequently Asked Questions
These Q&A summaries are AI-generated from the video transcript and may not reflect my exact wording. Watch the video for the full context.
- Do customers care about how clean the software code is?
- I believe customers do not care about how clean the software code is. They care about the value the software delivers, how well it solves their problems, the price, and the speed of delivery. Clean code is important to software engineers because it helps us deliver better software, but customers focus on the outcome, not the code quality itself.
- Why is the analogy between clean code and a clean restaurant kitchen a false comparison?
- I think comparing clean code to a clean restaurant kitchen is a false dichotomy because the two are not directly comparable. Customers don't ask restaurants about kitchen cleanliness before eating, but they do care about health risks if informed. In software, customers care more about security and privacy, which is a closer analogy to kitchen cleanliness, rather than code cleanliness or organization.
- Can unclean code still deliver value to customers effectively?
- Yes, unclean code can still deliver value effectively if the software is shipped on time, has low customer-reported bugs, and solves the customer's pain points at a price they're happy with. Engineering teams can address technical debt and improve code quality over time without customers noticing, as long as the end result meets their expectations for performance and reliability.