>
>
Гугл-программисты. Как идиот набрал на …

Гость
Статей: 23

Гугл-программисты. Как идиот набрал на работу идиотов

В стародавние времена я на постоянной основе занимался техническими собеседованиями – отбирал кандидатов на должность программиста в компанию. У меня была простая, понятная, шикарная методика (не мной придуманная). Чувак сначала проходил длинное собеседование по куче разнообразных вопросов, потом решал несколько задач. На бумаге, как мы делали в ВУЗе.

Мы опубликовали и перевели эту гостевую статью с разрешения правообладателя. Автор статьи – Иван Белокаменцев. Оригинал опубликован на сайте Habr. Это сторонний автор.

Кстати, если интересно, в компании PVS-Studio после устной части собеседования, человеку предлагается решить задачу на бумаге. И видимо, после знакомства с этой статьёй мы сохраним эту практику. Или кандидат будет писать код на компьютере в нашем присутствии :). Впрочем, мы всё равно делаем упор больше на теорию. Участие в разработке анализатора кода требует знаний тонкостей языков программирования. Кстати, заодно предлагаем взглянуть на статью "Глубина кроличьей норы или собеседование по C++ в компании PVS-Studio".

Оглядываясь назад, понимаю – отбор действительно работал шикарно. Все, кого я тогда отобрал, стали уважаемыми в нашей деревне специалистами. Больше половины из них давно открыли собственный it-бизнес, в самых разных сферах – от 1С до разработки CRM-систем.

Вот этот опыт и замутил моё сознание. Настолько, что я решил поменять методику – подумал, что дело не в ней, а во мне. Я есть великий специалист по техническим собеседованиям.

Изменения

Изменения я внёс очень простые – теперь люди писали код не на бумаге, а на компьютере. Чего, подумал я, они будут, как в древнем монастыре, сидеть каракули выписывать. Я и сам давно отучился обходиться без IDE, контекстных подсказок, отладки и прочих красотулек современной разработки.

Давал чуваку задачи, сажал за комп и оставлял на полчаса-час. Когда приходил – видел готовое решение. И не просто готовое, а весьма такое охрененное – и код красивый, и оптимальность на достаточном уровне. Сам офигевал – неужели современное поколение настолько прониклось технологиями, что пишут код, как дышат?

Ну и набрал себе таких чуваков.

Первые месяцы

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

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

Думал, что так будет всегда. В смысле рост продолжится линейно. Ага, щас.

Плато

Через 3-6 месяцев все чуваки до единого вышли на плато по продуктивности. К сожалению, в это же время все они перешли на удалёнку, в связи с коронавирусом. А я сидел дома и бесился.

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

Думал, дело в удаленке – там ведь не включишь харизму на полную мощность. Ну, наверное, мотивации людям не хватает, живого общения, а иногда – пинка под зад. Тут еще начальство медвежью услугу оказало – спрашивало типа "продуктивность из-за удалёнки не растёт?". Конечно да, отвечал я. Вот выйдем в офис, и попрёт!

Офис

Ну вышли мы в офис, в августе. Сидим, работаем, задач много – успевай делай (во время удалёнки случался дефицит задач). Смотрю на показатели – не растут, сволочи. Пришлось, блин, погружаться.

Сначала погрузился тупо в помощь людям. Не получается решить задачу? Зови меня. Я подойду, сгоню тебя с компа, сяду и доделаю. А ты, бездарь, сиди рядом и запоминай, как работать надо.

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

Повторное собеседование

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

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

Один только осмелел и спросил – "а можно я в гугле посмотрю?". Тут до меня, идиота, и дошло.

Гугл-программисты

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

Они пишут код, не понимая базовых конструкций. Нет, они не пишут код – они его скачивают. Нет, опять не то... Скачать код – это типа "npm i", это нормально. Они списывают код. Не умея его писать.

Начал возмущаться – блин, да как так! Ладно там новую технологию раскурить с помощью интернета, или научиться пользоваться какой-нибудь редко встречающейся хренью, чтобы голову не забивать. Но базовые-то вещи! Как вы можете их из интернета списывать?!

Знаете, что они ответили? "А что такого?". Я чуть в монастырь не ушел с горя. Взял паузу, перестал с ними разговаривать, закрылся и думал. Естественно, понял, что проблема не в них, а во мне.

Они лишь следуют законам своего мира. А я, идиот, эти законы не увидел, не понял, не осознал их серьёзность. Серьёзность поверхностности.

Поверхностность

В первый день учёбы в институте нас собрали в аудитории на кафедре, и старый прокуренный дядька, зам. декана и доцент, сказал: "Институт не даёт знаний. Он учит добывать знания самостоятельно".

Мне повезло – я учился в начале нулевых, когда интернет был только на картинках. Хочешь разобраться в C++ — садись и разбирайся, вот тебе C++. Хочешь написать курсовую по измерению шероховатости – иди в библиотеку, читай книжки, пиши курсач. Хочешь сделать доклад по истории – иди читай журналы. Ага, все подряд, пока не найдёшь нужные статьи.

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

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

Правда, не весь код есть в открытом доступе в интернете. Поэтому возникает плато. Продуктивность гугл-программиста – это не мера написания кода, это мера его списывания из интернета. Это примерно как скорость скачивания. Лет 15 назад, чтобы посмотреть фильм, его надо было сначала скачать, теперь так делают только староверы.

Когда-то, наверное, гугл-программисты обгонят обычных. По крайней мере, в решении стандартных задач. А пока – будем мучительно формировать новые нейронные связи по использованию базовых объектов, типов и конструкций ЯП.

Надо ж мне было так облажаться, блин. Стыдно.

P.S. И это... Своих перепроверьте.

Здесь и на других площадках появилось много неожиданных комментариев. Поэтому ещё раз подчеркнём, что это гостевой пост в нашем блоге. Автор статьи никак не связан с компанией PVS-Studio. Мы перевели и разместили текст, так как он показался интересным и заслуживающим обсуждения.

И заодно, раз вы здесь, предлагаем познакомиться с ещё одним провокационным материалом: "50 вредных советов для С++ программиста".