It's just another normal day at SmartyStreets. Jonathan, founder and CEO, is sitting in his kitchen, eating his bowl of cereal. Then, up walks Mike Whatcott with a problem.

SmartyStreets provides a cloud-based address verification service. If you have a mailing list with a bunch of addresses that you aren't sure of, then you can pump those addresses into the SmartyStreets API, and get back a list of addresses in mailable form, with an indication of whether they are deliverable, vacant, inactive, etc.

Mike's problem is that the field support team needs a tool that will take a CSV list of addresses and produce a CSV list of validated addresses.

This video series shows Jonathan and Mike working together, to produce that tool in the GO language.

This first episode begins with a quick design session at the whiteboard, the establishment of their test environment, and first halting steps of the code.

Pay very close attention to the design they are creating on the board. See if you can spot the Chain of Responsibility pattern and the Decorator pattern. Try to notice how they adjust their design for testability. They move fast, I know, but see if you can follow along with them.

Oh, and don't forget to download the diagram I created from the extras link. It'll help you keep track of what they are working on.

These guys are expert TDDers. They know how to write tests, and when to use mocks. They refactor mercilessly. Watch how carefully they follow the TDD and refactoring discipline. Also watch their expert pairing technique, and their ability to keep the big picture while focussing in on the minutia. (Think globally, act locally.) And, notice how they complete each other's sentences. Clearly this is not the first time they have paired together.