There are a few metrics in common use for gauging a developer’s ability:
- Proportion of success
- Years of experience
- Speed / efficiency
- Quality of code
- Fame or reputation
- Amount of code written
- Ability to think abstractly
Different people and organizations give varying weights to these indicators when evaluating a developer for one reason or another, whether for potential employment, as part of a competition, or simply out of personal interest.
But can a developer’s skill be described by some formula composed of such figures? Is any one weighting system likely to be more accurate?
Yes to the latter; very much no to the former.
Can we feel assured that some systems of evaluation are more dead-on than others? Absolutely — there are some ways of examining a developer’s ability that strike way off. Taking “lines of code written in career” as a major metric is bound to lead to failure — any developer worth his or her salt knows that lines of code are virtually independent of quality. In contrast, a careful comparison of a developer’s career and success of his projects might provide a more accurate version of their abilities, in light of what they have accomplished.
But what are we trying to achieve when we rank this way? We’re only trying to figure out where we place a person in comparison to others. It’s at best an approximation. It doesn’t nearly explain who they are as a developer, nor what they have accomplished in the broader sense.
A young schoolteacher educating fifteen children in a one-room schoolhouse in rural Montana one hundred years ago is a good representative of the class of people we might call “not highly accomplished.” Such an individual lived in a small community, interacted with few people, had a very small legacy that lasted not very long after death, presumably. If you were to “gauge” such a person’s effect on the world in some kind of ranking of teachers worldwide, you wouldn’t place him or her very high.
And you might be right. Or you might be very wrong. The point is that from an external standpoint, you have no way of knowing the true quality and impact of this teacher.
Would you know if her students were bored and uninspired by her teaching, or if she taught with an infectious love that gave them a thrill of learning for the rest of their lives?
Can we determine if half of those students never worked a solid job in their lives, or if they raised children with such dedication to success that they went on to become movers and shakers?
And is there any practical way to say if the words of wisdom that teacher imparted fell on deaf ears, or if they were received willingly by eager students, used to guide their actions through the course of their lives, improving their choices, their own lives, and the lives of those around them?
These are imponderables, mostly — we won’t ever know, we can’t know, and that’s alright. Some of the best legacies are an undercurrent; unknown and largely unfelt, but raising the quality of our lives and our world in humble but significant ways.
Rating a developer is much like rating this teacher. In fact, rating any individual’s accomplishments follows a similar vein, but as practical creators in a decidedly hard (as in not soft) discipline, developers have their abilities and accomplishments rated, ranked, and considered much more often and more stringently than many other fields.
This discrepancy elucidates why it’s so important not to let our systems of evaluation for a developer’s effective quality influence how we evaluate their actual accomplishments. A good developer’s impact on the world goes far beyond the number of projects they’ve created, or the number of users they’ve gained for a company, or the amount of money they’ve earned — or indeed any such metric or combination of metrics. A developer’s impact is the lives they’ve affected in a thousand subtle, unknown and probably unknowable ways.
People in the software industry often say “our software changes lives” or a similar variant. It’s meant to inspire confidence in the product they maintain — totally understandable. But the ways in which software really changes lives are the ones mostly unseen.
Software changes lives when two people who might never have met use a small-market app to get together and collaborate on a project that one day balloons into something significant.
Software changes lives when a doctor makes a better diagnosis because the diagnostic software they use incorporated a library that simplified the primary developer’s task, enabling them to focus on the big picture and make a more accurate algorithm.
Software changes lives when a destructive virus is blocked by free antivirus software using a definition that was submitted by an anonymous user who discovered the existence of this new virus using white hat hacking techniques he plays around with in his free time.
And software changes lives when an educator is able to use an interactive 3D model to represent a molecular structure to a struggling student, or when an lonely child connects to the world through an online game, or when your car doesn’t crash and kill a pregnant mother because it has well-written collision detection, and in a hundred thousand other ways which go undocumented and uncompensated and likely always will.
And all these ways that software changes the world mean a developer changes the world whether anyone knows it or not, and whether the developer even knows it or not — but it lives on as an invisible legacy of that developer making people’s lives better.
That is a developer’s ability. That is what makes an accomplished developer, though we may never know it.
Practical rankings and ratings are understandable and necessary. We live in a practical world. If you need to develop software in a timeframe and scope and with a limited number of resources, you need to confirm as accurately as possible who will best meet those criteria. You can’t possibly, and shouldn’t, probably, take the time and effort to figure out just who this developer really is, and what we can expect from their lives, and all the tangential paths through which they impact the world. That’s all very nice, but has no bearing on the practicals of here and now.
So go on with your rankings; try to be fair, but be realistic. There’s no cruelty inherent in making decisions with cold, hard, verifiable facts. Good decisions breed success, and success, when achieved properly, leads to a better world in its own way.
But take some time to think about the million ways that a million developers you have never heard of and never will are improving the world every day without even knowing it, and be glad.
(Cross-posted at https://medium.com/@MartinBerlove/a-developers-impact-f2f76385c811)