An Interview with Barry Evans, author of “The Trousers Of Reality, volume 1″

Friday, September 4th, 2009
The Trousers of Reality volume 1

The Trousers of Reality Book Cover

Barry Evans works as an independent consultant and writer, and is based in France and the UK. I met Barry a few years ago at Agile Open in Belgium, when he was working as a senior coach in BT’s large-scale Agile introduction. Now we’ve done an interview to find out more about his new book “The Trousers of Reality”.

Willem: So Barry, When did you start thinking about writing a book?
Barry: I have always been a writer. I come from a literary family and it was always something I wanted to do..
Willem: what triggered you to write this one?
Barry: I started writing this book when I realised I had something to say and I had enough life experience behind me.
(more…)

Agile Politics – (re)discover the politician in you at XP Days Benelux

Thursday, September 3rd, 2009

If you believe corporate politics is something for ‘those dirty managers’ think again. Everybody behaves in a political way when a limited amount of resources has to be divided over groups of people. Come play our game and experience firsthand how dirty a politician you are!

It has behooved the XP Days Benelux conference to allow playing of devious political games in its program. Join Emmanuel Gaillot and me on November 23 or 24 so that you can (re)find the (dirty?) politician in you.

"Cheney Satan '08"

“Cheney Satan ’08″ by futureatlas.com

Photo found through Photo Suggest

(more…)

Your need for speed, sponsored by TDD and pairing

Tuesday, September 1st, 2009

The causal loop diagrams in this post have been heavily inspired by GeePawHill (also known as American Mike Hill) ‘s  How TDD and Pairing increase production. These diagrams were meant to follow mikes’ story. After they were done, another order presented itself. I recommend you read Mike’s post for some background and an interesting comment thread after you’ve seen the diagrams. I’ll use Mike’s definition of internal quality for this post, and refer to it mostly as ‘quality’.

Zed and Carry are programming an online catalogue for Amazing Widgets.  If they deliver new features for the catalogue faster, their company will make more money, because they can outsmart the competition and draw more paying users to their site. Sure, they have a customer, but he’s on holiday at the moment; he might return for another post ;) . Right now Zed and Carry are chugging through a long list of feature requests the customer left them, so they would not be bored while he was away…

So far they have not made much progress. Carry and Zed are wondering why they are going so slow. Carry read this post by GeePawHill saying “the biggest single determinant in today’s production is the quality of yesterday’s production.”

yesterdays_quality

yesterdays quality is the single biggest determinant of todays' quality

That sounds mysterious. Carry wonders how to write good code today, if everything has already been determined yesterday… It seems kind of hopeless! She was taught in school that the number of lines of code a programmer wrote in a day was a measure of productivity. Now she was wading through file after file, looking for the one line she needed to change. If only the code were smaller, the variable names were not all spelled like I, J and cmd and that whenever she was debugging she would not need to remember over 15 classes at once… All of the decisions they took in a hurry to get the new features in production before the customer went on holiday were now haunting them like the ghost of christmas past…

What determines yesterdays' quality: bad variable names, many dependencies, flawed design decisions and the number of lines of code

What determines yesterdays' quality: bad variable names, many dependencies, flawed design decisions and the number of lines of code

They stare at each other for a moment. Zed says “what if today’s internal quality was better?”. What would our code like, and what would it mean for us? Carry dreams away. ” If today’s code were better,  we would have less dependencies and much less code, and everything was so clearly named that I knew where to start working immediately. But I don’t know where to start refactoring! It’s all tangled together, I don’t understand what half the code is doing, it just sounds like a dream. And I don’t have time to work on that dream, because we have to hurry! The customer will return from holiday soon, we need to show some progress. Hmm, Zed goes. I think if we stared naming the variables better in the bit we’re working on now, we could see some improvements soon, it would make our work for this afternoon and tomorrow already a bit easier. With the refactoring tools we have it’s not dangerous at all, and we can always get the previous revision from version control if necessary. We could spend part of our increased speed tomorrow on some other improvement.

internal_quality_speed

If internal quality goes up, speed will increase. This can free up time to improve (but you have to make a conscious choice, hence the decision square). With time available for improvement, internal quality can improve, given you choose relevant improvements and have agreed what improved internal quality means. The 'condensator' symbol indicates there may be a delay. Try to choose improvements that improve internal quality quickly - that helps motivate further improvements. If this works you will get a snowball effect: you will go faster and faster, while delivering ever better quality software.

