4 January 2018

The Clean Coder

Thank you "Uncle Bob" Martin!

I started my first full-time software development job in July 2009. One of the very first industry thought-leaders my boss and mentor introduced me to was Robert C. Martin, AKA "Uncle Bob". His book "Clean Code" had been published in 2008 and was one of the first of many tomes placed before me during my first few months on the job. My appetite for such volumes was voracious. I had recently come from the field of education and held in high regard those of my collegues who codified for their students the core concepts of their subject in a way that facilitated recall and application. This is exactly what Uncle Bob has done for the software industry (the SOLID principles come readily to mind).

Since "Clean Code" Uncle Bob has published "The Clean Coder" and just recently "Clean Architecture".

Can you identify any patterns or concept associations in the titles of the publications I've mentioned?

  1. "Clean Code: A Handbook of Agile Software Craftmanship"
  2. "The Clean Coder: A Code of Conduct for Professional Developers"
  3. "Clean Architecture: A Craftsman's Guide to Software Structure and Design"

Clean...Craftsmanship...Professional.

A professional developer is a software craftsman. A software craftsman adds value by producing code that is clean. A clean coder is one who accepts the full weight of their responsibility. We're talking about a professional in every sense of the word, who never requires permission to do the job right--that's just the way things are done. After all:

The only way to go fast is to go well.

...

Well, now you got me monologuing! What was I talking about? Oh yes, Uncle Bob. His blog is great too, BTW. He tackles timely software-related issues, never shying away from controversy, especially when it is related the software industry.

Anyway, I credit Uncle Bob with helping me learn the nuanced mechanics of Test-Driven Development, the single-most important discipline for writing clean code. Just today, as I paired with a coworker on an throw-away ETL script an elegant, calculation-based algorithm appeared seemingly out of thin air in what can only be explained as a direct response to the test suite we had constructed. It was a marvelous moment that neither of us anticipated and which wouldn't have happened had we not stuck to the discipline of TDD.

I've had the opportunity to receive in-person training (sponsored by my employer: SmartyStreets) from Uncle Bob on two occasions. It's one thing to read his books and blog posts--it's another to actually be in a live training. Both events were eye-opening and and resulted in some really meaningful ideas and software that I use everyday. It's likely that you haven't yet been to one of his training events (but you should definitely look into it). In that case, you should check out cleancoders.com, where Uncle Bob, and several collaborators have published 100+ educational videos for software developers!

Recently, all of these learning experiences culminated in my participation in the most recent (at the time of this writing) series on cleancoders.com:

GO: With Intensity

This was the result of 3 days of filming a combined 8+ hours of pair programming with the founder of SmartyStreets, Jonathan Oliver (remember the 'boss/mentor' I mentioned earlier?), my coworker Cami Blanch, and myself. This was an unscripted experience. We didn't decide what we were going to build until minutes before filming the first episode. The camera just rolled as we flailed around, all the while as as Bob looked on, giggling when we coded ourselves into corners he saw coming a mile away.

Anyway, we did our best to apply the disciplines Uncle Bob has taught us for so long and ultimately, we made it to the finish line in time for Bob to catch his plane ride. It was a blast to participate in this case study series and I learned surprising lessons that weren't really captured on camera, but were important to me personally.

In the end I'm left scratching my head in awe: "How did I get here?" Mostly, I feel inadequate to represent what cleancoders.com (Uncle Bob) stands for, but I'm trying hard to become a Clean Coder in every sense of the term. Thanks Bob, for teaching us how to be clean coders and for inviting SmartyStreets to practice and showcase the craft of building software!