Speaker 1: All right, buckle up everyone. We're diving deep today into
Speaker 1: the world of the clean coder by Uncle Bob. And
Speaker 1: before you think, ugh, another coding book, trust me, this
Speaker 1: is less about the how of coding, more about the who,
Speaker 1: the kind of developer you are, the professional and you
Speaker 1: want to be.
Speaker 2: It's almost like a philosophy, right, like, what are the
Speaker 2: guiding principles that separate a good programmer from a truly
Speaker 2: great one?
Speaker 1: Exactly? And he doesn't mess around. He dives right in
Speaker 1: with this story about him and a colleague, Joe. They
Speaker 1: were like the a team of bug fixing, pulling all nighters, yeah,
Speaker 1: to get things shipped on time for the engineering team.
Speaker 1: But when it came to legal team is a different story.
Speaker 2: Oh I remember that part, Joe. Evin says something like,
Speaker 2: but these are professionals. It's like this unspoken thing, right,
Speaker 2: the programmers aren't held to the same standards as say,
Speaker 2: lawyers or doctors.
Speaker 1: Uncle Bob's like, hold up, that's got to change. He says,
Speaker 1: the foundation of any true professional is do no.
Speaker 2: Harm, which, when you think about software, has so many layers. Obviously,
Speaker 2: we don't want buggy code out in the wild, but
Speaker 2: it goes deeper, right, Like what about the harm we
Speaker 2: do to the software itself by making it a nightmare
Speaker 2: to maintain?
Speaker 1: Oh man, I've inherited some code bases that felt like
Speaker 1: a personal attack, like trying to untangle a headphone cord
Speaker 1: after it's been in your.
Speaker 2: Pocket all day, exactly, and then someone else has to
Speaker 2: come along and deal with that mess. So how do
Speaker 2: we avoid becoming that developer? Michael Bob's got some thoughts.
Speaker 1: He's big on the work ethic, but it's not just
Speaker 1: showing up and coding. He's talking about constant learning, like
Speaker 1: twenty hours a week outside your job.
Speaker 2: I know, right, sounds intense, but think about it, even
Speaker 2: just reading during lunch, podcasts on your commute.
Speaker 1: It adds up. Plus tech moves so fast. If you're
Speaker 1: not learning, you're falling.
Speaker 2: Behind, exactly. And it's not just keeping up, it's about
Speaker 2: becoming the expert, the one people turn to, the one
Speaker 2: who's always pushing the boundaries.
Speaker 1: So true, And speaking of pushing boundaries, he talks about
Speaker 1: the importance of practice, not just working on projects, but
Speaker 1: like deliberate practice. He calls them kata, these short coding
Speaker 1: exercises kind of like a musician practicing scales.
Speaker 3: Oh, I love kata.
Speaker 2: It's such a great way to sharpen your skills, you know,
Speaker 2: not even solving real problems, just focusing on technique efficiency.
Speaker 1: I gotta try that. But even with all the solo
Speaker 1: practice in the world, Uncle Bob's a huge believer in collaboration.
Speaker 3: Which makes sense, right.
Speaker 2: Software is rarely a one person show anymore, bouncing ideas
Speaker 2: off each other, pair programming, mentoring.
Speaker 1: Like, you learn so much faster when you're not in
Speaker 1: a vacuum.
Speaker 2: And you avoid those situations where only one person understands
Speaker 2: that critical piece of code.
Speaker 1: Okay, so we've got learning, we've got collaboration, but now
Speaker 1: comes apart. I struggle with saying no.
Speaker 2: Ooh yeah, that's a tough one.
Speaker 1: Especially when you want to be helpful, you want to
Speaker 1: please people. But Uncle Bob makes this point saying yes
Speaker 1: when you don't mean it, it actually hurts everyone in
Speaker 1: the long run.
Speaker 2: He talks about that language of non commitment right, like
Speaker 2: we should or I hope to. It's so easy to
Speaker 2: fall into that track.
Speaker 1: Oh totally, I'm so guilty of that. But he gives
Speaker 1: this great alternative, I will action by time. It forces
Speaker 1: you to be specific, accountable.
Speaker 2: And it sets clear expectations, so no one's left wondering.
Speaker 2: But what about when you have to say no, like
Speaker 2: the request is unreasonable.
Speaker 1: He's got a framework for that too, about focusing on
Speaker 1: the why, not just no, but no because, and offering
Speaker 1: alternatives if you can.
Speaker 2: It shows you're not just being difficult, you're problem solving.
Speaker 2: You're using your expertise to guide things in the right direction.
Speaker 1: I had this situation once I was asked to build
Speaker 1: this feature, and I knew it was going to be
Speaker 1: a nightmare, way too complex. But instead of just saying no,
Speaker 1: I explained the technical challenges, like even I proposed a
Speaker 1: phased approach, something more realistic, and how'd that go? They
Speaker 1: were actually super receptive. They appreciated the honesty, the transparency.
Speaker 1: It turned into a much better solution than the end.
Speaker 3: That's professionalism and action.
Speaker 1: And speaking of challenges, we got to talk about the
Speaker 1: pressure cooker of software development. Uncle Bob tells this crazy
Speaker 1: story about an app called Guerrilla Mart.
Speaker 2: Oh. Yeah, that one stays with you. It's like a
Speaker 2: cautionary tale.
Speaker 1: Impossible deadlines, scope creep, that is velper John is sacrificing everything.
Speaker 2: And it all comes back to that ability to say
Speaker 2: no effectively.
Speaker 1: Right if John hit set boundaries, managed expectations.
Speaker 2: But even when you do everything right, pressure happens. So
Speaker 2: what are Uncle Bob's tips for weathering those storms.
Speaker 1: Well, one that surprised me was keep things clean, not
Speaker 1: just code, but your workspace, your mental state.
Speaker 2: It's like, when everything else is chaotic, create some order
Speaker 2: where you can.
Speaker 1: It helps you think clearly, make better decisions under stress.
Speaker 2: And he talks about having a crisis discipline, a set
Speaker 2: of practices you can rely on when everything's hitting the fan.
Speaker 2: What are your go tos?
Speaker 1: For me, It's got to be stepping back, breathing deeply,
Speaker 1: reminding myself I've solved tough problems before, and breaking things
Speaker 1: down into smaller, manageable chunks.
Speaker 3: That's great.
Speaker 2: Uncle Bob also emphasizes sticking to your disciplines, test driven development,
Speaker 2: pair programming, whatever.
Speaker 3: Works for you.
Speaker 2: Those become even more important when the pressure's.
Speaker 1: On and you know what, it's okay to ask for help,
Speaker 1: not try to be the hero.
Speaker 2: Absolutely, sometimes the most professional thing is admitting you need support.
Speaker 3: A fresh perspective can make all the difference.
Speaker 1: So we've talked about pressure collaboration, but there's this other
Speaker 1: aspect of the clean coder that's really fascinating, this idea
Speaker 1: that programmers shouldn't be lone wolves that it's actually unprofessional.
Speaker 2: I think he even tells a story about getting fired
Speaker 2: for being too focused on the tech and not enough
Speaker 2: on the bigger picture, the business impact.
Speaker 1: Yeah, it's like, we got to remember we're building solutions
Speaker 1: for real.
Speaker 2: People, understanding the business, talking to users.
Speaker 3: It's all part of the job.
Speaker 1: I had this project once where I was so deep
Speaker 1: and optimizing an algorithm, m I totally missed a key
Speaker 1: constraint related to the company's internal processes.
Speaker 3: Oh no, did you have to rework everything we did?
Speaker 1: It was a hard lesson and the importance of asking questions,
Speaker 1: not assuming you have all the answers, collaborating with everyone involved.
Speaker 2: And speaking of collaboration, Uncle Bob's a big fan of
Speaker 2: collective code ownership.
Speaker 1: Yeah, I've worked in places where certain code was like
Speaker 1: someone's personal kingdom.
Speaker 2: He argues that shared ownership leads to better solutions, less resentment.
Speaker 1: And then there's pair programming, which I know could be controversial.
Speaker 2: He addresses all the common objections feeling slowed down, fear judgment,
Speaker 2: but the benefits are huge better code, constant review, knowledge sharing.
Speaker 1: It's like having a built in second brain, catching errors
Speaker 1: before they become disasters. So we've covered a lot professionalism, learning, collaboration,
Speaker 1: but there's one more piece we haven't touched on, the
Speaker 1: journey from apprentice to craftsmen.
Speaker 2: Oh that's a good one. He even tells this adorable
Speaker 2: story about learning to program as a kid. He was
Speaker 2: fascinated by this little toy computer, even built a computerized
Speaker 2: gait for his neighbor.
Speaker 1: Ah, that's awesome. It reminds you the pure joy of coding,
Speaker 1: the possibilities, and.
Speaker 2: That sets the stage for his exploration of the different
Speaker 2: stages of a programmer's growth.
Speaker 1: The apprentice, the journeyman, the master. Sounds kind of like
Speaker 1: a fantasy.
Speaker 2: It does, but it's really about the skills, the mindset,
Speaker 2: the values you develop over time.
Speaker 1: So it's more than just technical ability. It's about character.
Speaker 2: Development exactly, and that's what we'll be digging into in
Speaker 2: the next part of our deep dive.
Speaker 1: So stick around. We'll be right back after short break.
Speaker 2: All right, So we left off talking about this idea
Speaker 2: of a programmer's journey, but before we get to the apprentice,
Speaker 2: journeyman master thing. There's this other concept Uncle Bob brings
Speaker 2: up about teams and how they should be structured, which
Speaker 2: honestly kind of blew my mind, I.
Speaker 1: Know, right. It goes against how a lot of companies
Speaker 1: do think totally.
Speaker 2: Like, you finish a project, the team disbands, everyone gets
Speaker 2: shuffled around. Uncle Bob's like, no bad idea. He's all
Speaker 2: about persistent teams.
Speaker 1: So instead of forming teams around projects, you have these
Speaker 1: long term units and you assign projects to them based
Speaker 1: on their skills and experience exactly.
Speaker 2: It makes so much sense when you think about it,
Speaker 2: like a well functioning team. It's like a well oiled machine.
Speaker 1: Everyone knows each other's strengths, they can anticipate each other's moves.
Speaker 2: It's like a sports team. You don't swap players out
Speaker 2: every game.
Speaker 1: You build that chemistry, that trust over time.
Speaker 2: And Uncle Bob talks about this fermentation process, right, Like,
Speaker 2: teams go through these stages, the awkward getting to know
Speaker 2: you phase, maybe.
Speaker 1: A honeymoon period, and finally they reach this point of
Speaker 1: like seamless collaboration. They're in sync.
Speaker 2: And once you have that, why break it apart?
Speaker 1: Seems so counterproductive, right, You lose all that.
Speaker 2: Momentum totally and think about the knowledge transfer, the continuity.
Speaker 2: With persistent teams, you don't have to start from scratch
Speaker 2: every time.
Speaker 1: Let's I bet te morale is higher when you know
Speaker 1: you're in it for the long helse.
Speaker 2: Oh absolutely, it creates a sense of ownership, of shared responsibility.
Speaker 2: But okay, let's be real. Even with the best teams
Speaker 2: in the world, pressure is going to happen, right, Deadlines, stayholders,
Speaker 2: breathing down your neck.
Speaker 1: The joys of software development, and.
Speaker 2: Uncle Bob doesn't sugarcoat it. He acknowledges that pressure is
Speaker 2: part of the game, but he also gives some great
Speaker 2: advice on how to handle it like a.
Speaker 1: Pro, like what still the beans?
Speaker 2: Well, first off, managing your commitments. Remember that language of
Speaker 2: commitment we talked about.
Speaker 1: Clear specific promises about what you can deliver and buy.
Speaker 2: When exactly, don't over promise, set realistic expectations from the start,
Speaker 2: and when the pressures coming from outside those demanding stakeholders.
Speaker 1: Ooh yeah, those are fun.
Speaker 2: Uncle Bob's all about setting boundaries, having those tough conversations.
Speaker 1: By doing it professionally right, not just blowing up at
Speaker 1: people exactly.
Speaker 2: It's about using your expertise to guide things in the
Speaker 2: right direction. And another thing he emphasizes keep things clean.
Speaker 1: Wait, not just code, Nope.
Speaker 2: Your design, your workspace, even your mental state.
Speaker 1: I never thought about it like that, but it makes sense.
Speaker 2: When everything's chaotic around you, it's hard to think straight.
Speaker 2: So declutter refactor creates some.
Speaker 3: Order where you can.
Speaker 1: It's like clearing the cash in your brain totally.
Speaker 2: And then there's this concept of a crisis discipline, like
Speaker 2: when everything's going wrong, what are your go to practices?
Speaker 1: I got to have my list my emergency procedures first
Speaker 1: breathe remind myself I've solved tough problems before. Then break
Speaker 1: the problem down into smaller, more manageable pieces.
Speaker 2: Those are great. Uncle Bob also talks about sticking to
Speaker 2: your disciplines even under pressure, TDD, pair programming, whatever works
Speaker 2: for you.
Speaker 1: It's like, don't abandon the things that make you a
Speaker 1: good developer.
Speaker 2: And you know what, It's okay to ask for help.
Speaker 2: Don't be afraid to say I need a hand.
Speaker 1: Sometimes that's the most professional thing you can do.
Speaker 2: Admitting you don't have all the answers, seeking a fresh perspective. Okay,
Speaker 2: so we've talked about pressure teamwork, but there's this whole
Speaker 2: other layer to the clean coder, this idea that programmers
Speaker 2: shouldn't be these isolated figures, these lone wolves.
Speaker 1: He actually argues it's unprofessional to be that way.
Speaker 2: He even tells the story about getting fired for being
Speaker 2: too focused on the tech and not enough on the
Speaker 2: bigger picture, the business impact.
Speaker 1: It's a reminder that we're not coding in a vacuum.
Speaker 2: Right exactly, we're building solutions for real people, for real businesses.
Speaker 1: I had this experience once I was so focused on
Speaker 1: optimizing an algorithm, I completely overlooked a key constraint related
Speaker 1: to the company's internal processes.
Speaker 3: Uh oh did that cause problems big time.
Speaker 1: We had to rework a huge chunk of code because
Speaker 1: I hadn't taken the time to understand the full context
Speaker 1: the business side of things.
Speaker 2: It's a good lesson in the importance of asking questions,
Speaker 2: collaborating with everyone.
Speaker 1: And speaking of collaboration, Uncle Bob's a huge advocate for
Speaker 1: collective code ownership. Like no one owns a specific module,
Speaker 1: everyone can contribute.
Speaker 2: It breaks down those silos right, leads to better solutions,
Speaker 2: less resentment.
Speaker 1: And then there's pair programming, which I know some people love,
Speaker 1: some people hate.
Speaker 2: He dives into all the common objections, feeling slowed down,
Speaker 2: fear of judgment, but he really highlights the benefits better
Speaker 2: code quality, constant review.
Speaker 1: It's like having a built in second pair of eyes,
Speaker 1: catching errors before they become disastrous. Plus you learn from
Speaker 1: each other. It's like constant knowledge sharing.
Speaker 2: Okay, so we've covered a ton of ground professionalism, collaboration,
Speaker 2: but we haven't even gotten to the individual journey of
Speaker 2: developer yet. The apprentice journeyman master all that good stuff.
Speaker 1: Which he sets up with this adorable story about learning
Speaker 1: to program as a kid.
Speaker 2: Oh right, He was fascinated by this little toy computer,
Speaker 2: even built a computerized gait for his neighbor using it.
Speaker 1: It's so cool. It reminds you of that like pure joy.
Speaker 2: Of discovery, and that sets the stage for his exploration
Speaker 2: of the different stages of a programmer's growth, the skills,
Speaker 2: the mindset, the values you develop over time, and that's what.
Speaker 1: We're going to unpack in the final part of our
Speaker 1: deep dive into the clean coder. Right, welcome back to
Speaker 1: the deep dive. We've been on quite a journey through
Speaker 1: the clean coder from professionalism to collaboration to pressure, and
Speaker 1: this idea of a programmer's journey the apprentice to craftsmen.
Speaker 1: But now let's get down to brass tacks. How do
Speaker 1: we actually live this stuff? How do we take Uncle
Speaker 1: Bob's wisdom and make it real in our day to
Speaker 1: day work?
Speaker 2: Right, it's one thing to read about it, not along,
Speaker 2: but then you're back in the trenches, facing deadlines, dealing
Speaker 2: with people.
Speaker 1: So what are some actionable steps things we can start
Speaker 1: doing today to become more clean coders in the truest sense.
Speaker 3: I think it.
Speaker 2: Starts with awareness, honestly, just keeping these principles top of
Speaker 2: mind as you're coding, as you're interacting with your.
Speaker 1: Team, So almost like a mental checklist. Am I doing
Speaker 1: no harm? Am I communicating clearly?
Speaker 3: Yeah? And look, no one's perfect. We all slip up.
Speaker 2: But it's about the intention, that commitment to excellence that's
Speaker 2: what sets you apart.
Speaker 1: And Uncle Bob makes this point craftsmanship spreads by example,
Speaker 1: not by force. So it's not about lecturing your teammates
Speaker 1: or anything like that.
Speaker 2: It's about leading the way, showing them the benefits of
Speaker 2: clean code of collaboration.
Speaker 1: And you might be surprised. People start noticing, they start
Speaker 1: emulating those behaviors totally.
Speaker 2: It creates this ripple effect, this culture of excellence.
Speaker 1: Be the change you want to see, right, but in
Speaker 1: this case, be the clean.
Speaker 2: Coder exactly, And you don't have to do everything at once.
Speaker 2: Start small, spend an extra fifteen minutes refactoring, write a
Speaker 2: better commit message.
Speaker 1: Little things add up, especially when they become habits. And
Speaker 1: speaking of habits, remember that twenty hours a week for
Speaker 1: professional development.
Speaker 2: I know it sounds like a lot, but even if
Speaker 2: you can do a fraction of that, it makes the
Speaker 2: difference in the long run.
Speaker 1: It's an investment in yourself, your skills, your future.
Speaker 2: And it's not just about the technical stuff. It's about
Speaker 2: staying curious. Go to conferences, explore new technologies, expand your horizons.
Speaker 1: Embrace that lifelong learner mindset, never stop growing.
Speaker 2: But you know what, it's also important to find balance.
Speaker 2: Remember John from the Gorilla Art story, sacrificing everything, burning out, Yeah,
Speaker 2: that was rough.
Speaker 1: We got to take care of ourselves too.
Speaker 2: Right, Absolutely, hobbies, family, things that bring you joy. It's
Speaker 2: about sustainability. You can't pour from an empty cup.
Speaker 1: Set boundaries, prioritize your well being. It's not selfish, it's essential.
Speaker 2: And remember Uncle Bob talks about finding joy and like
Speaker 2: that story about building the computerized gait.
Speaker 3: As a kid.
Speaker 1: It reminds you of the magic, the possibilities that initial spark.
Speaker 3: Don't lose sight of that.
Speaker 2: Experiment, work on side projects, have fun.
Speaker 1: It's all about rediscovering that passion, letting it fuel your journey.
Speaker 1: So as we wrap up this deep dive into the
Speaker 1: Clean Coder, I want to leave you with this thought,
Speaker 1: the apprentice to craftsman journey, it's not a destination, it's
Speaker 1: a process, a continuous evolution.
Speaker 2: Embrace your own path, find mentors who inspire you, and
Speaker 2: never stop learning.
Speaker 1: Because these principles professionalism, collaboration, craftsmanship, they're not just about
Speaker 1: writing better code. They're about building a better.
Speaker 3: World, one line at a time.
Speaker 1: Beautifully said. And on that note, we'll wrap up this
Speaker 1: episode of the Deep Dive. We hope you enjoyed this
Speaker 1: journey through the Clean Coder and that you found some
Speaker 1: nuggets of wisdom to apply in your own work in life.
Speaker 1: Until next time, happy coding, everyone,