The following text is a partial translation of the original English article, performed by ChatGPT (gpt-3.5-turbo) and this Jekyll plugin:
Я не говорю о тех, кто известен, хорошо оплачивается или является авторами крупных и популярных продуктов. Они не обязательно талантливы, хотя их результаты впечатляют. Талант - это дар Бога, который есть у некоторых из нас. Очень мало из нас… иначе это бы не называлось талантом. Мы все знаем, как выглядит талант в музыке, спорте, поэзии или искусстве актера. Мы сразу можем сказать, кто обладает им, а кто притворяется, несмотря на все свои усилия. Можем ли мы сделать то же самое после короткого интервью с программистом? Я считаю, что да.
Я решил прочитать, что говорят другие о искусстве проведения собеседований и как они предлагают найти талантливых среди всех остальных обычных программистов. Джефф Атвуд предлагает обратить внимание на страсть человека, навыки коммуникации, личное отношение и способность работать в команде. Джоэл Спольски предлагает нанимать умных людей, которые могут добиться результатов. Хаойи дает очень подробные инструкции для интервьюера, основной акцент делается на способности кандидата писать код, обсуждать проблемы, анализировать ограничения и быть человеком, с которым нам было бы приятно работать.
Все это имеет смысл, но речь не о таланте. Речь идет о нахождении человека, который может эффективно писать и поддерживать спагетти-код и быть счастливым при этом (возможно, с небольшой дозой антидепрессантов).
Представьте себе, что вы набираете еще одного певца для хора, в котором у людей нет слуха для музыки. Вам нужен талант? Я сомневаюсь, что талантливый человек сможет петь в этом хоре. Ну, может быть, некоторое время, если вы достаточно хорошо заплатите. Как и любая другая команда в любой другой отрасли, большинство групп программистов состоит из среднестатистических программистов, а не талантливых. Современное программирование, особенно в больших проектах, не связано с талантливыми личностями, это командная работа посредственных кодеров. Вот почему все гуру собеседований учат нас находить еще одного кодера: должны быть должным образом образованными, обученными, опытными и готовыми писать еще один пакет контроллеров Spring. И, конечно же, наслаждаться этим.
Итак, что именно такое талант?
Это врожденная потребность структурировать вещи.
Точно так же, как музыкант, талантливый программист физически не может терпеть то, что звучит неправильно: неопределенность, несогласованность, хаос, иррациональность и отсутствие логики. Талантливый программист ощущает эти вещи, в то время как посредственный говорит “Главное, чтобы работало!” и продолжает работать.
Позвольте мне объяснить на примере. За последние пять лет я использовал простой кусок кода на Java, чтобы интервьюировать всех, кто интересуется работой со мной. Я прошу их просмотреть его и найти ошибки. Попробуйте сейчас. У вас есть пять минут.
Сколько проблем вы нашли? Вот ответы. Там есть приоритетный список дефектов, которые я ожидаю, что кандидаты найдут. Самые важные находятся в начале - это структурные проблемы в коде. Посредственные разработчики привыкли работать с плохим кодом и могут легко смириться с этим. Имя класса - Parser
, но в нем есть методы get
и save
? Кому это важно, пока это работает! Пара методов - не get
и set
, а get
и … вдруг save
? Кому это важно, оно все равно работает! И так далее. Посредственные программисты не раздражаются, когда они сталкиваются с несогласованностями. Точно так же, как люди без слуха для музыки, они не слышат, что-то неправильное!
Когда я интервьюирую программистов, я не обращаю внимания на то, сколько они знают о Java, насколько хорошо они понимают ООП или сколько проектов они успели завершить на данный момент. И, конечно, мне не важно, насколько они могут быть симпатичны. Вместо этого я обращаю внимание на то, насколько они ненавидят видеть то, что выглядит неправильно. Я проверяю, насколько они нетерпимы к хаосу. Вот для чего мне нужно мое Java-тестирование.
Честно говоря, очень мало из них обладает этими качествами.
И это потому, что очень мало проектов (и руководителей проектов) нуждаются в этих качествах. Большинство процессов и кодовых баз плохо структурированы. Любое проявление непереносимости этой структуры или честные попытки внести некую дисциплину только раздражают посредственных программистов, которые всегда в большинстве. Талантливый программист, постоянно требующий дисциплины и согласованности, выглядит как сумасшедший пациент с ОКР. Никто не понимает, что не так, и просто игнорирует его, в лучшем случае. Более того, плохие практики программирования, исходящие от популярных фреймворков и плохих принципов управления, поощряются Агайлом и его коучами. Они учат нас не обращать внимания на качество программирования.
Сейчас на рынке требуется посредственность, а не талант.
Так что не беспокойтесь, если вы чувствуете, что у вас нет особого таланта - в большинстве проектов вам будет намного лучше без него.
Do you think you have a #talent for programming?
— Yegor Bugayenko (@yegor256) January 5, 2020
Translated by ChatGPT gpt-3.5-turbo/42 on 2023-11-22 at 09:42