When evaluating programmers, it’s very easy to see the value of someone writing a lot of new code. Do not, however, fall into the trap of only valuing developers that write quickly. A healthy project has a mix of developers in terms of values, strengths, and weaknesses.
One productive way to categorize programmers is starters and finishers.
A starter creates a vision for new code and writes the initial version, prototype, or skeleton. Starters usually lack motivation for bringing the project to the next level, making it easier for others to work on the code, or generally polishing. That isn’t to say that they can’t do it — it just costs them much more mental energy than a finisher, so they often don’t.
A finisher, conversely, takes an existing vision, fills in the details, and turns it into something more practical. That might be implementing a spec (and suggesting revisions), rewriting a prototype, filling in a skeleton or tracer, making a project production ready, or making a project easier for new contributors to on-board. Finishers struggle with a blank sheet of paper in the same way that starters struggle to improve the work of others.