Software Craftsmanship: Programming as a Craft

Episode 4

February 17, 2011


community xp

The Agile Weekly Crew discuss Dan North's article Programming is not a Craft.

Derek Neighbors: Welcome to another episode of the Scrumcast. I’m Derek Neighbors.

Jade Meskill: I am Jade Meskill.

Clayton Lengel-Zigich: I’m Clayton Lengel-Zigich .

Software Craftsmanship Programming As A Craft

Derek: Today I wanted to talk a little bit about, programming as a craft. Dan North had made a post, (Programming Is Not a Craft), the other day and it kind of lit a little bit of a storm in that agile or at least a Twitter world of Agilists.

So I just wanted to get your guys’ take on what you think about programming as a craft.

It’s Not The Code

Jade: That’s not a loaded question there. So I, I read Dan North’s article. I really enjoyed it. What kind of struck home for me the most is, he talks about, that really programming is just a tool and it’s not the craft itself.

It’s not, nobody is appreciating the beauty of your code for its own sake. Like a beautiful piece of furniture or a work of art or a sculpture, something like that. That the product has an intrinsic value. And with code I agree with him that it’s just not the same thing. What I really feel like we should be looking at as we should be.

Craftsman of information, right? The information that, that people see the value delivered through, the outcome of the code that we create is really what’s beautiful. It would be like a woodworker idealizing, the tools that he’s using to make the craft instead of the craft that comes out from using those tools itself.

So look at my beautiful lathe isn’t it so amazing. Like it can do all these awesome things and has these great features. And I put all this time into building this lathe nobody cares about that, except maybe other woodworkers, really the value is in the product that you’re creating the end result of what comes out of all those.

I don’t know. What do you think Clayton?

Clayton: Yeah, I like the idea of software craftsmanship in the sense of, taking what you do seriously and, wanting to improve and do things the right way and that kind of thing. But I think you’re a lathe analogy is good. I think a lot of times people get so caught up on the beautiful code thing and wanting to, strive towards that.

And you, so easy to lose sight of, what is the actual point of what I’m doing? Am I being hired or am I working for someone to, to write beautiful code when the, the end user, obviously doesn’t see it. They’re not concerned with that sort of thing, what’s the real motivation.

So I think it’s easy to get those two mixed up. And I think the, the personality type that trends towards spending a lot of time, perfecting little things and going down rabbit holes and all those things are probably the same kind of personality types that tend to say I’m going to be, do better at my job.

If i do these coding dojo, coding, kata things or whatever, and I’m going to spend five hours writing the same thing over and over again. And then, they go to work the next day and they totally missed the point of what the business analysts goal is or whatever, it’s like, those are two different things.

I just don’t. I agree that they’re important and I don’t want to totally throw it out the window, but I think you have to be very careful tread that, walk that line and not lose sight of either side.

Professionalism vs Amateurism vs Craftsmanship

Jade: So you think there’s confusion between professionalism versus amateurism versus craftsmanship?

Clayton: Yeah. I would say expand on that a little bit more, but I think I agree with that on the surface.

Derek: So a lot of the detractors to the statements that Dan made. Were that he was really calling programming in the sense of the word, using craft and art is synonyms to each other.

And, a number of people said if you consider a carpenter, the ability to be a craftsman carpenters can build houses or they can build fine furniture. And a master craftsman that builds a house, it’s still building something very functional, but the kind of the devil’s in the details to, the quality that there.

Put forth in that. And maybe the better question, I think there’s a couple of things is, is programming an art. Or to me, the question really becomes what is programming just writing code or is programming solving solutions.

Clayton: Yeah. So I didn’t, I’ve never ever thought of myself as an artist.

And. I think that speaks to the fact that I don’t think of programming as an art and I don’t think of it as just writing code, but I think it is definitely the solving problem thing, and I think that’s why it’s easy to make the argument of, let’s say that you’re some, a Ruby on rails shop, and you want to do work for some XYZ company and, they all use Java internally, but if you can solve their problem using your technology then with differences and make that kind of argument. And I think there’s a lot to be said for that. It isn’t just writing code, but it is all about solving problems.

And however you get to that, I think is there’s so many different ways to do that. And I think those are all okay. And I think it is mostly just about, how am I going to solve your problem? What solution am I going to provide for you that gets you to where you want to be?

Jade: Yeah. And I think again, going back to my previous analogy, I think.

Programming itself and the languages that we use, they’re just tools for the toolbox that we have. Where I think the art comes in is looking at the finished product. If I build a beautiful web app, that is functional and provides, value to, the people that I’m targeting, whatever it may be.

