Software Craftsman, The: Professionalism, Pragmatism, Pride - podcast episode cover

Software Craftsman, The: Professionalism, Pragmatism, Pride

Mar 23, 202524 min
--:--
--:--
Download Metacast podcast app
Listen to this episode in Metacast mobile app
Don't just listen to podcasts. Learn from them with transcripts, summaries, and chapters for every episode. Skim, search, and bookmark insights. Learn more

Episode description

Sandro Mancuso's The Software Craftsman advocates for professionalism and pride in software development, contrasting outdated notions of seniority with modern demands. The book details the Software Craftsmanship Manifesto, emphasizing quality and collaboration over solely meeting deadlines. It explores Agile methodologies and their limitations, arguing for a focus on technical excellence alongside process improvements. Mancuso uses personal anecdotes and practical advice to illustrate the importance of continuous learning, effective teamwork, and a productive partnership between developers and clients. Finally, the text provides guidance on recruiting and interviewing, emphasizing the need for a culture of learning and shared values.

You can listen and download our episodes for free on more than 10 different platforms:
https://linktr.ee/cyber_security_summary

Get the Book now from Amazon:
https://www.amazon.com/Software-Craftsman-Professionalism-Pragmatism-Robert/dp/0134052501?&linkCode=ll1&tag=cvthunderx-20&linkId=ff914d2b6a5c6babec4bdef8cf2c8390&language=en_US&ref_=as_li_ss_tl




Discover our free courses in tech and cybersecurity, Start learning today:
https://linktr.ee/cybercode_academy

Transcript

Speaker 1

Welcome in everyone to our deep dive this time into software craftsmanship.

Speaker 2

Oh interesting.

Speaker 1

Yeah, and our main source material today is going to be selections from Sandral Mancuso's book The Software Craftsman, right, which came out you know, almost ten years ago now, back in twenty fourteen, wow, but still really relevant today. And you know it's part manifesto per practical guide. Yeah,

for developers really anyone involved in software projects. And you know Macuzo himself, he's been in the industry for decades, all the way back to the nineties, kind of that you know, wild West days of software.

Speaker 2

Development, Wild West days.

Speaker 1

I love that and yees. So he's seen it all. He's seen the rise of agile, he's seen you know, all these different trends come and go.

Speaker 2

Yeah.

Speaker 1

And he's not author, he's also a practitioner. He co founded a software craftsmanship consultancy and the London software craftsmanship community.

Speaker 2

That's great.

Speaker 1

So he's really you know, putting these ideas into practice. Yeah. So I'm really excited to dive into this book with you and yeah, me too, see what we can kind of extract in terms of the key principles of software craftsman show and what it really means to be a software craftsman today in twenty.

Speaker 2

Twenty four you know, in the modern world.

Speaker 1

In the modern world, Yeah, because I think things have changed quite a bit even since twenty fourteen.

Speaker 2

Yeah, definitely.

Speaker 1

So one of the things that really jumped out of me reading through this was Mancuso's description of the early days of his career in the nineties, where he talks about how, you know, back then, seniority was often measured by how complex and how difficult to understand your code was.

Speaker 2

Oh wow, so.

Speaker 1

It's almost like, you know, job security through obfuscation. Really kind of a crazy concept when you think about it, it's wild, but that was kind of the mentality back then. And he tells this story about working on this project where there was this one senior developer who wrote this incredibly complex piece of code that no one else could understand, and he was like the hero, you know, because he was the only one who could fix it.

Speaker 2

Oh, so he was the only one who could maintain it exactly.

Speaker 1

He was the only one who could maintain it, and so he had all this power and everyone kind of looked up to him. But Mancuso realized that that was actually a really unsustainable way to build software.

Speaker 2

Yeah, I can imagine, because.

Speaker 1

What happens when that person leaves or it gets hit by a bus, Like, look, what do you do? The whole project falls apart. Yeah, So that was kind of a turning point for him, I think, in terms of realizing that there had to be a better way.

Speaker 2

So how did he start to see things differently? What was that turning point?

Speaker 1

Well, I think he started to realize that software development is not just about writing code. It's about building software that is maintainable and understandable and that could be worked on by a team of people. Right.

Speaker 2

It's a collaborative process exactly.

Speaker 1

