Есть несколько показателей, которые обычно используются для оценки способностей разработчика:

  • Доля успеха
  • Годы опыта
  • Скорость/эффективность
  • Качество кода
  • Известность или репутация
  • Количество написанного кода
  • Способность мыслить абстрактно

Разные люди и организации придают разный вес этим показателям при оценке разработчика по тем или иным причинам, будь то для потенциального трудоустройства, в рамках конкурса или просто из личного интереса.

Но можно ли описать мастерство разработчика какой-то формулой, составленной из таких цифр? Может ли какая-то одна система взвешивания быть более точной?

Да в последнем; очень нет первому.

Можем ли мы быть уверены, что одни системы оценки более точны, чем другие? Абсолютно верно — есть несколько способов проверить способности разработчика, которые бьют далеко вперед. Принятие «строк кода, написанных за карьеру» в качестве основного показателя обязательно приведет к провалу — любой достойный разработчик знает, что строки кода практически не зависят от качества. Напротив, тщательное сравнение карьеры разработчика и успеха его проектов может дать более точную оценку их способностей в свете того, чего они достигли.

Но чего мы пытаемся достичь, когда ранжируем таким образом? Мы всего лишь пытаемся выяснить, какое место мы ставим человека по сравнению с другими. Это в лучшем случае приближение. Это почти не объясняет, ни кто они как разработчики, ни чего они достигли в более широком смысле.

Молодой школьный учитель, обучавший пятнадцать детей в однокомнатной школе в сельской местности Монтаны сто лет назад, является хорошим представителем класса людей, которых мы могли бы назвать «не очень образованными». Такой человек жил в небольшом сообществе, общался с немногими людьми, имел очень небольшое наследство, которое, по-видимому, длилось недолго после смерти. Если бы вы «оценили» влияние такого человека на мир в каком-то рейтинге учителей во всем мире, вы не поставили бы его или ее очень высоко.

Возможно, вы правы. Или вы можете сильно ошибаться. Дело в том, что с внешней точки зрения у вас нет возможности узнать истинное качество и влияние этого учителя.

Вы бы знали, было ли ее ученикам скучно и не вдохновляло ее преподавание, или она преподавала с заразительной любовью, которая давала им острые ощущения от учебы на всю оставшуюся жизнь?

Можем ли мы определить, половина из этих студентов никогда в жизни не работали на солидной работе или же они воспитывали детей с таким стремлением к успеху, что впоследствии они стали первопроходцами?

И есть ли какой-либо практический способ сказать, были ли слова мудрости, которые передал учитель, не были услышаны, или если они были добровольно восприняты нетерпеливыми учениками, использовались для руководства их действиями на протяжении всей их жизни, улучшения их выбора, их собственной жизни? , а жизнь окружающих?

В основном это невесомость — мы никогда не узнаем, мы не можем знать, и это нормально. Некоторые из лучших наследий скрыты; неизвестное и в значительной степени неощутимое, но повышающее качество нашей жизни и нашего мира скромным, но значительным образом.

Оценка разработчика очень похожа на оценку этого учителя. На самом деле, оценка достижений любого человека происходит в том же духе, но как практические творцы в определенно жесткой (а не в мягкой) дисциплине, разработчики имеют свои способности и достижения оцениваются, ранжируются и учитываются гораздо чаще и строже, чем во многих других областях.

Это несоответствие объясняет, почему так важно не позволять нашим системам оценки эффективного качества разработчиков влиять на то, как мы оцениваем их фактические достижения. Влияние хорошего разработчика на мир выходит далеко за рамки количества созданных им проектов, или количества пользователей, которых они привлекли для компании, или количества заработанных денег, или любой другой такой метрики или комбинации показателей. метрики. Влияние разработчиков — это жизни, на которые они повлияли тысячами незаметных, неизвестных и, возможно, непостижимых способов.

Люди в индустрии программного обеспечения часто говорят, что «наше программное обеспечение меняет жизнь» или что-то подобное. Он предназначен для того, чтобы внушить доверие к продукту, который они поддерживают, — это совершенно понятно. Но то, как программное обеспечение на самом деле меняет жизнь, чаще всего невидимо.

Программное обеспечение меняет жизнь, когда два человека, которые, возможно, никогда не встречались, используют приложение для небольшого рынка, чтобы собраться вместе и совместно работать над проектом, который в один прекрасный день превращается во что-то значительное.

Программное обеспечение меняет жизнь, когда врач ставит лучший диагноз, потому что используемое им диагностическое программное обеспечение включает библиотеку, упрощающую задачу основного разработчика, позволяя ему сосредоточиться на общей картине и создать более точный алгоритм.

Программное обеспечение меняет жизнь, когда деструктивный вирус блокируется бесплатным антивирусным программным обеспечением с использованием определения, предоставленного анонимным пользователем, который обнаружил существование этого нового вируса с помощью методов белого взлома, с которыми он играет в свободное время.

Программное обеспечение меняет жизнь, когда преподаватель может использовать интерактивную 3D-модель для представления молекулярной структуры учащемуся, испытывающему затруднения, или когда одинокий ребенок подключается к миру через онлайн-игру, или когда ваша машина не разбивается и не убивает человека. беременная мать, потому что у него есть хорошо написанное обнаружение столкновений, и сотни тысяч других способов, которые остаются недокументированными и некомпенсированными и, вероятно, всегда будут.

И все эти способы, которыми программное обеспечение меняет мир, означают, что разработчик меняет мир, знает об этом кто-то или нет, и знает ли разработчик об этом или нет, но оно живет как невидимое наследие этого разработчика, делающего жизнь людей лучше. .

Это способность разработчика. Вот что отличает опытного разработчика, хотя мы, возможно, никогда этого не узнаем.

Практические рейтинги и рейтинги понятны и необходимы. Мы живем в практическом мире. Если вам необходимо разработать программное обеспечение в установленные сроки и в объеме, а также с ограниченным количеством ресурсов, вам необходимо как можно точнее подтвердить, кто будет лучше всего соответствовать этим критериям. Вы не можете и, вероятно, не должны тратить время и усилия на то, чтобы выяснить, кто на самом деле этот разработчик, и чего мы можем ожидать от их жизни, и все косвенные пути через которые они воздействуют на мир. Все это очень мило, но не имеет отношения к практике здесь и сейчас.

Так что продолжайте свой рейтинг; постарайтесь быть честным, но будьте реалистами. Нет никакой жестокости в принятии решений на основе холодных, твердых, поддающихся проверке фактов. Хорошие решения порождают успех, а успех, если он достигнут должным образом, по-своему ведет к лучшему миру.

Но найдите время, чтобы подумать о миллионе способов, которыми миллион разработчиков, о которых вы никогда не слышали и никогда не будете, улучшают мир каждый день, даже не подозревая об этом, и радуйтесь.