• 1
    play

London vs. Chicago

Season 1 2018

  • 2018-07-23T00:00:00Z
  • 1h
  • 15h (15 episodes)
  • Special Interest
In this London vs. Chicago case study video series, Bob and Sandro will compare outside-in vs. inside-out Test-Driven Development. You don't want to miss this one.

15 episodes

Series Premiere

2018-07-23T00:00:00Z

1x01 London vs. Chicago: Introduction

Series Premiere

1x01 London vs. Chicago: Introduction

  • 2018-07-23T00:00:00Z1h

In this free introduction to the London vs. Chicago comparative case study, Bob and Sandro explain the premise of the competition, and the rules of the game.

1x02 Comparative Case Study Episode 1

  • 2018-07-23T00:00:00Z1h

And so it begins! London is first up. Sandro Mancuso takes the lead for the next five episodes, creating a Twitter-like app using the outside-in "London School" approach.

In this episode Sandro completes the first few use cases. The acceptance tests for those use cases pass. The unit tests and the production code are written.

And, in this episode, we see the first hint of the double edged sword of mocking: we see how the outside-in approach drives architecture. We see how the unit tests drive design. And we also see how the prodigious use of mocks may make the unit tests and production code fragile.

Note: You can find the code here. Three branches are of interest:

The starting-point branch is where both implementations began.

The openchat-outside-in branch captures the tomato by tomato history of the London approach.

The openchat-unclebob branch captures the tomato by tomato history of the Chicago approach.

Enjoy!

1x03 Comparative Case Study Episode 2

  • 2018-07-23T00:00:00Z1h

This was a very intense session, and I nearly lost it at the end.

We discovered that our concept of unit and acceptance tests differ markedly and we use them for different purposes. Sandro uses acceptance tests to probe the architecture. He uses unit tests to drive the architecture. His acceptance tests do not completely probe behavior. His unit tests do, but at the expense of the fragility imposed by mocks. Will that fragility cause trouble in the end? The benefits are clear, but are the costs worth it?

1x04 Comparative Case Study Episode 3

  • 2018-07-23T00:00:00Z1h

DUCK! Everybody take cover! Uncle Bob takes the keyboard!

Well, just for a tomato or two. I wanted to try the outside in approach while Sandro coached me. It was a fun exercise.

We got a lot done in this episode, and concluded it with a little Lagavulin 16.

1x05 Comparative Case Study Episode 4

  • 2018-07-23T00:00:00Z1h

It's getting pretty mechanical now. The use cases are popping out of the sausage machine with an almost clockwork regularity. Uncle Bob takes the keyboard again, and this time manages to actually complete a use case. Wow.

The end is in sight. One more episode ought to do it...

1x06 Comparative Case Study Episode 5

  • 2018-07-23T00:00:00Z1h

This episode goes into overtime to complete the application. During the episode the crank keeps turning; and the clockwork production of the use continues.

In the end, the application is done. Everything works. Time to dance a jig.

Ah, but wait! It's going to be Uncle Bob's turn next!

1x07 Comparative Case Study Episode 6

  • 2018-07-23T00:00:00Z1h

Chicago! Uncle Bob begins, inauspiciously. He starts with UML! He creates global variables. He assiduously refuses to use the mocking framework. He seems to struggle against the constraints of the tools, preferring the slings and arrows of outrageous fortune! How can this end well?

1x08 Comparative Case Study Episode 7

  • 2018-07-23T00:00:00Z1h

The existential struggle between Uncle Bob and Frameworks continues. Indeed, he gets himself into a bit of a pickle in the middle of the episode as he struggles against the forces arranged against him. But in the end, he realizes his enemy, and determines to face it down. The enemy is...the UUID!

1x09 Comparative Case Study Episode 8

  • 2018-07-23T00:00:00Z1h

Wow! One API done. OK, but there are issues with globals, and issues with the framework, and issues with....

Wait! It's 4:30AM and Uncle Bob has had a revelation! A revelation about the tests!

1x10 Comparative Case Study Episode 9

  • 2018-07-23T00:00:00Z1h

Sandro has a secret: he knows something that I don't. He's waiting to spring the trap on me yet again.

But, other than that, things are moving along with a semblance of clockworks. The development steps are becoming rote. The design and architecture are becoming apparent. Three APIs done and the sausage machine is starting to crank.

1x11 Comparative Case Study Episode 10

  • 2018-07-23T00:00:00Z1h

Back and forth and back and forth and around and around. Or at least that's the way it seems. And in all that retracing of steps Uncle Bob forgets a critical behavior. And all the while Sandro smiles.

1x12 Comparative Case Study Episode 11

  • 2018-07-23T00:00:00Z1h

At this point the problems have become a bit mundane. Sorting date times, etc. The crank continues to turn, and the clockwork production of use cases proceeds. But then, Sandro points out an issue—a debugging issue.

1x13 Comparative Case Study Episode 12

  • 2018-07-23T00:00:00Z1h

This episode is just more crank turning. All the major decisions have been made. All the initial problems have been solved. The momentum is high, and the failure rate is low.

And besides, Sandro has to go to a Bull's game tonite, so nobody's working late.

1x14 Comparative Case Study Episode 13

  • 2018-07-23T00:00:00Z1h

Two more tomatoes of crank turning. And the application is done.

We have built Twitter—twice.

Where are our billions?

1x15 Comparative Case Study Episode 14

  • 2018-07-23T00:00:00Z1h

So, this is the episode you've been waiting for. This is where Sandro and Uncle Bob square off and debate each other's approaches. The issues are on the board. The gloves are off. The Ultimate Design Championship is on the line!

Loading...