And it's about, you know, delivering value to the client, not just impressing your colleagues with your cleverness.

Speaker 2

Yeah, that makes a lot of sense.

Speaker 1

So it's about shifting the focus from individual ego to the collective good of the project and ultimately the client. Right.

Speaker 2

So it's not about being a hero developer, it's about being a team player.

Speaker 1

Yeah, exactly. I like that, and I think that's really at the heart of software craftsmanship, is this idea of being a professional, okay, and taking pride in your work and really caring about the quality of the software that you produce.

Speaker 2

And seeing yourself as a craftsman as opposed to just like a code monkey exactly.

Speaker 1

And I think that's a really important distinction because I think for a long time, software development was seen as this kind of you know, geeky, hobbyist kind of thing.

Speaker 2

Yeah, just something that people did in their basement.

Speaker 1

Yeah, but I think in recent years there's been a real shift towards recognizing it as a profession, a true profession, yeah, with its own set of ethical standards and best practices, right. And I think software craftsmanship is a big part of that movement.

Speaker 2

Okay, so it's not just about the technical skills, it's about the mindset, the attitude.

Speaker 1

Absolutely, Yeah, It's about how you approach your work and how you interact with your colleagues and your clients, right.

Speaker 2

Like a true prof I like it. So it sounds like software craftsmanship is really about raising the bar for the entire software development industry.

Speaker 1

Yeah. I think that's a great way to put it. It's about saying, you know, we're not just hackers, we're not just code monkeys. We're professionals, and we're going to take pride in our work. And we're going to build software that is high quality and that meets the needs of our clients.

Speaker 2

That's a great goal to strive for.

Speaker 1

Yeah, and I think it's a really important goal because you know, software is everywhere these days.

Speaker 2

It runs the world.

Speaker 1

Yeah, it runs the world. It's in our phones, it's in our cars, it's in our homes, it's everywhere. Yeah, and so the quality of that software really matters.

Speaker 2

It affects all of us.

Speaker 1

Yeah, it affects all of us. It affects our lives, it affects our safety, affects our privacy.

Speaker 2

Absolutely.

Speaker 1

So I think it's really important that we as software developers take that responsibility seriously. I agree, and I think software craftsmanship is a great framework for doing that.

Speaker 2

Okay, So I'm curious about this idea of the agile hangover that you mentioned earlier.

Speaker 1

Right, Yeah, that's a really interesting concept.

Speaker 2

What is that exactly?

Speaker 1

So Mancuso talks about how a lot of companies adopted agile methodologies, but maybe you didn't fully embrace the underlying principles I see of quality and craftsmanship.

Speaker 2

So they got the process, but not necessarily the substance exactly.

Speaker 1

They were going through the motions of agile, but they weren't really changing the way they built software.

Speaker 2

So what were they missing.

Speaker 1

I think they were missing that focus on technical excellence, on building software that is well designed and maintainable, right, And I think that's where software craftsmanship comes in. It's about filling that gap.

Speaker 2

So it's not agile versus software craftsmanship. They actually work together exactly.

Speaker 1

They complement each other.

Speaker 2

Okay.

Speaker 1

Agile focus is on the process on delivering software incrementally getting feedback from the client, but software craftsmanship focuses on the craft of building software that is high quality.

Speaker 2

So it's like having a great engine in a race car. You need both to win.

Speaker 1

That's a great analogy.

Speaker 2

You need the speed and the reliability exactly.

Speaker 1

You need both agile to he help you deliver software quickly, and you need software craftsmanship to help you build software that is well built and that will last.

Speaker 2

So it's about building software that's not just functional but also beautiful.

Speaker 1

I love that. Yeah, I think that's a really important point. It's not just about making it work, it's about making it work well, yeah, and making it something that you can be proud of.

Speaker 2

It's about craftsmanship exactly. So how does this all tie into the Software Craftsmanship Manifesto, Right.

Speaker 1

So the Manifesto is kind of like a set of guiding principles for software craftsmen. Okay, and it lays out four key values and we're going to dive into those in just a bit. But before we do that, I just want to kind of set the stage a little bit, sure, because I think it's important to understand where these values

are coming from. Okay, And I think you're really coming from this idea that software development is a craft and that we as software developers are craftsmen, and that we should take pride in our work and strive to build software is high quality.

Speaker 2

