A question about some people
Over the past few years, some people who I would have counted as “being Agile” are now counting themselves as members of the Software Craftsmanship movement. I’m interested in the reasons why.
I’m not saying that craft isn’t a part of Agile. I’m not saying that people who identify as Software Craftsmen think that Agile is bad. I’m not saying that they’ve abandoned anything. I’m not pointing and shouting “Look! A fight!”, nor am I trying to start a fight.
I’m saying that some people who had energy for, and put energy into, Agile are now doing it for Software Craftsmanship: they’re on one mailing list instead of another, they go to conferences with one label instead of the other, their company’s marketing material used to use the word “agile” and now uses the word “craftsmanship”.
So: this is a matter of the emotion and self-perception of actual people, not of the definitions of terms.
I’m not interested because I think these people are wrong, or need to be fixed, or anything judgmental like that. I’m interested because knowing why people do things is interesting.
If you feel like you’ve made such a move, why did you do it? Thanks.
April 20th, 2011 at 9:45 am
Considering myself to be one of the persons who moved from Agile to the thing that turned out to be Software Craftsmanship let me explain my motivation. Back in 2008 discussions around software development raised. Scrum - being adopted by the majority of organizations that “went” Agile - was blamed by some persons. Yet others spoke against this. One of the person who spoke against it was Robert Martin, who held a keynote at Agile 2008 stating that we should value craftsmanship over crap - which he later turned into craftsmanship over execution in the overall sense of the Agile manifesto. From that day things started to emerge as the Software Craftsmanship movement in its own right - yet part of the Agile movement from my point of view.
The underlying problem from my perspective is that with the early and late majority adoption of Agile, the term Agile has changed - for worse. As Michael Bolton points out, for any abstract X, X is X to some person (at some time). While Agile has been Agile to the visionaries who wrote the manifesto, in 2008 and even in 2011 Agile is different from the perspective that started it in 2001 due to a huge amount of factors that have changed in between. Waterfall is now no longer the enemy to fight, but rather Agile has become a de facto software development method. (At least for the US.) When Elisabeth Hendrickson told me in 2010 that she was contacted by the US military on Agile consultancy, she finally saw Waterfall disappearing. Maybe not too fast, but it’s falling.
Yet, the early adopters of Agile methods were drawn to technical mastery with methods such as XP. But just few teams nowadays still do XP, and this leaves a large gap for technical practices as a ten minute build, TDD, customer tests, acceptance test-driven development, etc. The Scrum Alliance tried to compensate for that in 2010 with the Agile Developer Skills courses and the Certified Scrum Developer program. The scrum.org program did something similar. Still few people are attracted to it.
Software Craftsmanship brings the discussion back to the discussion of technical excellence together with a focus that goes beyond customer collaboration. The discussion back in 2008 arose around what to expect next, after Agile. Software Craftsmanship was the first to call for raising the bar compared to what Agile had become.
April 20th, 2011 at 9:54 am
I wanted to give a longer explanation, maybe so I can understand my thinking better too. I do feel the craftsmanship movement is addressing a specific part of agile that is left out of many implementations, that is the idea of quality code helps us get/and continue to get timely deliveries that meet customers needs/wants. It is hard for me to say what percentage but I have been coaching for > 7 years and involved in agile projects since 2001. The early projects were xp based and were heavily engineering focused and not near enough focus on the customer/business side. I now see companies ‘doing’ agile and that means iterative planning. They discuss good engineering practices but not fixing their problems, usually people related, in regards to being able to actually do these practices. Surprise, surprise they have issues after a few months and either they need to hire a bunch more people to keep up with testing the system and/or they end up with a mess that breaks quite often when a change is made. This is what leads me to like much of what is discussed in the craftsmanship ‘movement?’.
I am also clear that these ideas alone are just as likely to be abused as was iterative planning. Their are many other things to think about in different context.
I think all of these areas will be abused when we forget that agile was suppose to be about people first. How do we keep our company, economy, etc. moving in a way that is both beneficial but with out abusing people? I think it would be and will be abused in any movement that hits the main stream. It will become a commodity that is narrowed down to a set of best/good practices with no concern for people. This will usually be destructive at some point and will go down in benefits.
more thought is need I think.
April 20th, 2011 at 10:03 am
The agile movement began with a balance between technical and management disciplines. Nothing shows this better than Ron Jeffries’ circle of life. (http://xprogramming.com/images/circles.jpg)
In recent years, especially with the increasing popularity of Scrum and CSM, the balance has been broken, and the agile movement has tilted very far towards the business (project management) practices. This has reach a level where teams who totally ignore the technical practices still claim to be doing Agile. The result has been something of a disaster. (See Martin Fowler’s paper on Flaccid Scrum. http://www.martinfowler.com/bliki/FlaccidScrum.html)
Some of us want to bring the balance back to the Agile movement. We want a renewed emphasis on the technical values and practices that were always intended to be a part of the agile mindset. And so the Software Craftsmanship movement was born.
For all intents and purposes this movement is a movement _inside_ of the agile movement. This is most plainly evident in the software craftsmanship manifesto where the original values of agile are reaffirmed and then amplified. (See http://manifesto.softwarecraftsmanship.org)
April 20th, 2011 at 10:46 am
My observation is that the development community (some) have ended up feeling short changed by the way Agile is being realized in many organizations. Large IT, product or embedded development shops have been ‘adopting’ Agile as a way to increase the productivity of producing code. However, moving the development teams to Agile and transforming a large organization to Agile are not the same thing. Accounting systems, budgeting, project initiation and approval are huge bureaucracies to move.
Much of the P.O., Scrum Master or other Agile program management training is based on creating laser focus on customer value. (I note that the question you put out earlier in the week asked about business value which is a wider net.) The question that keeps getting asked is what value does the customer get from paying back this technical debt? What value does the customer get from simplifying this design? What value does the customer get from cleaning this code? The answer is almost universally none. So, the P.O. keeps pulling those activities out of the backlog because these are all internal codebase issues, the customer does not see it or realize value from it, at least not directly. The P.O. motivation is that if they just get this one out in a way that is deemed successful then can look forward to a promotion and a change of responsibilities. That means that too often they are not around to have to deal with the future value of these decisions. Who is? The development teams!
When we look at the 12 Agile principles we get the impression that the ones at the top of the list are all about the customer and the ones at the bottom of the list are all about the development team. Due to the customer only focus, sustainability, simplicity, technical excellence, emergent architecture and design are all perceived to have fallen off the table. The development teams end up feeling short changed. They felt they finally had an approach that would support their intrinsic need to build software systems they could be proud of. When that did not happen they went looking for a way to meet their own needs. Thus, the Craftsmanship movement.
April 20th, 2011 at 11:31 am
I want to share analysis model that helps me think about these two communities. I am not trying to pick a fight either, just to share a model.
I think that culture can be used as a model for clarifying the relationship between Agile and Craftsmanship. Using the Schneider culture model, Agile is largely about Collaboration and Cultivation cultures while in contrast Craftsmanship is about Competence culture.
I would argue that people who are concerned with being the best software developers in the world are interested in Craftsmanship.
People interested in building high-performance teams are in interested in Agile; they may care about Craftsmanship too, but this is a secondary concern.
Further, the invention of the Software Craftsmanship movement was necessary to differentiate from Agile culture.
Please see http://bit.ly/eE91lQ for a series of blog posts that explains these ideas in more detail.
April 20th, 2011 at 1:33 pm
I expect it’s part of the natural lifecycle of this kind of methodology.
1. Talented groups of individuals find a way to be more effective/creative/productive. They are interested in maximizing something. They codify *the way*.
2. Mainstream adopts *the way* but as it moves into the mainstream, the focus drifts away from maximizing good things towards minimizing bad things. It’s not laziness or lack of caring. Larger organizations just have different priorities (see Big Mac vs Naked Chef at http://www.joelonsoftware.com/articles/fog0000000024.html ).
3. Talented groups get disenchanted with the distortion of *the way* and find a new way.
It’s interesting to me that many of the earliest adopters of agile came at it through XP. I wonder if software craftsmanship would have even been a movement if XP had remained the dominant brand of agile.
April 22nd, 2011 at 11:16 am
Like Bob says, Software Craftsmanship /is/ Agile. I don’t know anyone in the UK SC scene who eschews Agile, in fact I see all the same people at Agile and SC events I attend.
I don’t understand why many people are so keen to portray a divide. It’s certainly nothing I’ve experienced from within the SC community.
May 5th, 2011 at 11:39 am
[…] In a comment on this blog, Daniel Hinz wrote: The question that keeps getting asked is what value does the […]