TIL: Helping People Understand TDD by Writing a Story

At an agile gathering in St. Louis a few years ago, I learned a pretty nifty game/simulation to help people (especially those unfamiliar with programming) learn basic concepts of TDD. Taught by the ever-so-sensational Amitai Schleier and Mark Balbes, I’ve been meaning to write about this for more than a year. Thanks to a curious member over at the Agile Uprising forums, I finally put it to words. With all credit to Amitai and Mark, this fun little simulation is a good addition to your mentoring toolkit. Continue reading

Rebooting Metrics for Agile


I’ve been measured as a 3.6 out of a possible 5 “performance” points. I’ve been measured on my sales volume per hour. I’ve even been measured on my percentage of overtime hours as a percentile representing “efficiency”. From salespeople, to service workers, to manual laborers, it’s nearly impossible to meet a worker that hasn’t been exposed to metrics as a form of management, motivation, or appraisal.

Deming, Drucker, and a host of wisdom spoke on the utility of metrics and, over time, business leaders have responded. An obsession with metrics is everywhere and there is no question that measurements of valuable business processes can help improve outcomes necessary for success. Enter the pursuit of (demand for?) “Agile metrics”. Continue reading

Oh, the Horror!


Practice C# program number two is progressing. If you feel brave and opt to inspect the Github link provided, you’ll probably feel the same awkward sense of confusion at the use of “progressing”, however.

This post is a call–or plea–for help. My console-calculator program is an attempt to discover how I might use object-oriented design and expand my technical knowledge. At this point, I feel as though I’m regressing into the same patterns that limited me ten years ago. In addition, I’ll share my thoughts and feelings as a novice trying to learn programming on my own – and what lessons I’m extracting for Agile coaches. Continue reading

C# Project Two: Better Than an Abacus!


To continue my adventures in self-study and learning object-oriented programming (with C#), I’ve started a new project with Deborah: a simple calculator! I imagine anyone interested in second-grade mathematics will be giddy with anticipation!

As always, I plan to commit my project to GitHub and make it public for all to see. By doing this, I hope to encourage new friends to participate and provide comments, advice, and ideas. I’ll further reiterate that I am a novice, therefore exposing my code intentionally makes me vulnerable to ridicule and places me out of my comfort zone. Continue reading

It Has Ended!


If you’re not interested in reading through this post, but would like to be a mentor on my next C# project, please connect with me! Let’s write a program together!

148 lines of code, 12 commits, 6 public comments on Github, and about 12 total hours of programming/collaboration. My first C# project, a console tic-tac-toe game, is at a point where I’m comfortable calling it “done”. (Author’s side note: this is also my first program written since 2005!)

Every award winner loves to give thanks, so I’d like to express gratitude for Deborah Lee — my “team member” and project mentor — and Daniel Albuschat for being a collaborator through Github. It was awesome learning from both you!

This post describes a novice’s thought process for refactoring, what changes I committed to feel “done”, and my concluding thoughts on this project. Continue reading



The other night, I met up with my programming partner-in-crime, Deborah, to pair program and finish the great tic-tac-toe project. I’m both embarrassed and ashamed to admit, after uncountable years advocating and observing the benefits of pair programming, this was my first time ever navigating / driving “for real.”

Before setting a timer, we started with a bit of instruction on how to pass and receive between methods. I was under the impression that I couldn’t create a method to return something (bool, int, etc.) without first receiving data of the same type. Why did I think this? Your guess is as good as mine.

With that bit of futility squashed, we set a timer (10 minutes), and started pairing to update my “computer makes a move” method to select a random location on the tic-tac-toe grid (from current state where computer simply chooses an index in ascending order). Continue reading

It Has Begun


I’ve started my first C# project — with a peer reviewer / guide — and I’m feeling especially embarrassed over how challenging this simple exercise has been for me. I promised to be as transparent as possible, therefore this post explains the project, provides links to my code (in GitHub), and describes my thought process and feelings. Continue reading

Be My Peer Reviewer


“Getting lost is just another way of saying ‘going exploring.”
― Justina Chen, North of Beautiful

Today, I finished the 25th lesson from Bob Taber’s “Core C# Fundamentals” course. A total of 22 hours of video instruction on the most basic, beginner-level concepts of the .NET framework.

As I mentioned in an earlier post, my novice background in programming, coupled with zero prior experience to object-oriented design, has made this journey of self-study somewhat daunting. The obvious lack of technical knowledge aside, I feel like my questions and observations will be in the realm of irrelevance: that the entire programming world is light-years ahead. Who has time for a novice? I don’t like feeling useless and alone.

Armed with 22 hours of knowledge in writing simple console applications in C#, I have a request: would you be my peer reviewer? Continue reading

The Tip of the OO Iceberg


Author’s plea: Be gentle…

Diving more into lessons and self-study of object-oriented programming with C#, I’ve begun learning about what inheritance can do for a programmer by practicing with abstract and sealed classes. It’s a mindset change, for sure.

Given the majority of my experience with code has been in procedural languages from days long gone, the first lesson I encountered introducing static methods caused me to move from feeling intimidated to completely confused. My inexperience (and ignorance) with OO was causing me to blend method with function as I know it: why the hell wouldn’t I want a method to be accessible without first creating an instance of the class? If I want to use a method, damnit, let me use it!

But after continuing more into classes and inheritance tonight, I’m realizing that a method is not a function akin to my experience. There’s a whole level of abstraction here that makes me nervous; no one likes to be working with something that makes him/her uncomfortable, let alone knowing there’s so much more that still needs to be understood. If I’m uncomfortable now, just wait until later…! Continue reading

C# From Scratch

Image courtesy of Flickr (charmelody) https://flic.kr/p/8frxSf

I am a terrible programmer.

Or, at least, that’s what I tell people is the reason I gravitated away from code and towards organizational behavior, dysfunction, and systems thinking. I’ve decided not to be a “doer”, but rather, someone who doesn’t actually do anything: an Agile coach. When I think about programming, I feel envious of those that create and master the art of coding. When I think about programming with Agile–and the organizational environment to cultivate amazing people–I sense that I can contribute to others’ realization of success. While that feeling is joyful, I admire those “doers” every day as they build software that delights customers.

(At a recent employer, after my hire, a programmer casually quipped that the company “hired someone who doesn’t do anything to help do something.”) Continue reading