Uncle Bob @ Agile Testing and BDD

October 1, 2012 Robbie Clutton

Today I’m in the Ace Hotel at a one day conference titled “Agile Testing and BDD Exchange” #bddxny, and I’ll be taking and sharing notes throughout the day.

Skills Matter is a UK based technical education company who are starting out in New York. This is their second conference. I’ve been to a few one day conferences, training days and evening meetups at their London base. I’m giving them bonus points for bring PG Tips.

Please forgive the inevitable spelling mistakes and typos, but I hope there’s some interest in this.

Uncle Bob starts with some 2001 Space Oddesy music to the video of a code file scanning down. It takes at least 3 minutes. He then starts, “I am your new CTO”, and continues to give his talk as if we, the audience, are employees at the same company. He outlines not how he wants us to work, but what he expects the outcomes of that work are.

Here follows the notes from his talk.

“I am your new CTO”

  • “I will not tell you what to do, but I’ll tell you what to expect”
    • “we will not ship shit”
      • “there are times when you don’t ship all the features”
    • “we will always be ready”
      • “you will be ready all the time”
      • “I want to say ‘ship it now’ and it goes”
    • “I expect stable productivity”
      • “I don’t expect you to start fast and slow down as the application gets bigger/older”
    • “I expect inexpensive adaptability”
      • “requirements will change, the platform may change – you will adapt and be able to adapt”
      • “you will move quickly and inexpensively”
      • “if you’re doing Rails/Spring (insert other framework, library or dependency here), I want to be able to rip that out – adapt inexpensively”
    • “Continuous Improvement”
      • “I don’t expect any one part of the system needs to be refactored”
      • “keep the system as clean as it can be”
      • “always be improving continuously”
      • “if you note it starts getting messy, take steps”
      • “professionals don’t let things get out of control”
    • “Fearless competence”
      • “I want you do say: ‘I can change that if I feel like it'”
      • “Should not be afraid of the code”
      • “No freezing of the code but constantly able to change the code”
    • “Extreme quality”
      • “you will focus on the highest quality system you can produce”
      • “tradeoff in features, not quality”
      • “I don’t expect bugs”
    • “We will not dump on QA”
      • ̶#8220;I expect QA will find nothing”
      • “QA ought to wonder why they exist”
      • “I expect QA to move to the front of the process, setting the tests and requirements to define how the system should operate”
    • “Automation”
      • “tests, builds and anything that be automated, will be automated”
      • “manually testing is immoral – humans should only do things machines cannot”
    • “Nothing fragile”
      • “I expect things to be robust”
      • “we know how to make non-fragile software”
      • “there is no part of the system that deserves bad design; production code, tests, deployment – everything”
    • “We cover for each other”
      • “Sportsman and soldiers can do someone’s job”
      • “Someone knows how to take over if they get sick, go on vacation or leave”
      • “I don’t care what you do, you can pair, you can do something else but you will cover for each other”
    • “Honest estimates”
      • “Accurate and precise to the best of your ability”
      • I do not expect a date
      • I expect a range of dates, something you’d be comfortable with
      • “Done within a few weeks of December 15th”
      • I want to know what the odds are of hitting a date
      • I want those estimates to be constantly adjusted
      • Tell those managers who demand a date, I expect you do say “No”
        • A hallmark of a professional is the ability to say no
      • You must defend the honesty of your estimate and the quality of your system
      • I expect you to never use the words “Yes, I’ll try” after you say no.
        • There is nothing you do will differently if you say the word “try”
        • It does not made the impossible, possible.
        • This means you’ve been holding back
        • You say try to get rid of people, this is a lie
    • Continuous Aggressive Learning
      • Industry is changing by the week
      • Systems, platforms and languages comes in waves
      • Your job is to surf those waves
      • Do not ride the wave to the bottom
      • You expect your doctor or lawyers to be reading about new stuff, I expect ‘us’ to be that kind of people
    • Mentoring
      • I expect us to teach
      • schools and universities aren’t teaching how to work in our profession
      • Look at apprentice models
      • (Uncle Bob always returns to being technical)

Questions

  • “Setting expectations”

    • There is nothing you can do in order to go faster
      • work more hours? – not reliable
      • overtime becomes the norm
      • things become a mess and slow things down
      • “Time pressure creates an environment that generates mess”
    • We can reduce features
    • We can add staff
      • mythical man month
      • have to be careful, can be done if you have enough time
      • new people will be exposed to old code and will continue to make mess
  • “How do we deal with the people who say yes”

    • You can’t, over time there will be a separation
    • Medical profession separated about 200 years ago between professionals
    • Let’s go the way of medicals rather than law
      • get signatures of others professionals
      • let’s get a residency, internship
      • no exam, degree or government legislation (like law)
    • “I don’t need to tell people what to do (TDD, agile, pairing), but what to expect”
      • business people have implied expectations and are disappointed when things don’t work out
    • Uncle Bob became programming in the 60s, there were very programmers
    • Deadlines are not an excuse
      • professionals learn to work with deadlines and still produce good product
    • Jack Dansen, History of Computing article (?)
      • iPhone today would be the economic output for the whole world 50 years ago
      • “my laptop is 22 orders of magnitude the power of the machines I started coding on”
      • while powers have increased, how have we improved as programmers? Certainly not 22 orders
      • we had OO, functional, structural programming in the late 60s
        • we haven’t had any programmer based innovations since the 60s
        • I can transport a programmer from the 60s and they could get up to scratch in 24 hours
        • What we do has changed very little
          • isn’t it time we started doing it well
  • Where do we begin if we have lots of bad code

    • avoid the temptation to start over
    • a redesign is probably
    • no guarantee that you will get anything from it
    • “clean the mess one little bit at a time”
    • “leave the camp ground cleaner than you found it”
      • “add unit tests where you can, when you need them”
      • “gradually refactor and redesign over time”
      • “it will be painful”

About the Author

Robbie Clutton

Robbie Clutton is the Head of Pivotal Labs in EMEA.

Previous
Testing accessibility with RSpec and Capybara
Testing accessibility with RSpec and Capybara

An exploration in automated accessibility testing Today Grant Hutchins and I took on several stories to en...

Next
Google Hangouts an improvement over Skype
Google Hangouts an improvement over Skype

The Problem Skype connectivity sometimes drops calls. It is also challenging to schedule with multiple pe...