Friday, December 12, 2014

The Socratic Coaching Approach

"The secret of change is to focus all of your energy, not on fighting the old, but on building the new." -- Socrates

I recently read "The Goal: A Process of Ongoing Improvement" by Eliyahu M. Goldratt. For those of you unfamiliar with this masterful work, it is the book that introduced the Theory of Constraints and was a primary predecessor of "The Phoenix Project" - in fact, "The Phoenix Project" not only makes mention of "The Goal", it is written in a similar style and format!

I learned a lot from "The Goal", but I was able to apply a couple of learnings immediately to my coaching: 1) The Goal itself; 2) the Socratic method. Granted, I'm very new to this and still have a lot to learn about the Socratic method, but that's not stopping me from giving it a try!

This is the basic conversation I've been having for the past couple of weeks, usually in response to "How do I convince so-and-so to be more Agile?"

Me: What is the goal of any company?
Them (usually after some thinking and a few guesses): Make money?
Me: That's right! Now, as a development center, how do we help the company make money?
Them: We provide solutions/capabilities/cost savings/etc.
Me: Okay, and when do we provide them? When we finish requirements?
Them: No...
Me: When we finish Coding? Testing?
Them: No.
Me: Then when?
Them: When we deploy.
Me: Okay, so we deliver value when we deploy. How often do we deploy?
Them: Not often enough.
Me: I agree! So as soon as we deploy something and start working on something new, we are basically just accruing expense until the day we release again. Yet, in Agile, we often find ourselves sitting on "Production-ready" code without releasing it. What are some other consequences to releasing code in large, infrequent batches?
Them: It's more difficult for our customers to handle the change. They require weeks of User-Acceptance Testing and have to build Change Management plans around each release.
Me: Precisely! Also, what happens if we find a defect?
Them: Defects can be very expensive because we find them late, which means they are large and highly impactful. Plus the defect may be something that we developed a long time ago and have forgotten about.
Me: Right. So... what I'm hearing is that when we deploy less frequently then we delay delivery of value and increase risk, both of which are contradictory to our goal to make money, is that right?
Them: Yes, exactly!
Me: So why don't we just define Agile as a mindset of striving to deliver more valuable functionality with high quality at faster rates? Then "Being Agile" means doing whatever makes sense to reach that goal. Do you think they could get on board with that?
Them: Absolutely - they'd have to be foolish not to!

Notice that I didn't say Agile until the very end. The idea is to help them realize for themselves the obvious truths that Agile espouses in a way that solves their problems or aligns with their current paradigm. This results in a more natural mindset shift, as opposed to one that feels forced or alien in a classroom environment. I've seen a lot of success with this approach so far, and I'm hoping to get even better with experience.

How about you? Have you used the Socratic approach in your coaching? What ideas, successes, or failures would you share with someone just getting started with this approach?