In a previous post by the same name I introduced the concept of “Now that I’ve seen it…”. Simplified it states that people better understand what they need and how they will use something only after they have it. The next level of this concept applies to steering. Depending on where in your value stream you inject the possibility of hearing “Now that I’ve seen it…” greatly impacts your ability to steer your software, product, organization and market.
TDD & BDD has a major impact on “Now that I’ve seen it…” They make “Now that I’ve seen it…” not so scary anymore. That sinking feeling of fear when hearing “Now that I’ve seen it…” started to diminish after I began working with TDD & BDD.
The feedback loop gave me confidence that my changes wouldn’t break anything. And if somehow they did, it was easier to identify and correct. TDD & BDD for me are the great equalizers of communication of intent in code.
I create a test. I have now communicated my intent of functionality and received back a message of success or failure. The test should fail for new functionality. I write the code for this new functionality to work, see the test pass. I now know that my current solution, even if it is ugly, will work to solve the problem. I refactor the code to make it nice and neat, or as Kent Beck puts it, “tidy”. If after my refactoring the tests pass or fail, that is still communication and ultimately feedback. But this removes the feeling of fear from hearing “Now that I’ve seen it…” since we are working in such small pieces we can quickly return to safety of working software and try again.
I say working software instead of valuable software because not all working software is valuable software. Software only truly becomes valuable once it is in our users hands.
And here we are yet again with what “Now That I’ve seen it…” really is all about. STEERING! Steering in the context of software development comes from Woody Zuill.
“If we can’t easily steer continuously we will fail.” –Woody Zuill
And I see “Now that I’ve seen it…”, TDD & BDD all as a means of steering. This approach to creating software is the “Now that I’ve seen it…” for creators. Now that I’ve seen my intent in my test, and Now that I’ve seen my solution implemented and test passing, and Now that I’ve been able to clean up the code to be understandable for anyone that follows behind me. This is all steering. We are steering our way to a cleaner code, better quality and a potentially valuable piece of software.
If we bring our customer/user along on this journey, they get to continuously steer the outcome and impact of the software we are creating that they will be using. Now we are continuously steering the quality of the code, as well as the desired outcome and impact of the product.
This feels like a really short post and that it should be longer. But I think I landed the plane on what I wanted to say. Thank you for reading.