“That would be great”, says Carry “I’d really like that. But I’m scared to break features that are already working. With all these dependencies I don’t know what might fall over when I refactor. Remember the trouble we had with the helpdesk after our last release? Hmmm… Would you be willing to help me clean up the design in the part I’m working on?”

“Sure”, says Zed, “Why not, I can’t go any slower than I am now, and maybe together we can come up with a way to add some tests as well. I’ve been aching to write some of these microtests, I’ve done some exercises but I just can’t figure out where to start. I’ve heard that it can help you focus on the design as well, and the refactorings would be a lot safer – Come to think of it, I still don’t fully trust our refactoring tool, it seems a bit wonky at times; some refactoring up front would make it easier to add tests, so having your help to refactor would be great, it would be a lot safer that way”.

Test Driven Development, Pairing and Refactoring improve today's quality, so that we can go faster later today or tomorrow. Pairing supports refactoring, Refactoring supports Test Driven Development and vice versa. This leads, amongst other things, to Better Variable Names, Less Dependencies and code that expresses its intent more clearly

Test Driven Development, Pair Programminging and Refactoring improve today's quality, so that we can go faster later today or tomorrow. Pairing supports refactoring, Refactoring supports Test Driven Development and vice versa. This leads, amongst other things, to Better Variable Names, Less Dependencies and code that expresses its intent more clearly. Pairing and TDD also help prevent and eliminate defects, but that is a subject for another story.

Carry and Zed sat together, changed some names, did a few commits and eventually found a place where they could start writing a test. To their surprise, adding a few more tests was easy, and they were surprised at how little time it took to actually do these things. Carry had some time left at the end of the afternoon to continue reading GeePawHill’s post:

“If you want to increase the productivity of your team, then do these three things:

  1. write a microtest that fails before you change any code;
  2. adopt a “no-pair no-keep” agreement;
  3. establish a shared understanding of internal quality.”

Zed was happy they did this as well. Tomorrow, they could go even faster! He was almost thinking of working alone again tomorrow and skipping the tests, but thought again. He wanted to go at least as fast the day after tomorrow…

Tomorrow, today will be yesterday. Any improvement we can make today, however small, will help us go faster tomorrow.

Tomorrow, today will be yesterday. Any improvement we can make today, however small, will help us go faster tomorrow.

After thought

For a long time I’ve been planning to illustrate the value of test driven development through diagrams of effect here.  We’ve been using this to ‘sell’ the benefits of TDD to course participants and folks we mentor for a few years now, and it’s been remarkably effective. The essence is simple, as Marc Evers put it:

“If we work on the same code as you today, and we write tests and pair when you don’t, We’ll be drinking beer in the bar, while you’re still inside fixing bugs”

Well, that’s the benefit for programmers. I haven’t met product managers or customers who dislike getting better quality software sooner either :)

Undoubtedly, the speed with which this post was written (as well as the lack of pairing and TDD that goes with writing prose in the flow) merit improvements. Your suggestions and comments are most welcome.

Until cooler heads prevail – some things that let me calm down when reading online discussions

Sunday, August 30th, 2009

I was getting really frustrated about some online discussion today. It seemed other people were getting even more upset than I was (and even that is just one of many possible interpretations. I know from experience that the more frustrated I am, the less reliable my interpretations are). Instead of blowing off steam by firing of a blog post in frustration… which would let steam off on my end but could potentially multiply frustration elsewhere, I stumbled across Habits & strategy for effective listening by David Parnell. and decided to write publish on that instead. Tips for listening in a discussion can be just as useful when reading a discussion. (more…)

The best way to rob a bank is to own it

Saturday, August 29th, 2009

I hope I got your attention with this title :) It’s taken from this video : the Great American Bank Robbery: , taken at the Hammer Museum at the university of California in Los Angeles (hence the many references to california in the presentation and Q&A. it’s message applies to the rest of the USA and other parts of the world just as well):

