Last week I
ranted posted about how some members of the agile community are engaging in pointless debates about complexity theory, kanban maestros & scrum blockades. I pointed to a post by Liz Keogh as an archetype of the genre (as I said to Liz, there’s plenty of other authors I could have used). Liz asked for some feedback and was generous enough to agree that I had a point.
If we try to ignore the first commenter, who hilariously and spectacularly, misses the point by wondering if the issue is a “complex problem, possibly even chaotic”. I think Liz has drawn all the wrong conclusions, about the state of the industry.
It is the best of times, it is the worst of times
In my 14 years in the industry I’m confident that there has never been a better time to be a programmer or to work in IT. But thanks to a community of well intentioned “agilists” many in the industry are flagellating themselves into believing themselves hopeless programmers.
I live in Scotland and there’s an old joke about the definition of a Scottish Calvinist:
“Someone who is paralysed by the fear that someone, somewhere, is enjoying themselves”
Similarly the definition of a modern programmer could be:
“Someone who is paralysed by the fear that someone, somewhere, is doing BDD better than they are”
Many programmers are so obsessed with writing better unit tests, understanding the problem better, worrying about their kanban wall, working through Martin Fowlers pattern library, trying to be “masters” not “journeymen” that they’ve forgotten the basic joy of cranking out some code and solving a users problem, and are paralysed by the fear that they’re doing it wrong or poorly.
Ironically, it’s never been easier to write some code and get it downloaded and used. Individual devs can create and upload apps to the App-store for a potential audience of millions. Cloud computing means the home coder can create apps that can scale massively on demand for an initial outlay of a less than £20 quid. While you’ve been worrying about your BDD adverbs the iFart dev just made $40,000.
It’s not that improving your skills isn’t important, it just shouldn’t become all consuming and derail shipping software. Apart from my blog posts, there is no such thing as perfection, and guess what, you learn from your mistakes. And we certainly shouldn’t be putting up barriers to welcome all and sundry into the industry, it sure beats working at Tesco. If you are a “master” your one mission in life should be to make it easier not harder for “journeymen” to improve (BTW I loathe this master/journeyman patronising nonsense, it just succeeds in making programmers more paranoid).
Are you as punk as Ward?
I like to think of Ward Cunningham, Kent Beck, et al as the first punks in our industry. Just like the original punk rock was a reaction to the complex and multi-instrumented prog music as epitomised by bands like Yes and Emerson Lake and Palmer. XP was a reaction against the “analysis paralysis” caused by, as they saw it, the complex and formal software development methodologies of the day. By turning things like TDD, Small releases, CI up to 11 they managed to break the deadlock and start rocking out the code.
XP was the forefather to agile, and sadly since those heady simple days of XP, we’ve slowly been adding the complexity back in – until I overheard someone say recently “I’m not sure I understand the definition of a story, properly” as if that were important. We’re now in a state of “over-analysis paralysis”.
Anarchy in the IDE
I’m not the only one thinking like this, Jeff Atwood recently tweeted:
“all this process stuff at #ordev is boring. At Stack Exchange, we have one process: kicking ass and chewing gum. And we’re all out of gum.”
Zed Shaw sends up the agile community far better than I can using a tad more colourful language at Programming Motherf***ker
So I propose we need to bring back some of that original punk rock spirit. There was a famous punk t-shirt which said “Here’s 3 chords, now form a band”
Similarly in programming we could do with something similar:
- Here’s an IF statement
- Here’s a loop
- Here’s an editor
- Now write an app
Or as Johnny Rotten said “Don’t accept the old order. Get rid of it.”
Pingback: Agile punks – Go write an app | Agile Software Development
Because it is completely impossible to think about how to improve while also getting shit done.
I’m sorry to make my first comment on an unfamiliar blog this snarky. But I have to ask: once you eliminate the fallacy that talking about the work is mutually exclusive with doing the work, is there anything whatsoever left to this argument?
I mean, I get as pissed off as the next hacker when I see the self-perpetuating certification industry that Agile (especially Scrum) has become. But I feel like arguments like this one are missing the point. If someone is hanging up YOUR team with endless discussions of agile theory then yes, they are causing a problem. But I don’t think we can look at discussions in the wider community and assume “they are talking, therefore they must not be doing”.
I cut my programming teeth on WikiWiki, a place where a lot of the aforementioned
“punks” spent an enormous amount of time talking about what they were doing, and how to do it better, and waxing pretty damn philosophical and abstract at times. Hell, Kent Beck wrote “Smalltalk Best Practice Patterns” by forcing himself to stop and write down the reason for every single line of code he wrote.
Doing the work and talking about the work are not mutually exclusive. I don’t understand the leap of logic between “this conversation is boring” and “that means they are getting nothing done”.
Avid, don’t worry this isn’t a luddites charter. In a nutshell, the point I’m making is that many of these so-called “agile” practices are anything but and are adding noise and complexity into the software dev process for questionable benefit.
I don’t think your adding much value here… Just recycling others ideas and complaining about people who the lost the plot… maybe you have too that why you think you have something profound to say. The agile manifesto is really simple:
I suggest you read it again and direct those people you are ranting about to do the same.
Keep it, I did precisely that on my previous blog post https://iainhunter.wordpress.com/2012/02/16/agile-manifesto-the-first-amendment/
Just as a background, we were talking at CALMalpha (one of those pontificating workshops, but at least I was doing it in my own time) about creating a high-trust environment, and it got me wondering why we don’t have one anyway.
In the last decade I’ve worked with everyone from elite teams who really are looking at the bleeding edge of Agile and Kanban to improve, to struggling little internal departments in the middle of nowhere with a very limited pool of developers to choose from and less chance of improvement. So I suspect I may have seen more of the industry as a whole than you have.
What I’ve written isn’t a conclusion about the state of the industry. It’s my experience. I’m also not proposing a solution – just something to try, to see if it helps. Saying “Just ship it!” really hasn’t worked as well as we hoped.
BTW, I have friends working in Lean Start-ups with devs who do indeed knock up the little apps you’re talking about. There’s a big difference between being able to ship and being able to work with others to ship something bigger!
Having said that, I love the quotes and the metaphors. Thank you for sharing your perspective. It broadens mine.
You do know who Steve Freeman is, right?
I can’t speak for anyone but myself and can only comment on what I see around me. I think you DO have a point in the sense that making the jump from a movement to an industry, agile has certainly lost something. You might call it growing pains or whatever.
The very sad thing I see is that there are lots of places in the world where even after more than a decade, we haven’t absorbed agile and are still stuck with waterfall for like 95% of all the projects being done. Furthermore, whenever there is some initiative to move towards a more agile state of things, it’s usually ruled out by management or policy or what not, demanding some sort of certification in order to get some chance for approval. And we all know what that means.
I whole heartedly embrace your call to stop arguing and recall our first and most important responsibility is to deliver value. God knows I’ve forgotten about this myself at times.
I, however, cannot agree with your “three-chords-and-the-truth” rant. Not everyone out there is a Bob Dylan and if a developer stops learning after those mere “three chords”, then don’t come crying about how horrible a code they wrote. That’s as valid for programming as time has shown it to be for music. I don’t think Ward and Kent are punks but rather I think of them as iconoclast because they revealed against the holy cows of software development process. But they’re also thought leaders, not only because of the depth of their ideas but also because they’ve got the technical chops to deliver real value and to earn the respect of other developers, which is ultimately why we listened to them in the first place. I’d equate them more to Mozart or Beethoven than to Iggy Pop or Johnny Ramone.
As the author of the “complex problem, possibly even chaotic” quotation, do I need to put a smiley after it for people to get the point? Perhaps this industry is in even worse state than I thought 🙂
I can tell you that I add back complexity only because my clients insist on it. I’m comprising my goals to help them take a step or two forward. I constantly try to remove that complexity as soon as I can. I doubt that I’m rare in that.
It’s funny, because when I read “Agile has jumped the shark” and so on, I want to tell them that they’ve never even seen agile yet, so what do they know? They’ve never tried it. In that we agree; but telling them “just do it” doesn’t seem to help. Novices need rules to follow and support to follow them mindfully. I did. Now I help give them some rules and remind them to keep their mind switched on. I find that does more than denigrating then for not already knowing how to do it. I acted that way when I was 12.
J.B my point is that we are overloading novices with so many rules and processes that they don’t know where to begin. YAGNI is punk, Cynefin is Mozart. I’d take a Pepsi challenge that 9 out of 10 projects would benefit from a punk approach rather than a Mozart one.
Well, maybe. I don’t know what others are doing, but I save the advanced stuff for people who know the basics.
Are people really teaching Cynefin to beginners? or are they simply talking about Cynefin in the presence of beginners? I see a difference.
JB, thank you 🙂 Like I told Iain last time, if he doesn’t see the point it’s probably not relevant to him. Understanding complexity has made a *massive* difference to me as a coach – enabling me to at least one team performing and get out of their way much more quickly, which I hope would gain Iain’s approval…
The punk analogy is a really good one, too many developers these days aspire to do things the ‘right’ way. They over think the whole notion of ‘rightness’ and miss the fact that what is ‘right’ for one project is not for another.
Righteousness is relative not absolute, and striving to achieve it should not stand in the way of delivering something.
Keith, it’s like you’re reading my mind. Thanks, dude 🙂
Corey Haines recently (personally) forbade me to use ‘if’ statements.
Your argument is invalid. 🙂
OK, I’ll bite… (reader’s note, this is ironic)
Yes, the “Agile Industry” (that’s another ironic bit) has become a mess. Much is counter productive, although I would take that Pepsi challenge that many dull software organisations are slightly less rubbish than they used to be as a result. It might also be true that too many coders are getting caught up in the detail instead of shipping, but that’s always been the case.
It is possible that we might have discovered a few things over the last 10 years (another ironic turn of phrase) that have led us into investigating a few ideas outside our comfort zone. Much of that will be pontificating nonsense, but some of it might just work.
What you’re missing from your snide dismissal (not ironic) is that the very short version of some of the complexity material is “horses for courses”–that different situations require different approaches. Shock horror! (sarcasm, I think) Sometimes the right thing is to jump in and code, and sometimes not. Perhaps it might be good to have some ideas about how to think about such distinctions.
As for the musical metaphors, I would place Ward and Kent closer to Mozart: deeply skilled, they know how to find the critical thing that matters, they are not thrashing on raw energy (and by the way, much of Kent’s practice is pretentiously informed by his wife’s psychology training). Punk (and Rock’n’roll, and Skiffle, and Dixieland, and…) can be a good way to start as long as you don’t stay there. Nowadays, Patti Smith goes to see Wagner at the Metropolitain Opera, and Johnny Rotten is dead.
In the meantime, perhaps you could fix your insulting irony-lapse?
If the casual reader can’t tell if your posts are ironic or not, don’t complain if you, like the Emperor, are accused of wearing no clothes.
Steve, it’s strange that both yourself and Liz have assumed that this is some kind of “just ship it” luddite approach to development. Nothing could be further from the truth, critical thinking is vitally important.
I hugely admire Messrs Beck and Cunnigham they used their smarts to boil down their thoughts into a 12 step plan which was easy to assess and subscribe to (or not) – and assess its suitability to a particular problem. Platitudes like “different situations require different approaches” are a cop out. To what kinds of situation specifically is your approach valid for?
BTW Johhny Rotten is very much alive, last seen selling butter to a bemused British public. The old punks never die, they just fade away 😉
You’re absolutely right, I should have said Sid Vicious.
If you emphasise just learning three chords and punk, then don’t complain if people read it as an appeal to youthful enthusiasm. Platitudes like it’s bullshit to spend time to think about how to work are a cop out.
I no longer have just one approach. I have some experiences that are often useful in different situations. Give me a situation and we can talk it through.
And Cynefin isn’t a formula, although it will almost certainly end up being treated as one. It’s a way of looking at organisations and trying to make sense of them.
lol touché 🙂
There is a good point in here (once I got past the shouting 🙂 Classicism was a reaction against the complexity of Baroque, Neo-classicism was a reaction against high Romanticism, Minimalism was a reaction against academic Serialism. And so on…
There’s always a saw-tooth, and some of what we were trying to talk about at #calmalpha is really a reaction to painting-by-numbers scrum.
«When you don’t create things, you become defined by your tastes rather than ability. Your tastes only narrow & exclude people. So create» — Why the Lucky Stiff
Pingback: Agile – Dealing with complexity by avoiding chimeras | Convivial Coding