As Agile practitioners, we emphasize collaboration, communication, and iteration. But feedback is the technique that allows us to practice effectively as a team. Why is feedback so important to the agile process?
Iteration, communication, and collaboration all depend on feedback.
Feedback is the common denominator of iteration, communication, and collaboration. Without sharing and receiving messages, we wouldn’t know what was good about our work and what could be improved. When teams lack good communication and collaboration, members begin to work in isolated silos. Siloed members don’t have any real understanding of what other team members need or don’t need from us. And of course, unless we want to iterate the same bugs and broken features over and over again…we need to examine the merits and flaws of our work! We can do so by participating in a thoughtful critique. A critique is a detailed, non-judgemental analysis of merits and faults. A good critique of work or work-in-progress allows us to meaningfully improve through iteration.
Feedback allows us to create a polished product that is useful to our end-users.
Feedback allows us to improve our work. As any good tester will tell you, we cannot know for sure that something will work until we try it. A failing test is a form of feedback, which tells us that something didn’t work the way that we thought it would. The most effective way to test is to do it immediately and throughout the entire software process. Test all the way from planning product features to gathering end-user input. Catching technical bugs or ideological fallacies as early as possible helps us to create polished products. In addition, highlighting ideas or techniques that work well can build confidence and help keep the entire team on the right track.
Skillfully delivering group feedback increases team cohesion.
Participating in a thoughtful critique helps us grow in our roles as trusted advisors. Discussing flaws without letting the conversation turn personal treats them as opportunities for analysis and growth instead of stifling effort with fear. Highlighting things that went particularly well provides guidance for the entire group. Receiving this feedback (whether or not it was about our work!) provides psychological safety that our work will be recognized and that our voices will be heard. Separating work from ego in this way builds trust and focuses on continuous improvement without needlessly punishing misguided effort.
Feedback allows us to smoothly deliver that product to our end-users.
Just building the application isn’t enough – we have to be able to get it and its iterations out to our users! The focus of DevOps/DevSecOps is to smoothly facilitate that end to end delivery. Repeatable deployments and testing in production-like environments shifts delivery feedback left. If a deployment fails in a stage environment because of a missing parameter or because a database script didn’t run, we can address the issue without impacting our customers in production. Creating idempotent, scalable environments, writing configuration as code, and transitioning to Continuous Delivery (or even Continuous Deployment!), smooths our delivery process by using feedback and communication between development, testing, and operations.
Feedback doesn’t exist in a vacuum – in the long-term, it can create lasting change.
As alluded to in the last point, sharing feedback often affects more than just the participating parties. Conway’s law states “Organizations which design systems…are constrained to produce systems which are copies of the communication structures of these organizations”. In the short-term, constantly and effectively communicating feedback and using it to grow will positively affect your team’s performance. But in the long term, that communication structure can produce lasting change by bubbling out through the Product Owner or the Stakeholders. Feedback also has a funny way of hanging around in the back of peoples’ heads until it’s ready to manifest itself, at work or elsewhere in life. It feels great when someone comes back and says, “Hey, I thought about what you said, and I have a way to address it.”
Feedback is important to agile mindsets.
Giving and receiving feedback within a group context is an acquired skill. This skill is imperative to practice within high-performing agile teams. Of course, it is best to formalize the group feedback process and use it within a ceremony such as a Retrospective. That gives a platform for overarching feedback that can’t be addressed moment-to-moment. It also allows people to check their ego at the door and mentally adjust to the appropriate analytical headspace. If you think your team could improve its feedback process, bring it up at your next Retrospective!
Stay tuned for my next post about which agile ceremonies and processes are appropriate to tune to group feedback sessions!