…и детальный рассказ о том, что делало его таковым.
Совсем недавно в нашем блоге на Хабре мы выпускали дополненный перевод статьи о непревзойденном разработчике Мэлвине Кее. Сегодня мы решили поделиться переводом статьи о полной противоположности, антиподе Мэла. Если вы только ступаете на путь разработки или до сих пор не уверены в своих силах, рекомендуем внимательно прочитать эту небольшую историю.
Моя статья вполне может спровоцировать читателя на проявление следующих эмоций: гнев, разочарование и, вероятно, легкое чувство стыда (преимущественно испанского). Тем не менее, автор не ставит перед собой цели кого-либо разозлить или расстроить. Вовсе нет. Единственная задача истории — донести до вас пару полезных мыслей. Прочитайте статью целиком, чтобы понять, о чем я говорю.
Не будем терять время и перейдем непосредственно к рассказу.
Небольшое предисловие
Будучи профессиональным разработчиком программного обеспечения, я повидал немало программистов. Думаю, мне даже повезло работать с лучшими представителями этой благородной профессии. Однако и худшие не обошли меня стороной.
Из толпы безликих «так-себе-кодеров» и «недотеп-с-клавиатурой» Он выделялся как гадкий лебедь среди цыплят. Его подход к работе поражал воображение своим новаторством, а навык конструктивного решения проблем стремился к абсолютному нулю.
Излишне будет говорить, что это был наихудший специалист из всех, кого я знал.
Свой рассказ я посвящаю ему. Люди обязаны узнать о кривых методах, к которым он прибегал в своей работе. Кто-то обязан подвести итог всем ошибочным выводам и неверным решениям, принятым им за годы работы.
Я решил не называть реальное имя этого человека. Более того, даже его (её?) пол я предпочту сохранить в тайне. Но для удобства пускай будет Джо.
Прежде чем мы углубимся в детали, я хочу сделать еще одно заявление. Прошу вас не считать, будто эта история — сплошной поток жалоб. Всё совсем не так: это мой опыт, кое-где забавный или абсурдный, и я хочу поделиться им с вами. А если кому-то удастся извлечь из всего написанного уроки, я буду счастлив.
Без лишних слов, далее я просто перечислю качества, которые делали Джо таким отвратительным специалистом.
Он никогда не просил о помощи
«Лучший совет, который можно дать человеку в трудные времена, — никогда не бойся попросить о помощи». Деми Ловато.
Не думаю, что Джо был знаком с творчеством Деми Ловато. Честно говоря, я вообще не припомню, чтобы Джо когда-либо слушал музыку. Что касается просьб о помощи — не знаю, в чем была его проблема. Может, он просто боялся спросить. Или гордыня его была столь велика, что не перенесла бы таких унижений. Как и в случае с музыкой — никто и никогда не видел, чтобы Джо просил у кого-то помощи.
Сразу отвечу на ваше невысказанное возражение (может, Джо просто не хотел беспокоить других людей): на мой взгляд, хорошего разработчика отличает умение правильно оценивать ситуацию.
Необходимо заранее понять, сможете ли вы решить проблему самостоятельно. И отдавать себе отчет в том, что ваши навыки не безграничны. Кроме того, не стоит изобретать велосипеды: наверняка вашу проблему кто-то уже решил. Просто найдите это решение.
Как вы, наверное, догадались, Джо не был способен ни на одно упомянутое выше умозаключение. А если и был, то все равно поступал с точностью до наоборот. Единственная радость — он хотя бы не приставал ко мне с расспросами.
Для всего и вся он использовал готовые пакеты
Знаете, я целый день мог бы писать о том, как я не люблю всевозможные зависимости. Но, беря в расчет то, что время читателя — ценный ресурс, я потрачу его на нечто более приятное и интересное. Поймите меня правильно: все эти эмоции — лишь попытка донести до вас всю суть рабочего подхода Джо.
Итак, в тот день перед нами стояла простая и примитивная задача: отсортировать список пользователей по определенной дате.
Звучит как приключение на пять минут, не правда ли? Для меня всё было бы именно так!
Теперь представьте мое удивление, когда я приступил к код-ревью решения этой задачи от Джо. Чтобы проделать сортировку, которую JavaScript умеет делать самостоятельно, этот человек импортировал целую библиотеку.
Собравшись с силами, я спросил: «зачем?».
Ответ Джо — это истинный перл: «ну, я не хотел зря терять время». Занавес.
Да, я не специалист в области тайм-менеджмента. Однако у Джо часики явно тикали совершенно не в ту сторону. 😂
Любые задачи он решал с помощью JavaScript
Несомненно, эта черта в Джо мне «нравилась» больше всех остальных. Джо показал мне штуки, которые я без него никогда бы не увидел. Подчас я даже начинал сомневаться в том, что HTML и CSS в принципе существуют.
Желание открыть новые грани сумрачного гения Джо — вот, что заставляло меня читать его код. До сих пор я не знаю, как он в принципе справлялся со своими обязанностями. Возможно, тут замешан Stack Overflow, но это не точно. Джо все мог починить или доделать с помощью любимого JavaScript. JavaScript был его личным сортом синей изоленты.
Быть может, вам придет в голову защищать эту его привязанность. А как насчет того, что Джо решал на JavaScript даже проблемы, связанные с длиной текста в текстовых блоках? Согласитесь, тревожный звоночек. Но это лишь вершина айсберга. Другими примерами его экстравагантного обращения со здравым смыслом поделиться я, увы, не смогу. Я успешно подавил эти гнетущие воспоминания. 😔
Он не желал адаптироваться
В дикой природе либо адаптируешься к условиям, либо погибаешь. Но, как известно, разработчика обитают вовсе не в какой-нибудь глуши, а в комфортабельном корпоративном пространстве. Но в те славные времена мне иногда хотелось, чтобы всё обстояло по-другому.
Увы нам — Джо был прекрасно осведомлен об истинном порядке вещей. Он ни в какую не хотел адаптироваться и принимал любые изменения в штыки. Джо не нравилось ни учиться, ни слушать. Его любимым занятием были жалобы на новые технологии и подходы в работе.
Он напоминал мне первобытного человека, однажды взявшего в руки палку-копалку и ни за какие коврижки не желавшего поменять ее на компьютер.
Думаю, если бы он слушал музыку, то стал бы фанатом Limp Bizkit. Они как раз пели: «My way or the highway!». 🤘
Он ничего не тестировал
…И речь тут вовсе не о unit-тестах и не об интеграционных тестах. Забудьте всё, что вы узнали из методичек по QA — Джо плевать хотел даже на ручную проверку собственного кода в браузере.
Пожалуй, тут я чуть преувеличил. Джо не отказался от идеи тестирования в принципе. Он просто шел к ней своим путем.
В представлении Джо все пользователи обладали безусловным знанием о том, как реализована та или иная фича, и вводили любые данные в строгом соответствии с внутренней логикой программы.
Разумеется, шаг влево, шаг вправо — и такой код трещит по швам. Джо скрипит зубами и латает дыры любимой «изолентой». А когда лепить заплаты уже некуда, приходит другой, нормальный программист и переписывает всё с чистого листа.
Он никогда ни с кем не общался
Я считаю, что общение является ключевым фактором построения команды. По крайней мере, если вы нацелены на продуктивную совместную работу и высокую производительность.
Здесь Джо также придерживался совершенно другой концепции. Заключалась она в том, чтобы открывать рот только на общих собраниях. Во всё остальное время его челюсти оставались плотно сжатыми вплоть до следующего мит-апа. Возможно, только дома он вел себя как-то иначе.
Кроме шуток — Джо мог часами сидеть в кресле и скроллить ленты соцсетей вместо работы. Причин тому ровно две: он либо не мог справиться с задачей (и забивал на неё), либо решал всё тяп-ляп и потом не знал, чем себя занять.
Но не будем заострять внимание на личностных качествах программистов. В конце концов, Джо обладал еще одним (как минимум!) удивительным свойством, которое приводило меня в бешенство.
Он копипастил чужой код как ненормальный. Увы, достойной истории, которая раскрыла бы Джо с этой стороны, у меня нет. Но, уверен, суть вы уловили.
Он не пользовался линтерами и инструментами форматирования
Благодаря Джо я узнал одну важную вещь. Если кто-то хочет чего-то избежать, он приложит к этому все возможные усилия. И Джо — не исключение.
В части форматирования кода у нас были строгие правила. При каждом коммите линтер оценивал качество кода по некоторым критериям. И если хотя бы где-то находилось несоответствие, коммит не проходил.
Лично мне подобный подход к работе нравился. Я наивно думал, что благодаря этой практике общее качество кода в репозитории будет держаться на стабильно высоком уровне. Что это сократит количество технических долгов.
Но мне и в голову не приходило, что эту систему можно надурить.
Джо придумал, как делать коммиты в обход проверок. Для этого ему даже не пришлось ничего отключать. Хватило одной команды:
git push --force
Очень характерный пример, не правда ли? Если чего-то хочется (или не хочется) очень сильно, все средства хороши. Джо не постеснялся испробовать даже такой топорный метод — и в одночасье приковал к себе недоуменное внимание всех разработчиков команды.
Пара слов напоследок
Я мог бы припомнить и другие профессиональные «достоинства» Джо. Честно говоря, их нашлось бы еще немало. Однако цель моего рассказа вовсе не в этом.
В самом начале я писал: дочитайте до конца, чтобы вынести парочку уроков. Собственно, вот они:
- Раз уж даже Джо приняли на работу, то и вы без сомнения тоже сможете устроиться на такую же должность.
- Если вы хотите стать хорошим разработчиком, стремитесь как можно сильнее отличаться от Джо.
Собственно, вот и вся мораль. Нет ничего невозможного, если как следует захотеть. Главное — хотеть в правильном направлении.