I spent last Monday and Tuesday at the JAOO conference in Brisbane, and I have a couple of things which I want to say I thought interesting. (‘JAOO’ btw, because I see people asking about it on Twitter, is pronounced a bit like “yow” but with the “j” from German/Dutch like “jah”).
Firstly, I found the second day much better than the first. I did see Michael Nygard’s two talks on Monday morning and got a lot a lot of useful information from those. Titled ‘Failure comes in flavours’ the first was a great overview of the types of failure that applications running in production encounter, the second ways to avoid those failure modes. Basically it’s how many of the non-functional requirements can eat your app (and even the entire integration if you let the failure propagate easily) if you don’t give careful consideration to them. He’s got a book so I’m going to check that out next.
The first day for me was severely spoilt by a poor vendor presentation (hint: one that is not Oracle, not that they would have necessarily done any better), which I should have known better to avoid. I already swim in the BPEL/BPM/SOA soup, I fully understand just how broken it is as an actual development concept (e.g. anti-test-first to name just one). I was fooled by the title to thinking maybe it had some insights to avoid the worst of these busted concepts, but no, the vendor’s tooling is all the rage if you drink the poor-tasting conceptual kool-aid. This stuff is marketed at managers and non-coding architects who choose to buy this stuff then dump it from a very great height into the laps of the poor developers who have to mangle it into a deliverable system (half the time with a development budget just a tenth the cost of the licence). Anyway back to the good stuff.
Mike Cannon-Brookes from Atlassian (which makes great development tools, highly recommended) gave a mostly great closing speech on the first day which made me think about a couple of things. It wasn’t until the next morning however that it crystallised in my mind. It’s a bit of a minor criticism.
Mike threw out a minor line, an aside really, talking about Atlassian’s agile development methodology, and basically that said, people who say ‘you must do this’ are wrong, because they miss your context. Here ‘this’ is some type of agile process artefact like maybe, pairing, or estimating in story points, or whatever. Well, it’s wrong and on two counts. The first count I realised just after the talk but couldn’t articulate it correctly in semi-drunken conversation. That first count is very simple. Mike’s timeline on his Atlassian experience has him, if I recall correctly, starting his company and creating the great tool Jira, in his early twenties. Now as he dissed “old people” in his talk I’m going to give some back. In your twenties you’ve got no idea what works, in a general sense. You might know (or think you know) what works for you, but that’s a completely different kettle of fish to what works generally. Why not? The word is experience. Its not until you reach … oh … I’ll say around 35 (and so maybe lose the capacity to build technical innovation, perhaps, as Mike asserted) that you can have real insights into process and people. It’s just because at this point, you just have not got enough practice at it (see Malcolm Gladwell’s recent book for some basic data about the power of practice).
But the bigger point I think is the word context. The phrase ‘my context is different’, is this classic phrase which really means ‘that won’t work here’ and that really means, I don’t want to change. As a consultant , you hear this stuff all the time: … “We’re unique, our company is not like those other companies. We can’t do that here. Detailed estimates are really the most important part of the development process. The budget and the features must be fixed. We have a reporting process that allows the budget and features to be fixed. Pair programming doubles the time it takes to deliver the features. Quality doesn’t matter. Technical quality is a business decision. The business are too busy to talk to you.” … And a whole other other bunch of epic agile fail. Someone’s context is exactly why they aren’t as agile as their competitors and are looking at using ‘agile development’ to help save them … but as long as they insist on my context trumps all, they will only get a fractional improvement and not an order-of-magnitude one. But Atlassian make great products, so it doesn’t mean you have to have ‘scrum’, or ‘XP’ to do that, the greatness I guess, is orthogonal. However if you are looking to ‘do agile’, then do agile. Pick a method like Scrum or XP then do it all. How do you know pair programming will fail in your organisation if you don’t try it first? You don’t. Do it like it says to do it (e.g. the Kent Beck books) and after a few months experience for your team, use the lessons from the retrospectives that the team has discovered to improve the process. Do not cripple the process with your ‘context’ before you even try.
And right on cue, on the second day along comes Steve Hayes with a great presentation on exactly this topic: “How your choices affect your agility”. Steve is a fantastic speaker, entertaining and pretty insightful too I thought. I rated his talk the best talk of the conference. He said he got lots of red cards (participants could rate each talk as green==good, yellow==ok, red==bad) in his Sydney session – what is the matter with your people? It was a great talk. I loved the part about naivety. To propose a solution from the most naive perspective possible, and what an epic win it is when a customer says “ok”! It means I understand the problem! I even tried this today with my client, I didn’t get the instant “OK” but working from the basis of that incredibly naive solution we did manage to eventually envisage the simplest thing that could possibly work. And I love that. So thanks tons for that insight, Steve!
Another great talk on the second day was Linda Rising’s ‘Deception and Estimation’ talk. Turns out (via psychology and evolutionary biology) we engage not in rational decision making but in emotional choices all the time. All choice is emotional. So we engage ourselves in self-deception all the time. And none of this is bad … it’s good. People who don’t engage in this constant self-deception are generally clinically insane. So get over it, and yourself, and when you’re estimating (and from the sounds of it, doing any sort of major-impact decision making) and get as many perspectives as you can from the most diverse range of people you can manage (to avoid groupthink, which is I guess, the situation where everyone’s self-deceptions all align). Joshua Bloch’s second-day keynote was also highly worthy of praise. Good insight and excellent effective code examples (yes, in a keynote). Also worth the greatly discounted entry ticket price was the many interesting conversations I had with past colleagues and new friends on many different development issues.
In short, JAOO was generally of very high quality and I hope is keeps coming to Brisbane! Will definitely be going next year. Many thanks to all the organisers, presenters and sponsors.
4 Comments
Context does trump practice, but I agree – people use it as a “We don’t do that here” card.
A good example of a context where pairing, for example, isn’t feasible: distributed teams (like 7Signals), where the company deliberately recruits globally for people to work remotely. Conventional pairing can’t work, and tele-pairing tools are primitive enough to not be effective. Another example would be in your typical “big-business” organisation, where the devs work in narrow one-person cubicles and the management level you deal with have no authority to change the floor layout.
If you combine Mike’s message with Steve Hayes, I think you get a telling argument: context matters, but consider your choices and what you gain and what you lose. Continually look to improve, and be aware that not all attempts to improve will work.
Sounds like a good conference – wish I’d been able to set aside the time to go.
First, thanks very much for the kind words. I hope I didn’t say *lots* of red cards in Sydney – I got some. And to be fair, I was having a better day in Brisbane. Some days are good, some aren’t.
On naivety, I’d go one step back. When you go in with a **simpler** solution than your own minimal solution, then you have the epic win, because you *didn’t* understand the problem. You’d already overcomplicated things! Original credit needs to go to Brian Marick as well – I’m just the messenger.
Interesting to hear about Steve’s talk in Sydney receiving “red cards”. I was in the audience in Sydney and found Steve to be an engaging speaker delivering a message that made a lot of sense. I was already quite attuned to what Steve was saying as he derived a lot of the talk from Brian Marick’s seminal “redefining Agile” talk a while back.
Linda Rising’s “Deception” talk was one of my highlights, but Avi Bryant stole the show with ’1001 Iterations’ on the second day: A really inspiring, practical walk through of the evolution of a real project.
Steve; sorry to imply you had any level of fail on that talk, it wasn’t worth ANY red cards and was very enjoyable.
Robert; I’m now very suspicious of any ‘my context always triumphs’ statements, because if the organisation never tried ‘x’ how do they know that their context trumps ‘x’? Of course, if you can say, yes we tried ‘x’ and in thru the mechanism of the retrospective we found that the developers said ‘Y’ so we changed ‘X’ to ‘Z’. … i say … let X=X.
One Trackback/Pingback
[...] let x=x › JAOO Brisbane 2009 highlights and thoughts [...]