William K. Black, the former litigation director of the Federal Home Loan Bank Board who investigated the Savings and Loan disaster of the 1980s, discusses the latest scandal in which a single bank, IndyMac, lost more money than was lost during the entire Savings and Loan crisis. He will examine the political failure behind this economic disaster, in which not only massive fraud has taken place, but a vast transfer of wealth from the poor and middle class continues as the federal government bails out the seemingly reckless, if not the criminal. Black teaches economics and law at the University of Missouri, Kansas City and is the author of The Best Way to Rob a Bank Is to Own One. (Run Time: 1 hour, 38 min.)

(more…)

New new new! Product development game at XP2009

Tuesday, June 2nd, 2009

The “New New NEW! Product development game” is a simulation we are developing. Participants experience various agile planning practices, so that they can create a development strategy that fits their needs, rather than following some arbitrary rules out of a book. Last week at XP2009 we did the first public run. Here is a brief report accompanied by photos from that workshop. (more…)

Beyond Agile: Cultural Patterns video on InfoQ

Saturday, May 30th, 2009

In our quest to put into words and pictures how important context is to choose practices, to show that there is no one-size-fits all solution for process and change strategy, Marc Evers and me went on tour last year with a presentation on Cultural Patterns. Take a look over at InfoQ – Beyond Agile: Cultural Patterns.

Willem and Marc introduce cultural patterns that can be found in software organizations. By understanding the cultural patterns then you can better adapt your practices. (more…)

Bottom Up Systems Thinking

Wednesday, March 11th, 2009

Jurgen Appelo writes in Communication = Information * Relationships that “top-down systems thinking is a management fad“. I agree. Systems thinking works only if it happens in all directions at once. It seems to work when a group of people is doing systems thinking  in the same room at the same time. All combined, these people bring the perspectives that are necessary to come up with changes that work. (more…)

Don’t think of a banana stress…

Thursday, January 8th, 2009

The new year seems to be an excellent time to think about your time management. It seemed to be for mine, and around new year I was chatting with Marc. Marc said “I’m reading a new book on personal productivity”. That made me think. Marc is one of the most productive people I know, so why would he bother reading yet another book like that. He has many, and I knew him since before he had any of those or was into,  say methodology. Then, just like now, he is one of the most productive people I know.

“So, why bother?” I asked him.

“I’m productive, but I would like to do it with less stress”. I can understand that. And then I  thought that by thinking about more productivity and less stress, you might achieve they opposite. I’ve met some very relaxed people. Were they thinking about stress? Probably not. Not thinking about stress may be like not thinking about a banana. You’ve probably read about research where they ask people to not think about something a banana, for instance, and it turns out they think more about it when you ask them not to…

Take Getting Things Done, for instance. The book has as subtitle “the art of stress-free productivity”. I have the book, and have tried it a couple of times. To me, it seems to have too many moving parts. Even if you take just one part, it might cause you stress. For instance, Johanna Rothman just wrote how Inbox zero is hard for her. GTD states that you should end every day with an empty inbox.

I tried that a couple of times, and after a while I could not get it to work either. In the mean time, I was stressing about it, worrying that I was not working to the norm I had set myself… Thus achieving the opposite of what I set out to do.

So, before Marc got around to explaining that The art of getting everything done by putting it off to tomorrow, and the main principles are of his shiny new tool, I came to the conclusion that it might be best for me to eat my own dogfood, and apply to myself what I tend to advise to teams these days:

Reflect, find out what works for you and do more of it (and do some experiments every once in a while to see if something else would work even better).

Trying out another methodology would not work for me at the moment, because, I might be worrying if I was ‘doing it right’. Asking if you’re doing it right is often the wrong questions to ask… And following a methodology to a T might give you more stress, and thus less productivity, instead of the other way around.

So don’t think about stress, I wish you a relaxed day!

Financial Options for noobs

Tuesday, January 6th, 2009

Chris Matts is drafting comic strips on real options and financial options in the new decision coach blog he and Olav Maassen started yesterday.

I particularly liked the draft on Financial Options, it explains a number of not so intuitive financial instruments and techniques (e.g. naked short selling and futures) in such a way that I find them easy to understand, and possibly explain them to others. Not a bad thing to have in turbulent financial times. Chris’s goal is to make them  understandable by ‘basically everybody’ – I encourage you to go and read it, and give him some feedback on bits you don’t understand.