agile

Update: There’s a link to a video of the same talk given at an agile conference earlier this year. See the end of the article for details.

Here are my notes from the FutureRuby presentation titled Artisanal Retro-Futurism and Team-Scale Anarcho-Syndicalism by Brian Marick.

Sticker: "Artisanal Retro-Futurism and Team-Scale Anarcho Syndicalism"

  • This talk is about economies and (dis-economies) of scale
  • The idea behind this talk got started around 2000 – 2001, when I visited agile projects and people on the teams would say things like “This is the best project I’ve ever worked on! Why do it any other way?”
  • Then, two years ago, I talked to someone who’d been doing Scrum for a year and he said “At least my job doesn’t suck as much as it used to.”
  • Hearing stuff like this, people like me – the Agile Old Guard – we get distressed. We’d much rather hear what people used to say
  • The problem is that the economies of scale that drive corporations to be larger and make more money are also diseconomies for the people working within them
  • I will differ from what Nathaniel [Talbott] said in his presentation. I believe that even the wage-slave can know “joy-in-work”
  • What used to be present in Agile projects that’s gone missing in new ones? I’ll tell you what it is: it’s Artisanal Retro-Futurism and Team Scale Anarcho-Syndicalism!
  • "Yes it’s true, not everybody immediately grasps what I mean."

 Techno-anarchy

  • First, let’s consider what “anarcho-syndicalism” is
  • Consider an agile team. The see themselves as alone in a dangerous place, where no one else is offering any help.
    • It would be nice if a “daddy” swooped in and help save them from the mean people
    • The are problems with this approach: it’s pathetic, and it often doesn’t work
  • Here’s a story for you to illustrate things:
    • An agile team was made to work in cubicles, like the rest of the company
    • Agile methods aside, cubicles are the "single worst arrangement of humans and objects in space for the purpose of developing software"
    • The team proposed changing their workspace to an open one
    • Furniture Police turned them down
    • In response, the scrum-master went to the office over the weekend. She disassembled the cubicles and changed the office layout to an open one. On Monday, she declared to the Furniture Police that “If the cubicles come back, you will have to fire me.”
    • They gave in
  • Anarcho-syndicalism is a political/economic/trade union movement
  • It peaked in 1923, and was crushed by the U.S. government in 1924
  • “Anarcho” comes from “anarchy” — they wanted to see government go away
  • “Syndic” refers to a trade union – they wanted to replace corporations with trade unions, or more simply, they wanted to see corporations go away
  • Anarcho-syndicalism has these principles
    • Worker self-management:
      • Workers decide how to control factory
      • They’re not fans of hierarchy in general
      • The aforementioned “Cubicle Incident” is an example
    • Direct action:
      • It’s about not waiting for “daddy” to swoop in and save you
      • It’s about taking action – doing something and then saying to anyone who disagrees “What are you going to do about it?
      • There was a difference of philosophies in the labour movement over direct action:
        • Some believed that they should elect/influence/bribe elected officials to pass laws to ban the burning down the houses of people on strike
        • Other believed in a more direct form of direct action: beat up or kill the people who tried to burn down the houses of people on strike
    • Worker solidarity:
      • This is the one principle that wasn’t followed in the cubicle incident
      • The scrum master could’ve been fired
      • Under worker solidarity, the entire team would’ve said “You’ll have to fire us all!”
      • (That’s okay, though: “Scrum masters are not hard to come by” – you’ve seen the courses: "Two days, $2000, you can be a scrum master!")
  • I invert the anarcho-syndicalist flag
    • I do it to reflect something the original anarcho-syndicalists didn’’t care about: team scale
    • I believe that teams should band together more
    • Sometimes it’s "our cursed individualism" that gets in the way, the need to be the Ayn Rand hero — we’d be a lot more effective if we could get past that
    • I am advocating teamsmanship
    • We need more power in the hands of the team to counterbalance the power in the corporation
    • Remember, power can be used for good, evil…or stupid
    • If the team is completely inwardly-focused, they will do stupid things
      • Completely inwardly-fcoused teams devolve into fighting over things like who gets the workspace with the most light
  • There needs to be a manifesto for software craftsmanship, to move from journeyman to master

Plate of artisanal cheeses

  • Let’s now consider what “artisanal” is
  • It’s all about the cheese
  • As an artisanal cheesemaker, I care about cheese
  • I want to make really good cheese for really good people who will enjoy the cheese
  • I care about the cheese!
  • The interests of the executives in an organization are not necessarily aligned with the owners (shareholders) or the pesky customers
  • The teams working on a software project for an organization often care more about the project than the organization’s executives do – in the software field, they are the artisanal cheesemakers
  • We – as metaphorical artisanal cheesemakers — care about the cheese, which means “we should get away with the things we want to get away with” because these things help us get our work done

