What are the best ways for managers/organizations to reward developers who have done a good job?
TimeOff: If this is at the end of a long push with a lot of overtime, I would suggest paid time off. One week to one month works well to restore a tired mind.
In lieu of real TimeOff, giving a developer a few weeks to "play around" is nice. Let them learn a new programming language, try a new development tool, read some books, get some training, or whatever. Just don't give them any deadlines and don't expect a valuable end-product other than a happy developer.
Praise: Be careful that the praise is (1) specific, (2) from someone the developers respect, (3) from someone who knows enough about development to spot poor work and (4) from someone with high enough standards.
Lollipops: You laugh, but my teams love them. I find they'll agree to any impossible schedule as long as I allow them to shlurp on something sweet for a few minutes each week. Try this and see how extreme it can be.
Choice of project. Rather than assigning them to some DeathMarch project where they are needed, let them select which project team they want to join.
Parties. A great reward for those who like them. But many developers are introverts, and are not comfortable at parties. Others see office parties as an unwelcome obligation, and would prefer to spend their free time away from the people they work with. It may be difficult to create a party atmosphere that all participants would enjoy (for example, younger single people typically don't enjoy the same kind of party that older married people do).
Promotions. Some developers want additional responsibility, but some don't. The best reward is to give them the position they want, which may not necessarily be the position you want to give them.
Fire them!: Seems cruel at first, but it teaches them one helluva valuable lesson in life: "Just because you're good doesn't mean I have to love you." Think about this more before rejecting it. Developers who've done a good job are on their way to becoming indispensable, and that's bad, says JerryWeinberg. Get rid of them now before their attitudes rear up and you have a mess on your hands. Also, if they've done a good job, then by definition they've out-competed you, and you're not going to stand for that. Afterall, there is such a thing as turf, and your hard won turf is yours, not theirs.