Extreme programming and agile development
At the beginning of the century (put that way it sounds like ages ago, huh… :P) I was working at Indra as the coordinator of a development team. In my professional environment I was a bit of an odd one out because, besides being 10 years younger than the average for my position, I was one of the few who refused to give up development to dedicate myself fully to management.
I remember that around that time I read about Extreme Programming and found it very interesting. I have to admit that back then I didn’t really understand the pair programming part, and I’m sure I misunderstood other parts, but I connected with the values it promoted, and as it happened we’d been applying some of the practices in our day to day since the team started.
Once a colleague came looking for me just as I was reading about it. His first reactions to reading the words “Extreme Programming” were along the lines of: “extreme programming? we don’t want extreme stuff here!”. I told him it was an agile process that… “agile, oh! ok, now that I like better”, and the rest of the story doesn’t matter.
The freelancer and the independent professional
Last year I gave a talk at a development community and put in my bio that I was a freelance developer. I have a personal conflict with this kind of “bio” because it forces me to define myself, and that’s something I usually find uncomfortable, especially when I’m in a transition period where even I’m not quite sure what I am. Anyway, someone told me: “don’t put freelance, it’s a word with negative connotations, better say you’re an independent professional”.
The problem of arguing about the word
I’ve mentioned these two anecdotes precisely because to me they’re two examples of the same problem, 15 years apart. We load certain words with so much meaning, connotations and prejudice that we end up loving or hating the words themselves, regardless of what they mean to the person using them.
Over the weekend I watched David Bonilla’s talk on “El programador Moderno” (The Modern Programmer) and I liked it quite a bit, although I didn’t agree with him at all on his interpretation of the Software Craftsmanship metaphor. Basically David reads the craftsman school as saying that “real programmers are the ones who write code that could pass any kind of inspection, that what matters is perfecting your programming practice until you become a software craftsman”. The problem is that, for me, he’s making an interpretation that completely diverges from the one I make of the Software Craftsmanship metaphor.
Is David wrong? Am I? I think the mistake is arguing about the metaphor. I’m sure there are people who interpret the Software Craftsmanship movement the way David does in his video, others who interpret it like I do, and many others who interpret it in completely different ways.
The funny thing is that the Software Craftsmanship manifesto only says this:
Not only working software,
but also well-crafted softwareNot only responding to change,
but also steadily adding valueNot only individuals and interactions,
but also a community of professionalsNot only customer collaboration,
but also productive partnerships
Who could disagree with this manifesto? All it’s missing is a “making the world a better place”! 😉
The danger of criticizing the word instead of the practices
From my point of view, the biggest problem that usually comes with criticizing a metaphor is that you’re not criticizing something concrete, you’re criticizing each person’s interpretation of that word. And the biggest problem is the harm you may be doing to the group that identifies with that metaphor but interprets it differently from you.
David’s example isn’t the first and won’t be the last. At CAS 2015, Leo Antoli refers in his keynote to several metaphors, Software Craftsmanship among them. The funny thing is that in this case he put up a photo of Manolo and Benito, from the TV show “Manos a la obra” (a Spanish sitcom about a pair of bungling handymen). I don’t really know what message Leo wanted to send here, but I imagine that if someone puts a slide in a presentation with your company, your name, or that of a group you identify with, and under it the picture of a couple of botchers, you wouldn’t find it very funny.
Going back to David’s video, anyone who watches his talk with no idea what this Software Craftsmanship thing is might walk away thinking they’re a bunch of people who only care about their code being so clean you could eat off it. A bit later David encourages the audience to get involved in the community, go to meetups, etc. I guess few people from that talk will feel like going to these meetups 🙁
Give useful feedback, don’t let anger blind you 😉
Are Leo or David bad people who should be sacrificed to the god of Software Craftsmanship? Not that either. In the end they’re two people who had the chance to send an important message and did it the best way they knew how/could. I’ve never been in the position of giving a talk like that, but I imagine it can’t be easy.
Communicating isn’t easy, and this post is proof of it; I’m sure it’s turned out to be an unbearable bore that doesn’t express even half of what I wanted to say. That’s why I think feedback is so important. If you have the chance to give feedback, don’t hesitate, but do it respectfully. For example, I replied to David on Twitter and I hope to continue the conversation one day over some beers. I gave Leo mine at CAS, right after the keynote, and I think it was a mistake because I’m sure he doesn’t even remember what we talked about xD
By the way, I’m actually not into the Software Craftsmanship metaphor either, I’m a software gardener! 😉