I like that. So it's about raising the level of professionalism in the software development industry exactly. I'm on board of that.

Speaker 1

All right. So let's dive into those four key values of the Software Craftsmanship Manifesto.

Speaker 2

Okay, let's do it.

Speaker 1

So the first one is not just working software, but well crafted software.

Speaker 2

Okay, well crafted software? What does that mean?

Speaker 1

Exactly? So it's about building software that is not just functional, but also well designed, easy to understand, easy to change, and build.

Speaker 2

A last, so it's not just about getting it to work, it's about making it work.

Speaker 1

Well exactly, and making it something that can be easily maintained and extended over time.

Speaker 2

Right, because software always changes, exactly. Requirements change, technology changes, everything changes, so.

Speaker 1

We need to build software that can adapt to those changes.

Speaker 2

That makes a lot of sense.

Speaker 1

Yeah, so well crafted software is about building software that is flexible and resilient that can stand the test of time.

Speaker 2

Okay, I like that.

Speaker 1

So the second value the manifesto is not just responding to change, but steadily adding value.

Speaker 2

Okay. So it's not just about keeping up with the changes. It's about making things better exactly.

Speaker 1

It's about delivering value to the client with every iteration.

Speaker 2

So it's about focusing on the outcomes, not just the outputs exactly.

Speaker 1

And it's about thinking long term about the sustainability of the software that we're building.

Speaker 2

Right because sometimes a quick fix can create more problems down the road.

Speaker 1

Absolutely.

Speaker 2

So it's about making sure that every change we make is actually adding value to the product exactly.

Speaker 1

And that's not always easy, No, it's not. Sometimes it's tempting to just hack something together to get it working.

Speaker 2

Yeah, I've been there.

Speaker 1

But a software craftsman resists that temptation.

Speaker 2

We take the time to do it right exactly.

Speaker 1

They invest in quality even if it takes a little longer.

Speaker 2

Because they know that it will pay off in the long run.

Speaker 1

Exactly. Okay, I like that. So what's the third value?

Speaker 2

So the third value is not just individuals and interactions, but a community of professionals.

Speaker 1

Okay, So it's about working together exactly.

Speaker 2

It's about recognizing that software development is not a solitary pursuit. It's a team sport.

Speaker 1

Yeah, it takes a village exactly.

Speaker 2

And it's about sharing knowledge and learning from each other and raising the bar for the entire profession. So it's about mentorship and collaboration.

Speaker 1

Absolutely, And it's about building a community of practice where we can all support each other and grow together. I like that. Yeah. So it's not just about you know, me writing my code in my little silo. It's about us working together to build something great.

Speaker 2

It's about the collective good exactly. Right. So what's the fourth and final value?

Speaker 1

So the fourth value is not just customer collaboration, but productive partnerships.

Speaker 2

Okay. So it's about more than just getting requirements from the client.

Speaker 1

Right, It's about building a relationship with the client based on trust and respect, and mutual understanding.

Speaker 2

So it's about working with the client, not just for the client exactly.

Speaker 1

It's about seeing the client as a partner in the software development.

Speaker 2

Process and under standing their business goals.

Speaker 1

Absolutely and working together to find the best solutions.

Speaker 2

So it's a much more collaborative approach.

Speaker 1

Exactly.

Speaker 2

I like that.

Speaker 1

Yeah. So those are the four key values of the Software Craftsmanship Manifesto.

Speaker 2

Well crafted software, steadily adding value, a community of professionals, and productive partnerships.

Speaker 1

Exactly.

Speaker 2

Those are some great principles to guide our work.

Speaker 1

Yeah, I think so, and I think they're really relevant today, even more so than they were back in twenty fourteen when the book was first published.

Speaker 2

Yeah, I agree. So how do we actually put these values into practice? What are some of the specific practices that Mankus advocates for.

Speaker 1

Right, Well, that's a great question, and that's what we're going to dive into in our next segment.

Speaker 2

Awesome, I'm looking forward to it me too.

Speaker 1

Okay, so we've talked about the technical side. You know, the practice is the principles, right, But what about that mindset? What makes a software developer a true craftsman beyond just writing clean code?

Speaker 2

Well, you know, I think it's about approaching your work with a certain level of intentionality and ownership. You know, a true software raftsmen sees themselves as a professional, not just a code monkey.

