Программисты а-ля «Гугл». Как один идиот нанял еще пару идиотов

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

Давным-давно я регулярно проводил технические собеседования — набирал кандидатов на должность программиста в компанию. У меня был простой, ясный и умный план подбора персонала (правда, не я его придумал). Сначала у ребят было длинное интервью, где они ответили на кучу вопросов. Затем они выполнили некоторые задачи по программированию. Они кодировали на листе бумаги — точно так же, как мы делали это в университете.

Оглядываясь назад, я вижу, что процесс найма действительно работал хорошо. Все те кандидаты, которых мы наняли, стали ценными экспертами в местном ИТ-сообществе. Более половины из них уже давно создали собственный ИТ-бизнес в самых разных сферах — от разработки ПО 1С до внедрения CRM-системы. Именно этот волнующий опыт затуманил мой разум. Настолько, что я решил изменить план набора — я думал, что все дело в моих личных достижениях. Я отличный технический интервьюер!

Изменение

Я сделал очень простое изменение — теперь люди писали код на компьютере, а не на листе бумаги. Я подумал: «Почему они должны сидеть и строчить на бумаге, как будто они пишут рукопись в древнем монастыре?» Я и сам уже забыл, каково это кодить без IDE, контекстных подсказок, отладки и прочих прелестей современной разработки. Итак, я давал задания и компьютер кандидату и оставлял их на полчаса-час. Вернувшись, я увидел готовое решение. И не просто готовый, а чертовски крутой — код был красивый и хорошо оптимизированный. Это поразило меня — нынешнее поколение настолько обожало технологии, что писать код для них было все равно, что дышать! И я нанял этих людей.

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

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

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

Они легко справлялись с простыми задачами. Я закидал им более сложные задачи — задачи для тех, у кого был год опыта. Что я получил? Моя команда справилась с этими задачами без посторонней помощи! Я был потрясен и взволнован. Какое замечательное поколение подрастает! Я думал, что так будет всегда. Я имею в виду, я надеялся, что производительность будет расти нынешними темпами. Да, вы желаете!

Плато

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

Я думал, что виновата удаленная работа — мне было трудно использовать свою харизму. Людям могло не хватать мотивации, живого общения, а иногда и… пинка под зад. Кроме того, наше начальство оказало мне медвежью услугу — задавало мне вопросы вроде следующего: «Не застопорился ли рост производительности из-за удаленной работы?» Конечно, я говорил да. Как только мы вернемся в офис, производительность взлетит до небес!

В офисе

Итак, мы вернулись в офис в августе. Мы сидели и работали. У нас было много дел — нужно было только найти время (у нас был дефицит задач при удаленной работе). Я смотрел на производительность – она не росла… черт возьми! Пришлось засучить рукава и самому погрузиться в проблему.

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

Повторное интервью

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

Только один из них осмелился спросить: «Можно мне это погуглить?» Вот когда я — идиот — наконец понял.

Программисты «гугл»

Как будто кто-то ударил меня по голове мешком с мукой. На обработку у меня ушло около двух дней. Как это возможно? Красивый, хорошо оптимизированный код, который мне показали на первом собеседовании, был из Интернета. Взрывной рост производительности в первые месяцы был за счет решений, которые они нашли в Интернете. Те самые ответы на вопросы пользователей после волшебного «Мы вам перезвоним» от этих ребят — нашлись в интернете.

Они кодировали, не понимая основных конструкций. Нет, они не написали код — они его скачали. Нет, это тоже не то. Для загрузки кода это похоже на запуск «npm i», это нормально. Они скопировали код. Не зная, как это написать. Вот что меня разозлило – что за…? Ну, я понимаю, когда вы бродите по сети, чтобы понять, как работает новая технология. Или когда нужно использовать какую-то экзотическую фичу и не забивать себе голову лишней информацией. Но элементарные вещи! Как можно копипастить элементарные вещи из интернета?!

Хочешь знать, что они сказали? «Подумаешь?» Я был готов уйти в монастырь от горя. Я сделал паузу, перестал с ними разговаривать, ушел в себя и начал думать. Я, конечно, понял, что дело не в них. Я был проблемой. Они лишь следовали законам своего собственного мира. И я был дурак, что не видел этих законов — я не понимал их, не осознавал их серьезности.

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

В мой первый день в университете нас собрали в лектории на кафедре. Пожилой мужчина, который также является заместителем декана и доцентом, сказал нам: «Университет не дает знаний. Он учит, как получать знания самостоятельно». Мне повезло — я учился в начале 2000-х. Я знал об Интернете только по картинкам. Если вы хотите понять C++, садитесь и учитесь — вот C++ для вас. Если вы хотите написать курсовую работу по измерению шероховатости поверхности, идите в библиотеку, читайте книги и напишите курсовую работу. Если вы хотите представить доклад по истории, идите и читайте журналы. Ага, нужно читать по одной, пока не найдешь нужные статьи.

К сожалению, программистам «Гугла» не так повезло. Им доступна любая информация, всегда и везде. Они научились быстро находить эту информацию — будь то адрес магазина с печеньками, распродажа брюк или генерация запроса. В книгах написано: мозг формирует и, главное, укрепляет именно те нейронные связи, которыми пользуется человек. Если вы постоянно пишете код, вы делаете это все лучше и лучше. Если вы постоянно ищете информацию в интернете, вы прокачиваете именно этот навык. Если вы копируете код из Интернета, вы становитесь в этом великим мастером.

Однако не весь код является открытым. Вот и плато. Продуктивность программиста «Гугла» — это не показатель написания кода, а показатель его копирования из Интернета. Это как скорость загрузки. Лет 15 назад посмотреть фильм можно было, только предварительно скачав его. Сегодня это делают только более взрослые поколения.

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

P.S. И знаешь, что? Проведите повторное собеседование со своими программистами.