# Review Kung Fu

As you progress on your path of Review Kung Fu your skill may take you to new
levels. Your objective is to spot potential problems and help others find
solutions. As you do, others will take note of your skills, they will seek your
knowledge and wisdom: your Kung Fu. They will look to you to help grow their own
skills, to see further. This will be a sign that your efforts and training are
paying off. You, in turn will learn from them, and your Review Kung Fu will
continue to reach new higher levels.

Together producers and reviewers share a symbiotic relationship. This
relationship fosters high quality results. When the product of this symbiosis is
shared with others, the Review Cuckoo rejoices. In his glory he spreads his
blessing and praise on those who have most helped others produce well. You
worked hard for this blessing and you proudly wear his praise; not because of
your arrogance, but because Diffy wants those seeking to improve their Kung Fu
to easily recognize those whose skill may help them deliver.

# Diffy's Badges

### Toes

You are dipping your toes in the Review waters. You are not sure if you want to
take the plunge but your are excited about the possibilities ahead.

### Heel

You have recognized issues needing to be addressed and guided your peers towards
an improved product. In doing so you have had to dig your heels in a few times,
but it was worth it, a better path was taken.

### Feather

You have transcended beyond the bare mechanics of reviewing. Where others read,
you meditate. Where others comment on code, you add your yin to its yang. You
are no longer a reviewer, but an ethereal wisp that dwells within Gerrit.

### Tail

### Beak

### Bandana

### The Eye

You have seen beyond what others have seen. You can spot a needle in a haystack.
Your vision has guided countless who wavered. Very little escapes your eye. It
sometimes seems like a glimpse of your eye may help find a way beyond what
appears to others as noisy chaos. Your Review Kung Fu is unchallenged.