Speaker 1

Right.

Speaker 2

They take pride in their work. They strive to constantly improve their skills.

Speaker 1

It's interesting you say that because Mancuso talks about this idea of owning your career and it's not just about you know, keeping up with the latest JavaScript frame, right. It's about taking control of your professional development and constantly seeking out opportunities to learn and grow.

Speaker 2

It's about recognizing that your career is your responsibility, not your employers. It's about setting your own goals, seeking out mentors, building a network of peers who can support you along the way.

Speaker 1

And he even shares his own story, right yeah, about wanting to work in London and how he had to adapt and teach himself new skills. Wow, to make that happen. That's impressive and it really highlights I think the importance of being proactive and taking ownership of your career path.

Speaker 2

Absolutely, and that actually ties into another key aspect of the craftsman's mindset, which is embracing a culture of learning. It's about being curious, constantly asking questions, and actively seeking out knowledge.

Speaker 1

He talks about you know, blogs, conferences, open source projects, even just like informal conversations. Yeah, with other developers.

Speaker 2

It's all about learning.

Speaker 1

It's all part of that that learning process.

Speaker 2

Yeah. And you know, it's interesting to think about how this connects to the bigger picture. You know, by sharing our knowledge and experiences, we all benefit and the craft of software development as a whole continues to evolve.

Speaker 1

It raises the tide for everyone exactly. One thing that really struck me was Mancuso's emphasis on finding purpose and meaning in your work. It's not just about you know, punching the clock and collecting a paycheck. It's about feeling like your work has a real impact.

Speaker 2

Absolutely, a true craftsman sees their work as more than just writing code. They understand how their work fits into the bigger picture, okay, and how it contributes to the success of the client and the end us.

Speaker 1

And he even talks about, you know, having the courage to say no, oh, yeah, which I think can be really difficult for.

Speaker 2

Developers, especially early in their careers.

Speaker 1

Especially early in their careers.

Speaker 2

Yeah, yeah, you want to please everyone.

Speaker 1

You want to please everyone. You want to take on every project you want to You want to prove yourself, prove yourself exactly.

Speaker 2

But sometimes saying no is the most professional thing you can do.

Speaker 1

He makes a really good point there.

Speaker 2

Yeah, a software craftsman understands that taking on too much work or agreeing to unrealistic deadlines can ultimately compromise the quality of the software, right and damage their reputation in the long run.

Speaker 1

So it's about being honest with yourself and your clients, yes, about what you can realistically achieve.

Speaker 2

Exactly, And it's about having the courage to stand up for what you believe in.

Speaker 1

Okay, So all of this sounds great in theory, right, but how does this whole translate to the real world of software development? Let's face it, you know, we're not all working on greenfield projects, yeah, with unlimited budgets.

Speaker 2

And right, the real world is messy.

Speaker 1

The real world is messy, it is. So how does software craftsmanship help us deal with the messy realities of legacy code, tight deadlines and demanding stakeholders.

Speaker 2

Well, that's where the rubber meets the road, right, Yeah, and Mancuso doesn't shy away from these challenges. In fact, he offers some really practical advice for navigating those choppy waters.

Speaker 1

So let's start with legacy code. Okay, I think most developers have had to deal with that beast at some point in their careers.

Speaker 2

Oh yeah, for sure.

Speaker 1

How does software craftsmanship help us approach that challenge?

Speaker 2

Well, Mancuso encourages us to see legacy code as an opportunity for growth, not just a burden.

Speaker 1

Okay.

Speaker 2

He says working with legacy code can be a great way to hone your skills in refactoring, testing, design.

Speaker 1

He doesn't sugarcoat it, though, No, he doesn't. He acknowledges that it could be incredibly frustrating, time consuming.

Speaker 2

Of course, but he argues that by approaching legacy code with a craftsman's mindset, we can slowly but surely make it better.

Speaker 1

Okay.

Speaker 2

It's about making small, incremental improvements over time, rather than trying to boil the ocean.

Speaker 1

So it's about pragmatism as well. Yes, absolutely, it's not always about achieving perfect code, but about making things better within the constraints of the project.

Speaker 2

Exactly. You have to balance your desire for clean code with the practical realities of the project. Sometimes you have to make compromises, but you should always strive to leave the code base better than you found it.

Speaker 1

