As suggested in the comments, here is what I have found to be some “keys to success” for feedback.
1. Set the tone. When a new member joins the team, describe the feedback norms of the team (e.g., frequency, who’s involved, purpose). If feedback is a core part of the team, ensure new members know to expect frequent and direct feedback - it may be unexpected and difficult to adjust to organically.
2. Make feedback part of the routine. Make formal feedback a part of the team’s weekly routine. Have recurring conversations with each team member at least monthly, perhaps weekly. This includes peers, your supervisors, and those that you supervise. They should be on the calendar and rarely rescheduled.
3. Be objective and self-oriented. The best feedback is pure data. Make observations of specific behaviors. State how that behavior affected you. If it is a desirable behavior, make suggestions of where it could be continued. If it is undesirable, leave it up to your colleague whether or not to stop.
4. Actively invite feedback. Start every feedback conversation with “What feedback do you have for me?” Listen, never interrupt, and never discount a point of feedback - even if it is truly baseless.
5. Use an objective capabilities framework for technical skills. When criticizing technical skills (e.g., the quality of someone’s code) always use an existing quality framework. If your company doesn’t have a coherent set of technical standards for each role, create your own for yourself or members on your team and make it widely available.
These represent my own preferences for how I like to receive feedback, and what I think others have reacted well to in the past. They’re not necessarily universal though, especially across cultures (I’m in the US). I’m curious to hear what others would suggest.