История про плохого программиста, или Как не надо идти в IT
Быть айтишником стало настолько круто, что сегодня каждый первый подумывает записаться на курсы и сменить профессию. Но стать конкурентным кандидатом на пост джуниора, закончив коротенький буткемп, нельзя. Для людей, которые не хотят трудиться и вникать, но жаждут получить оффер, есть только один путь — обман. С одним из таких удальцов однажды столкнулся разработчик Джеймс Джелинек. Недоумение, разочарование и злость, испытанные в процессе общения с этим человеком, Джеймс обратил в поучительную историю о том, как не надо входить в 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
бедняга, продержался бы полгода, пошел бы в pm-ы))
Какой завистливый «наставник».
Если бы не имя Брайан, подумал бы что человек из бывшего СНГ 🙂
О чем пост, то? Жалобы слюни и т.д. У каждого свой путь, и у каждого, из нас, таких историй с горой и маленькой тележкой будет.
Ниочем
Жир ))) Отличный материал! Поднял настроение под кофеек =)
Вам редакторы не нужны?)
«30-ти с чем-то летнего джентльмена» — нельзя же так жестоко.
читай оригиналы 🙂
Статьи, которые переводит аин, обычно облетают весь интернет неделю до публикации. Так что, читайте медиум, топовые зарубежные рассылки, реддит 🙂
В оригинале качественнее, интереснее и полезно для изучения языка.
Спасибо за совет, но это профессиональная боль)
С «прохфесиональностью» тут уже нечего не поделаешь 🙂
Если есть читатель на такой контент, то будут и такие же журналисты.
«…с удовольствием читают более полутора миллионов человек.»
Вы же тоже как-то здесь оказались)
да, я просматриваю аин раз в неделю и комментирую. Большую часть статей уже читала в оригинале ( я занимаюсь контентом для tech, iOS, mobile, startup). Читаю тут колонки друзей: Руслана Назаренка, статьи про стартап своего парня (Ecoisme) и бомбящие пуканы 🙂
Стартап у вас действительно классный и полезный. Успехов!
Новости Гуся — http://goosetoday.com/
друг Брайана (автор) еще больший мудак, чем сам Брайан
Самоучкам сложно, особенно в поисках работы. Хороший способ найти занятость это порталы на подобии этого https://anywhere.epam.com/ Здесь много вакансий, только нужно знать английский язык. Если вы разбираетесь в той или иной сфере классно, работу найдете быстро.