He gives the example of working on a startup where the business needs are constantly changing. In that context, it might make sense to build a thin slice of functionality first to get feedback quickly, and then add more robust testing and structure as the requirement solidify.

Speaker 2

Exactly, It's about adapting your approach to fit the context, and sometimes that means being pragmatic and making trade offs.

Speaker 1

Another challenge that Mancusu addresses is the issue of low morale.

Speaker 2

Oh yeah, that's a big one.

Speaker 1

He uses the term agile hangover to describe the disillusionment that some companies experience after adopting agile methodologies.

Speaker 2

So it's not all sunshine and rainbows with agile, not always no, So what are some of the causes of this agile hangover?

Speaker 1

Well, he argues that low morale is often a symptom of a deeper problem. Okay, a lack of autonomy, mastery, and purpose in the work.

Speaker 2

I see.

Speaker 1

Developers can feel like cogs in a.

Speaker 2

Machine, yeah, just churning out code.

Speaker 1

Rather than valued professionals who are making a real.

Speaker 2

Contribution, right, they lose that sense of ownership and that can be really demotivating.

Speaker 1

He shares a story about joining a team where the project was in chaos, deadlines were looming okay, and the developers were completely demotivated.

Speaker 2

That sounds like a nightmare, it does. Yeah, So how did he turn things around?

Speaker 1

Well, what's interesting is that he didn't come in and try to impose his ideas on the team, okay. Instead, he focused on building relationships, fostering a culture of collaboration, and empowering the developers to take ownership of the project.

Speaker 2

So he gave them back that sense of ownership.

Speaker 1

Exactly, And that seemed to be the key. Right. By giving the developers more autonomy and a sense of ownership, their morale improved and they started to care about the quality of their work against is they.

Speaker 2

Felt valued exactly, And that's so important.

Speaker 1

And this is where I think software craftsmanship can be a really powerful antidote to low morale.

Speaker 2

Okay.

Speaker 1

I see that by focusing on the craft of software development, fostering a culture of learning, and giving developers a sense of ownership, right, we can create a work environment where people are not just coding Okay, they're crafting.

Speaker 2

I love that analogy.

Speaker 1

It's about taking pride in your work, Yeah, and seeing yourself as a craftsman.

Speaker 2

So this all sounds great, but how do we actually bring about this kind of change in our own teams and organizations? Right, especially when you consider that not everyone is going to be on board with this software craftsmanship thing right out of the gate.

Speaker 1

Yeah, that's the million dollar question, isn't it?

Speaker 2

It is?

Speaker 1

How do we actually drive change and create a culture of craftsmanship in our organization?

Speaker 2

That's the challenge.

Speaker 1

It's definitely not easy, but Mancuso offers some practical advice. Okay, good on how to approach this challenge.

Speaker 2

Well, let's dive into that in our next segment.

Speaker 1

So we've talked about, you know, the challenges, the mindset, the practices, but how do we actually bring about change within our teams and organizations?

Speaker 2

Right? It's one thing to read about these ideas, but it's another thing entirely to actually implement them exactly.

Speaker 1

Yeah, how do we convince our colleagues, our managers, maybe even ourselves that this software craftsmanship approach is worth pursuing.

Speaker 2

Yeah, it's a valid question, and Mancuso acknowledges that. Okay, you know there will be resistance, right, You won't win everyone over immediately, of course not. He even breaks down the types of skeptics to encounter.

Speaker 1

All right, let's hear about these skeptics.

Speaker 2

Which I found incredibly helpful.

Speaker 1

Who are we dealing with here?

Speaker 2

So he talks about the uninformed? Okay, these are folks who simply aren't aware of the benefits of practices like TDD or pair programming.

Speaker 1

Okay.

Speaker 2

Then you have the burned who've tried some of these things in the past but had negative experiences, maybe due to poor implementation or a lack of support.

Speaker 1

I've been there.

Speaker 2

And then there's the time crunched who feel like they don't have time for anything beyond just getting the code out the door.

Speaker 1

We've all worked with that person, and.

Speaker 2

Of course we can't forget the cynic Oh.

Speaker 1

Yeah, who believes that nothing will ever change right, and that we're all doomed to a life of spaghetti code and endless bug fixes.

Speaker 2

It's not going to get any better.

Speaker 1