I think there’s definitely artistry in, the outcomes of the programming that we’re doing, but the programming itself. While I think very fulfilling and cerebrally stimulating and all of these really great things. The programming itself, I just don’t feel is an art form by itself

But Programmers Are Special

Derek: so do you think some of the this is propagated, most programmers, I know think they’re made differently think that they think differently than the rest of the world and that there is somehow I’m special. And do you think that maybe some of that thinking or that elitism leads to, if you’re just say programming is just this tool that, that helps us provide solutions to really difficult problems.

That you’re demeaning. The fact that I’m just a tradesman, like everybody else who picks up a tool and solves problems. Do you think that kind of adds to the the intrinsic, like pushing away of the idea of, how dare you say that? What I do is not this creative solution masterpiece, a Magnum Opus of a solution in code.


Jade: sure. The first guy that found fire thought that. Pretty unique and made differently, eventually, everyone learned to understand that technology. And I think that’s where we find ourselves is we are on the leading edge of understanding something that a lot of the general population just doesn’t understand, but that doesn’t necessarily mean that we are.

Inherently different from them. It’s just that we have a particular skill with this thing, just like a woodworker or a sculptor has a unique gift and skill for, seeing what’s inside that block of marble and bringing it out. Does that make them better than the rest of the population?

I don’t know. There’s certainly egocentric artists that feel that way. Just as there’s egocentric programmers that feel that way. I just, I don’t feel like it’s that special that there’s just something genetically different about us. I do think that, we are imbued with a certain talent and have a particular craft in a way to manipulate this information.

But, eventually that’s going to become the status quo that a lot of people are going to understand how to do these things. It’s just going to become part of normal life.

Clayton: Yeah. And I think if you’re, if you’re a programmer now and you think about what makes you different than some guy in India or the Philippines or Costa Rica or wherever, and, the only difference is that you don’t have an accent and you’re in a good time zone, then, quit your job and go do whatever retrain yourself.

Cause I think you’re right, dude. There’s nothing over time that people aren’t going to be able to, you’re going to be replaced if that’s only you can do. And so I think there’s a lot of elitism in the idea of. I’m a master craftsman because I, in my code, when in reality, I think that, the people that are very successful in the software development industry it’s not, it’s not about code it’s about the people stuff, right?

It’s a bit of human communication and the soft skills and those things that’s, I think you become successful. It doesn’t necessarily matter how, as much as you want to inflate your ego or think that you’re different than other people or you’re built differently. And that you’re a true artists slash crap.

That’s all fine and well, but I don’t think that’s in the end, what it really separates the good from the bad or the, the best from the good

Jade: And something else. I just thought of, you don’t see a lot of people walking around saying that I’m a master Chisler right. Or I’m a master at the drill press.

No, those are the tools that they are using. To again, bring out their craft to, to deliver something of value to people. And I think that’s where we just keep getting hung up too many times is on the tools themselves. We, we just want to, nasal gaze or navel gaze at all of these, awesome fun tools that, that we’re getting into.

And we just get so obsessed with that, that we forget about the end product.

Breakdown Of Software Craftsmanship Manifesto

Not Only Working Software, But Well-Crafted Software

Derek: So one of the other big criticisms was that the kind of software craftsmanship manifesto was a little bit on the weak side compared to say the agile manifesto in terms of taking a really strong, hard stance. Against the status quo in really trying to separate.

There’s just four points on it and I’d want to go over each one of those points and then get your guys’ thoughts about what you feel about those. So the first one is not only working with not only working software, but also well-crafted software what’s the benefit in that differentiation between working software and well-crafted.

Clayton: I don’t know. That, that seems like such a vague word that’s like fair or something, geez, I don’t know. Well-crafted giving so many different things to so many different people and then even if you know what I mean, what my standard of well-crafted software means that I don’t know it compiles or something.

It definitely doesn’t take a very strong stance, that it’s totally open to interpretation. Even more to that, or, beside that point it’s, maybe working software is well-crafted enough. I don’t know.

Derek: Yeah. To me the thing is it sounds more like they’re trying to make it art, right?

Like that, working software is just working software, but well-crafted software. You really have to understand the dynamics of software. It, it’s such a Subjective thing, if something’s working and the user thinks it’s working and it provides the function that it provides and it’s maintainable, w what level is, what the hell is well-crafted?

Jade: It’s not just painting, but beautiful painting.

Not Only Responding To Change, But Alos Steadily Adding Value

