I taught in a high school for 5 years. I learned one very important thing: you can lead a horse to water but you can't make it drink. I only noticed after that experience that in my previous 25 years as a programmer the vast majority of people ignored my advice (even when they asked for it!)<p>Generally speaking, I've found that people have a preconceived notion of an answer when they solicit feedback for something. Then they go shopping around for the person who will answer with the feedback that they expect. When you give unsolicited feedback the effect is even stronger -- people simply do not want to believe that their expectations do not mesh with the real world.<p>The end result is that if you give good feedback and are saying things that the person knows already, it's not very effective because they already know it. If you give feedback and the person is surprised by it, they will disregard it unless forced to confront it. Forcing people to confront their incorrect understanding sometimes works, but rarely (Think... how many students shape up after failing a test? Some do, but the vast majority simply fall into a pattern of failure).<p>My most successful pattern of "feedback" is to simply provide support. If someone requires feedback, I rather ask them what they think of the situation. If it matches my opinion, then I encourage them to continue. If it doesn't, I do nothing until the situation reaches a head -- then I offer my assistance to help. Usually if the person is desperate they will also be open to new ideas.<p>Allowing people to fail is the best way to help them learn. Sometimes it can be costly, though. If the cost gets to be too high, you might have to intervene, but that's not a "regular feedback" kind of thing.<p>Just to clarify, though, most people require a different kind of feedback -- "You are a nice person. I enjoy working with you. I like it when you do X." It makes them feel comfortable and able to do their work. That kind of encouragement is often lacking in the workplace (and in schools, unfortunately). It helps to make a point of saying nice things whenever you notice them. At school I literally made a chart with all my students on it and I checked off whenever I noticed something they did right (and commented on it). If someone was missing ticks I would dedicate myself to watching them all day to catch them doing something right (try not to be creepy about it ;-) )<p>Edit: If you are wanting to write software, I would <i>love</i> a chart that I could put all my colleagues on where I could write nice things when I saw them. It would be awesome if it had alarms to tell me when I wasn't encouraging certain people, etc. I'd pay money for that.