Uncle Bob @ Agile Testing and BDD

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”

“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