История про плохого программиста, или Как не надо идти в IT

14068
14

Быть айтишником стало настолько круто, что сегодня каждый первый подумывает записаться на курсы и сменить профессию. Но стать конкурентным кандидатом на пост джуниора, закончив коротенький буткемп, нельзя. Для людей, которые не хотят трудиться и вникать, но жаждут получить оффер, есть только один путь — обман. С одним из таких удальцов однажды столкнулся разработчик Джеймс Джелинек. Недоумение, разочарование и злость, испытанные в процессе общения с этим человеком, Джеймс обратил в поучительную историю о том, как не надо входить в IT.

Прежде чем я начну, позвольте мне акцентировать вот на чем…

Программирование — это, черт побери, сложно!

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

Эта статья про кодера-обманщика и о том, как я пытался направить его на путь истинный.

Несколько лет назад я встретил смышленого 30-ти с чем-то летнего джентльмена, из соображений анонимности назовем его Брайан. Брайан очень интересовался веб-разработкой и уже около года флиртовал с Ruby on Rails. Он даже ходил на один из этих сумасшедше дорогих кодинговых буткемпов (фу!), которые обещают с нуля обучить любого желающего программированию за 12 недель. Он работал торговым представителем и у него было 12 лет опыта в бизнесе, при этом он отчаянного хотел ворваться в мир софтверной разработки.

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

Мы собирались работать над совершенствованием его приложений (преимущественно блог и to-do приложения) и медленно но верно изучать с ним основы. С самого начала я был шокирован, насколько слабо он на самом деле знает Ruby on Rails после 12-недельного буткемпа. Я призвал его изучить язык Ruby глубже, поскольку он — ядро Rails, и без этого Брайан далеко не уйдет, полагаясь исключительно на магию, которую нам дарует Rails. Он пообещал работать над чистым Ruby в свободное время, а я, чтобы его подстегнуть, присылал ему копии любимых книг по Ruby, которые в свое время действительно помогли мне.

Мне казалось, я хороший ментор. О, как я ошибался!

Первый тревожный звоночек

Я зафоловил Брайана на GitHub и частенько просматривал его репы, давал рекомендации, что можно улучшить, комментировал дизайн. Однажды я проснулся и заглянул в его аккаунт, а там уже с утра было пять новых репозиториев, практически готовых. В каждом 2-3 коммита, довольно крупный репо. Выглядело так, будто он скопировал приложение и закоммитил его на Git большими кусками.

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

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

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

Копипастить код не круто, но это не конец света до тех пор, пока ты заимствуешь чужой код достаточно ответственно.

Я объяснил Брайану, что работодатели спросят его про этот код, и когда он не сможет ответить, как что работает и почему, его сочтут некомпетентным. Мы какое-то время спорили на эту тему, пока он не заявил: «Я оставлю эти репы сверху и разберусь, что я построил, чтобы понять».

Мы несколько раз посидели вместе — я пытался заставить его вникнуть, но Брайан почему-то упорно верил в то, что ему не обязательно ничего понимать, потому что у него есть некая расплывчатая идея того, как все работает, а если припечет, всегда можно почитать справочные материалы.

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

Второй тревожный звоночек

Однажды Брайан написал мне в Slack и попросил помочь с упражнением по Ruby. Это была типичная задачка, которую большинство работодателей задают, чтобы понять, насколько ты вообще в теме. Все закончилось тем, что я просто выполнил задание за него и объяснил, как там все работает. Он ответил: «Здорово, я вышлю это сегодня же вечером!».

Я возмутился: «Эй, погоди. Так это было тестовое задание на работу, и ты заставил меня выполнить его вместо тебя?». После чего Брайан быстро вышел из Slack.

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

Третий тревожный звоночек

Вскоре я увидел новый репо на его GitHub-аккаунте под названием «capstone_test». Это было полномасштабное CMS-приложение 18-ти часов от роду. Не существовало ни малейшей вероятности того, что он мог построить это за 18 часов без посторонней помощи. Напоминаю, что я оцениваю временные возможности, исходя из его навыков читать и писать код. Поскольку это был общедоступный репо, я сделал несколько комментариев о том, как он мог бы улучшить приложение. Конечно, в качестве ментора. На том я его и оставил.

Спустя пару дней он написал мне в Slack и поблагодарил за рекомендации, а также заверил, что внес все изменения и показал результат потенциальному работодателю с просьбой сделать ревью. Когда я спросил, как он построил такую сложную CMS всего за 18 часов, он ответил, что воспользовался AirPair или каким-то другим сервисом, где ему помогли.

Я был в бешенстве. Сначала он сделал так, что я выполнил за него тестовое задание, теперь заплатил ($100 в час) кому-то на AirPair или где там еще, чтобы ему помогли написать его финальное задание, которое он тут же отправил работодателю.

Четвертый… пожарная тревога

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

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

Брайан получает работу

LinkedIn уведомил меня, что отныне Брайан — «Разработчик в компании Acme», и я поздравил его на новом месте, пожелав удачи.

Две недели Брайан хранил молчание, аж пока не настал его первый день на работе. И тут он начал задавать мне все возможные вопросы, которые были намного сложнее его собственного уровня (например, про веб-сокеты и как работает дата стриминг, и лучшие реализации на Rails).

Я послал ему несколько ссылок и спросил, над чем он сейчас работает. Оказалось, это была система уведомлений в реальном времени, которую ему задали разработать на новой работе. И он признал, что понятия не имеет, что делает.

Я был в ярости. Этот человек занял хорошую позицию для джуниора, будучи обманщиком. А что расстраивало меня еще больше, его зарплата была на $20 000 в год больше, чем моя.

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

Надо было что-то решать с Брайаном и быстро. Я решил игнорировать его в Slack и предоставить возможность самому решать свои проблемы. Если бы мой ментор поймал меня на подобном дерьме, он бы забанил меня в ту же секунду.

Брайан теряет работу

Прошел месяц, и я ничего не слышал от Брайана. Я поглядывал в его блог, где он еженедельно публиковал туториалы. Я надеялся, что он учится, но все эти статьи были по сути про копипаст-решениями из Stack Overflow, а объяснения также были сплагиачены. Это все был обман.

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

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

Через два дня уволенный Брайан вернулся в торговлю.

Чему учит эта история

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

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

Мораль такая: не будь как Брайан.

Оставить комментарий

Комментарии | 14

Поиск