Feedback Loops

  • With feedback, we learn what went wrong, and make appropriate changes

  • We all make mistakes, false assumptions, and we need ways to catch this early on

  • Examples places to seek feedback

    • Because our product managers don’t know what they want, they find out from the customers. But customers get things wrong

    • Because our product managers don’t know everything about systems, they invite other experts to become stakeholders in the project. Stakeholders can be wrong

    • Because developers don’t know what to code, they find out from the product managers. What is coded can be wrong

    • Mistakes made during code occur, the IDE will pick these up, not all of them

    • Because developers make mistakes in understanding the existing code, developers use a statically typed language. The compiler corrects developer when they are wrong.

    • Because developers make mistakes while thinking, they work with a pair. The pair corrects their pair

      • The same is true for code reviews on pull requests

    • Because both pairs are human and also makes mistakes, they write unit tests. The unit tests correct the pair when wrong.

    • Because there is a team that is also coding, code is integrated with other code. The code won’t compile or test's pass if wrong

    • Because the team makes mistakes, acceptance tests are written that exercise the whole system. Acceptance tests fail then wrong

    • Running acceptance tests is not manual process as this can be forgotten to be triggered. Instead the build will automatically run the tests

    • Because we didn’t think of every scenario, we get testers to explore the system. Testers will tell us if it’s wrong

    • Because we only made it work on one person's laptop, we deploy the system to a realistic environment. The tests will tell us if it’s wrong.

    • Because we sometimes misunderstand our product manager and other stakeholders, we showcase the system. Our stakeholders will tell us if we’re wrong.

    • Because our product manager sometimes misunderstands the people that want the system, we put the system in production. The people who want it tell us if we’re wrong

    • Because people notice things going wrong more than things going right, we don’t just rely on opinions. We use analytics and data. The data will tell us if we’re wrong

    • Because the market keeps changing, even if we were right before, eventually we’ll be wrong. Use data, to find this out

    • Because it costs money to get it wrong, we do all these things as often as we can. That way we are only ever a little bit wrong.

    • Don’t worry about getting it right. Worry about how you’ll know it’s wrong, and how easy it will be to fix when you find out. Because it’s probably wrong

Risk

  • Frequent releases reduce risk

  • Risk is a factor of the likelihood of a failure happening combined with

    the worst-case impact of that failure

    • Risk = Likelihood of failure × Worst-case impact of failure

    • an extremely low-risk activity is when failure is incredibly unlikely to happen and the impact of the failure is negligible

    • High-risk activities are when both sides of the product are high—a high likelihood of failure and high impact.

    • Large, Infrequent Releases Are Riskier

      • Risks include

        • outage

        • data loss

  • Solution of testing everything is impossible

    • We can test for the known scenarios, but we can’t test for scenarios we don’t know about until they are encountered (the “unknown unknowns”).

    • No matter how much you test, production is the only place where success counts

Last updated

Was this helpful?