Retro-futuristic cityscape

  • Now let’s consider what “retro-futurism” is
  • The future ain’t what it used to be
  • Look at all the old science magazine articles about the future: flying cars, cities underwater and on the moon and robots that clean the house. Only one of them came true!
  • "We have 60 years of envisioning the future, and all we got for it was the Roomba"
  • The unfulfilled promises are now part of popular culture: “Where’s my jetpack?"
  • Retro-Futurism is about having optimistic images of the future
  • The spirit of retro-futurism is in Infinite in All Directions by Freeman Dyson
    • Chapter 2 is pretty good
    • The book is really good at conveying a sense of possibility
    • It says that you keep finding new things when you go in the small direction, towards the sub-atomic, but you also find new things in the big direction too, towards the universe
    • You also find new things as you go outward and see the interesting complexity of life and social organization
    • It says that there’s no end to what a curious scientist could discover
    • It is permeated with a spirit of hopefulness
  • As for you and me:
    • We’re limited in most directions
    • I want to us to try to convert ourselves to infinite in all directions””
    • Holding conferences like FutureRuby is one way to do this
    • One way not to do this is to listen to people like me
      • I once had a …vigorous debate…Ron Jeffries about test-first programming
      • It was about what programmers would rather do – would they rather write tests or new code? I kept saying that “test-first is never going to work”
      • I also said: ”In two years, you’re going to ask yourself whatever happened to all those unit tests? They’ll be gone — it’s just the way the world works!”

Painting: "Liberty" (from the French Revolution)

  • As programmers, we’re used to working within constraints
  • The context in which we work makes agile hard – we need to change the context
  • Remember, you drive the context, not the other way around!
  • I’m asking you to be scrappy in defense of producing the cheese you care about, to do what you can to do the best work you can, to make the best software you can, as enthusiastically as you can. I’m asking you to practice Artisanal Retro-Futurism and Team-Scale Anarcho-Syndicalism
  • How do you do it?
    • By getting back to your workplace?
    • By harnessing the (useful) madness of crowds
    • By proselytizing the good word of Artisanal Retro-Futurism and Team-Scale Anarcho-Syndicalism
    • By visiting Arxta.net, the “global headquarters of the movement”

See the Video!

There is a video available – while it’s not the presentation Brian gave at FutureRuby, but one he gave at an agile conference earlier this year, it’s pretty much the same.

{ 4 comments }

Dilbert comic on agile programming: "That means no more planning and no more documentation. Just start writing code and complaining." I kid because I care!

The Toronto Agile User Group’s next meeting takes place on Thursday June 25th at Microsoft Canada’s office in Mississauga (1950 Meadowvale Road – take the Mississuaga Road exit off Highway 401 and go north). This meeting will be hosted by Profile.com and will feature a panel discussion whose topic is: Agile vs. Traditional: How to Choose the Best Approach?

Here’s the abstract for the discussion:

The goal of this panel discussion is not to prove that one approach is better than other but to understand the principles of each approach with the ultimate goal of dramatically improving project performance. We will also have a quick presentation on Visual Studio Team System which includes Microsoft Solutions Framework (MSF) process templates and tools for Agile and CMMI processes and we’ll also discuss what’s new in VSTS 2010.

You can find out more at the meeting’s details page and in the article on the meetup at Canadian Developer Connection; you can sign up to attend at the Toronto Agile User Group’s registration page.

{ 0 comments }

Hitler’s Nightly Build Fails

by Joey deVilla on February 20, 2009

I sometimes refer to people who are incredibility dogmatic about their particular Agile or Extreme Programming methodology as “Agile Nazis”. But what if Agile Nazis literally existed? I think their project meetings would go something like this YouTube remix titled Hitler’s Nightly Build Fails

(Thanks to Jodi Showers for the link!)

{ 1 comment }

Gojko Adzic points to this photo taken at QCon San Francisco 2008 by John Grae. It’s a slide featuring YAGNI, the Development Assistant, the programmer’s answer to “Clippit”, a.k.a. “Clippy”:

yagni_development_assistant_qcon_slide
Photo by John Grae.
Click the photo to see its Flickr page.

YAGNI, short for “You Aren’t Gonna Need It” is a development maxim that suggests to programmers that they shouldn’t add features or functionality to applications that aren’t necessary at the moment, but might be in the future. YAGNI has the DRY (“Don’t Repeat Yourself”) Principle has a cousin and among its ancestors are Occam’s Razor and the KISS Principle (as in “Keep It Simple, Stupid” and not “I Wanna Rock and Roll All Night (and Party Every Day”).

YAGNI, the Development Assistant comes from Bunk and Rambling, a blog by Darren Smith, where he put it forth as an IDE feature request back in May 2006, when he wrote:

While pair programming helps you to write high quality code in an efficient manner there are times that a pair of programmers will end up going off on a tangent and working on something that ultimately ends up not being necessary. To counter the unbridled enthusiasm that usually causes this to occur I give you Yagni, the Development Assistant.

YAGNI is meant for developers who believe strongly in test-driven development, so here’s how it would hypothetically pop up if you tried to create a class and started entering non-test methods first:

YAGNI, the Development Assistant: "It appears that you are creating a class without a unit test. Would you like to * discard code? * create unit test?"

I’ll leave it to other people to argue over whether or not you always have to have unit tests. 

Here’s another notice from YAGNI:

YAGNI, the Development Assistant: "This development spike appears to be going too long. Would you like to * discard code? * go longer?"

And finally, what I feel is YAGNI’s most important message – a warning that you’re in danger of embarking on a long, “let’s reinvent the wheel” project:

YAGNI, the Development Assistant: "It look like you're trying to write a framework. Would you like to: * discard code? * find an open source framework instead? * find a new job?"

Since YAGNI’s not likely to appear in any IDE soon, you, your pair programming partner or whoever does code reviews with you will have to play its role for the foreseeable future.

{ 1 comment }