Unfortunately, development is not all ⛅ and 🌈. Like any activity that interacts with humans, it's never perfect. In fact, people give speeches about definition of done and the principal of good enough.
What we don't talk about enough is the awkward stuff. You know, when things aren't unicorn farts and glitter swirls.
I have a somewhat unique perspective since I'm a veteran. In the military, you win as a team and you lose as a team. When there is something off, you call it out. You don't name names. People jump on the issue and fix it...as a team. This is how we grow.
In agile software development, we use retrospective meetings to call out what didn't go so well. We document. We review. And maybe... Just maybe, it doesn't come up in the next retrospective.
So, how do you all critique each other? What is your process? What have you learned along the way?