By clicking on a programming language in the Nitpick menu, you may provide feedback to other users who have submitted code samples from exercises you have already completed.
The list view for a particular exercise shows all contributions that you haven't commented on or are not manually muted. After submitting a Nitpick, a user's submission will be automatically muted so that you can focus on other submissions.
You may mute particular submissions in the list so that they do not show up by clicking on the button. After muting submissions they will not show up in your list view until a new submission has been made. You can still access those submissions by the direct link or through the gallery. You can also unmute the submission by clicking on the button.
When reviewing exercism submissions, it is possible and encouraged to share advice and insight on the style and approach of a given implementation.
Nitpicks should provide positive and constructive criticism, subtly nudging a coder toward progressively better implementations of an exercise.
Consider it an opportunity to explore the subtleties of a particular coding problem.
Instead of outright suggesting an altogether different implementation, consider instead giving suggestions of small adjustments or refactorings to evolve the design and style of the existing code toward a more ideal implementation, by some definition of ideal.
In most cases, our idea of ideal code is simple, readable, maintainable, and modular.
Consider it an opportunity to discuss different coding practices and the value they provide in the context of crafting better software.
For example, with Bob (in Ruby) people often:
Please note that good job or great work are not positive, constructive feedback. If there is something you like about a solution, be specific when describing it.
Our goal is to collect a set of explanations for why a given solution might be more desirable (or undesirable, in this context), and share them where appropriate. Ultimately, we hope to converge on sets of theoretically ideal implementations to a given exercise, and provide justification for why it is an exemplary approach in a particular context. For example, we might have a "most readable" implementation, a "simplest" implementation, and a "fastest" implementation, along with explanations for when each would be preferable.
When leaving nitpicks, please remember that beginners do not always have the same confidence level as more experienced developers. It is therefore important to be courteous and considerate. Strive to be clear in your explanations and give users a chance to arrive at their own improvements. Might the Socratic Method be a suitable approach?
A rising tide lifts all the boats. - Unknown