Software is complicated, and we therefore must often get feedback from other people. Some people do not know how to give good feedback; they:
- Blindly stamp it with approval - maybe they're shy, don't want to offend, or just don't know how to give feedback.
- Point to useless details that don’t really help - maybe they don't understand how to improve it, but still feel compelled to say something.
- Give completely impractical advice - maybe they don't know what's going on, or didn't want that feature in the first place.
- Use it as an ego booster and try to rip the other person apart - maybe they're just a jerk. (Or, another theory: many socially awkward nerds go into software development. Perhaps they're just desperate for affirmation, and want to dim your candle to make theirs look brighter).
Feedback should be constructive and practical - it's goal should be to make something better. Here are some ideas how:
- Do you understand what the thing is that you're evaluating? If not, save everyone time and admit that ("I'm sorry, I'm not really sure what this is supposed to do, so I can't really comment on it."). You can always learn more about it such that you can have an opinion later.
- Point to something positive. The developer invested time and effort in what they're showing, so affirm something ("this took a lot of effort", "I like how it functionally works", "that's a nice algorithm").
- See what you can practically improve (an algorithm, refactor it, better performance, etc...). Start with the most important improvements first, limit your suggestions to what they can handle, and make it practical.
- If they did something poorly, and it's a touchy subject, try comparing it so something else good that they did. Compare these two feedbacks: (A) "Your first module had great performance, any way to make this second one perform well too? Perhaps we can run the profiler on it?" and (B) "This second module performs too slowly. Fix it."
Giving good feedback doesn't just help the recipient, it helps you too. You can help influence things for the better, others will respect you more, and it can be more mentally challenging (and therefore grow you as a developer).