He even mentions the Ivory Tower architect, Okay, who's more interested in abstract designs and buzzwords than the practical realities of building maintainable software.

Speaker 2

Sounds like we've got a whole prast of characters to contend with here, we do. So how do we approach these skeptics? Do we just like bombard them with articles and conference talks about the virtues of software craftsmanship.

Speaker 1

Well Mancuso suggests a much more subtle and effective approach.

Speaker 2

Okay.

Speaker 1

He emphasizes the importance of leading by example. Okay, instead of just talking about the benefits of TDD, actually do TDD in your own work, right, Let the results speak for themselves, don't tell exactly, and be patient. Change takes time, especially within organizations. Yeah, start small, focus on building trust, and gradually introduce new practices and ideas.

Speaker 2

So it's a marathon, not a sprint, exactly.

Speaker 1

Don't try to force it on anyone. And he also talks about choosing your battles wisely.

Speaker 2

Right, Absolutely, you don't have to win every argument.

Speaker 1

Yeah, sometimes it's better to just let it go.

Speaker 2

Focus your energy on the changes that will have the biggest impact. Okay, and don't get bogged down in debates about minor details. Right, Sometimes it's better to pick your battles and focus on making incremental progress now.

Speaker 1

And Kuso also talks about technical leadership, yes, and how it plays a crucial role in driving change. What are some of the key takeaways for those in leadership positions who want to foster a culture of software craftsmanship.

Speaker 2

Well, he makes a distinction between being a boss and being a leader. Okay, a boss might dictate solutions and micromanage every detail, while a leader focuses on empowering their team. Okay, it's about guiding the team toward a shared understanding and enabling them to make their own decisions.

Speaker 1

He also stresses the importance of communication right.

Speaker 2

Absolutely, It's not enough to be a technical whiz.

Speaker 1

Right.

Speaker 2

You also need to be able to communicate your ideas clearly and persuasively to your team, to your stakeholders, even to those skeptical colleagues we talked about earlier.

Speaker 1

So it's about being able to articulate the why.

Speaker 2

Behind the what exactly. And he also talks about humility okay, which I think is often overlooked in technical leadership.

Speaker 1

Right.

Speaker 2

Humility is crucial. It's about recognizing that you don't have all the answers and being open to learning from others, including those who might be less experienced than you.

Speaker 1

Now before we wrap up, I want to circle back to something we touched on earlier, this idea of the software craftsman as a role model. What does that actually look like in practice?

Speaker 2

Well, it goes beyond just writing clean code. It's about embodying the values of software craftsmanship in everything you do, from how you approach your work to how you interact with your colleagues and clients. It's about integrity, honesty, and a commitment to excellence. It's about setting a high bar for yourself and inspiring others to do the same.

Speaker 1

Menkuso uses this really powerful phrase. He says, a craftsman is never missed for the wrong reasons. What does that mean to you?

Speaker 2

It means that true craftsmen leave a positive legacy. Okay, they are not missed because they were bottlenecks, hoarding knowledge or creating mountains of technical debt. They are missed because they made a real difference. They elevated the craft, and they helped others to grow and develop their skills.

Speaker 1

That's a beautiful way to put.

Speaker 2

It, and it's something we should all aspire to.

Speaker 1

So as we wrap up this deep dive into the world of software craftsmanship, what are the key to acoways, you hope our listeners are walking away with.

Speaker 2

Well, I hope they're walking away with a deeper understanding of what software craftsmanship is all about. It's not just about writing clean code. It's about approaching software development with a certain level of intentionality, professionalism, and a commitment to continuous improvement.

Speaker 1

It's about elevating software development from a job to a craft, and it's about realizing that we as developers have a responsibility to ourselves, to our clients, and to the world to create software that is not just functional, but also well crafted, maintainable, and truly valuable.

Speaker 2

It's about taking pride in our work and striving to leave a positive legacy behind. It's about being more than just coders. It's about being craftsmen.

Speaker 1

What a fantastic note to end on. Thank you so much for joining us on this deep dive into software craftsmanship. We hope this has inspired you to continue exploring this fascinating philosophy and to keep honing your craft. And remember, a craftsman has never missed for the wrong reasons.

Transcript source: Provided by creator in RSS feed: download file
For the best experience, listen in Metacast app for iOS or Android