Derek: Okay. So the next one, not only responding to change, but also steadily adding value.

Jade: Wow. If you’re not adding value to what you’re doing, what is the point of doing what you’re doing?

Clayton: Yeah, no, responding to change, does that mean, there’s again, the kind of a big thing, there is that like responding to changes in the marketplace, That would inherently be adding value.

If you’re saying there’s, some new competitor and they’ve got this thing and we need to add these features, but I agree if you’re not like, I think that they should be flip-flopped, it’s like you should always be adding value and then also it would be nice if you responded to change too in, yeah.

Not Only Individuals And Interactions, But Also A Community Of Profresionals

Derek: I think they’re playing off of the concept of. Responding to change over following a plan from the agile manifesto. And so they’re saying not only respond to change, but to be able to add value. I think, I guess for me, it like you guys, it’s just a given that you’re adding value otherwise, what are you doing?

The next one is not only individuals and interactions, but a community of professionals.

Clayton: I think this one’s better than the other ones. I liked the idea of saying that, people should strive towards professionalism having a community of people that, and I guess it’s funny because I don’t think that if you were to ask, say some guy in a marketing department of some corporation, what do you think of the software development, professional or industry?

Are they professionals? Are they amateurs? I don’t think anyone would have enough. So I feel like that

Jade: I think they’d have an opinion. I don’t think we’d like to hear what their opinion is.

Clayton: Okay. Yeah. Maybe fair enough. I think this one, to me at least speaks more towards, how developers look at each other in terms of, how do they, how do we treat the community and what do we do in the community to strive towards professionalism?

Jade: Yeah. I I think the problem is just the vagaries of what is a community of professionals and, how do you belong to such community? What are the credentials that include you as a professional in that community? What does that actually mean?

Clayton: Yeah.

And I think it’s it’s funny cause So I think, all the, software industry, whatever, maybe it has not even has a community though, is I think that so say Ruby, I think Ruby has a great community. There’s a lot as far as like participation and new things and all that stuff, but does, does the developer that works nine to five?

Does he feel like he belongs to a community? Probably not. I feel like there’s so many people, the majority of people in the software. Are not people that belong or feel that they belong to a specific community. They feel like they do a job. I think they feel that they’re tradesmen, right?

Jade: Yeah. That’s a tough one.

Not Only Customer Collaboration, But Also Productive Partnerships

Derek: Okay. So the next one is not only customer collaboration, but also productive partnerships.

Jade: So again, I’ll go back to, if you’re not engaging in something that is productive. Why, what are you doing? Maybe I’m just insane to assume that that’s how rational people behave, but I just don’t, I don’t understand why there’s a need to explicitly call that out.

Derek: Yeah. For me, the hard thing is, productive partnership. To me, if you’re collaborating partnership just makes it sound like it’s something way more formal than it needs to be, which I think is a mistake. I think that’s actually going in the wrong direction and productive.

If you’re collaborating, I don’t know. I’ve not seen too many instances where somebody says they’re collaborating, but they’re not being productive in that collaboration. So to me, it’s not so much that I think a productive, partnership’s a bad thing. I think partnerships a little formal, and I think by saying collaboration that you’re really talking about being productive to begin with.

Clayton: Yeah. I feel can you read it one more time?

Derek: Not only customer collaboration, but also productive partners.

Clayton: So I feel like if you’re, collaboration you’re doing it right, then it seems like you would just get the productive partnership for free. You, I don’t know what you would be doing that would be I’m highly collaborative with my customer, but our partnership is not productive.

Like I, I don’t see how that could happen. Yeah, it just doesn’t seem like it would.

Derek: Alright

Certifying A Craftsman

Jade: sorry. I’ve got one more thing. So the thing I’ve found the most interesting and I didn’t really think about it until Dan North pointed it out was we’re going to have this big craftsmen movement and we’re going to talk about all these things and, it’s the best of the best.

So click here to sign up on this web form to be a software craftsman. And that’s it.

Derek: I think that is a segue to another episode in the future, which is, when we talk about agile, when we talk about scrum, when we talk about XP, when we talk about certification, I think one of the real problems is figuring out who’s really competent, right?

And it’s not as easy as being able to sign up for a form or to take a test that when you really talk about, if you were to say, you wanted to go to a surgeon. How do you tell what, who a good surgeon is?

Jade: Especially when you don’t know, you’re not in the industry.

Derek: Just because they have an MD just because they’re board certified.

There’s things that help a little bit, but again, I think it’s a good discussion for another another episode. So see you next time.

Related episodes