7 грехов программиста: Гордыня

Пролог

Эта серия статей посвящена некоторым из моих учеников. Одна из “печалек” любого преподавателя — когда ученики не достигают в профессии высот, которых могли бы и просто обязаны (в глазах ментора) были достичь. Причины могут быть самыми, самыми разными — не все способны пройти огонь, воду и медные трубы — но это лишь оправдание, которое слабо помогает. И гораздо сложнее бороться не с разовыми трудностями, а с нашими тайными желаниями и слабостями, которые, как ржавчина потихоньку разъедают корпус корабля в плавании по водам профессии.

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

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

Начнем.

Medium образовательный: Гордыня. Мозаика алтарной части базилики Нотр-Дам-де-Фурвьер

Гордыня

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

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

Я все могу (сам)

Мы приходим в программирование слепыми и беспомощными. Наш первый “Hello World” не компилируется, сыпет кучей ошибок и делает что угодно, кроме того, что мы задумали. Проходит время. Мы учимся. Мы учимся писать более аккуратный код, наши программы, как глина в руках умелого мастера, — становятся все более и более податливыми и послушными. Решаемые задачи всё сложнее и интереснее, и мы уже в полном праве начинать гордиться своими успехами. Как и положено существам с глубоко аналитическим складом ума — мы видим общее в наших проектах и пытаемся это общее унифицировать. Так появляются велосипеды. Каждый начинающий PHP-программист писал собственную CMS или “фреймворк” (я — нет, был слишком ленив для этого). Эта CMS разрасталась, становилась все больше-больше-больше, несколько раз переписывалась с нуля, превращаясь из пары файликов в огромный луна-парк с покером и леди. Мы рекомендуем ее друзьям (которые говорят “круто”, а на самом деле даже не распаковывают zip-архив — в те смутные времена о git и github никто не слышал). Мы верим, что используя именно наше решение задачи можно решать быстрее, эффективнее и приятнее. Так проявляется гордыня.

Он учился на своих ошибках, но его опередили те, кто учился по книжкам (автор неизвестен)

Создать кардинально новый, успешный продукт могут единицы (я себя к ним не отношу). Выбирая путь “самостоятельного развития”, вы обрекаете себя на повторение пути, уже пройденного другими. Полезно ли это для саморазвития — да, несомненно. Но мир IT развивается по канонам Льюиса Кэрролла: нужно бежать со всех ног, чтобы только оставаться на месте, а чтобы куда-то попасть, надо бежать как минимум вдвое быстрее. Занимаясь чтением чужого кода (а еще лучше — наблюдая за развитием проекта) вы получаете квинтэссенцию чужих мыслей. Если при этом человек еще и делится своими мыслями, почему так сделано (допустим в Github Issues — это вообще феноменально). В JS community превосходными примерами таких людей для меня являются Dan Abramov (особенно его твиттер) и André Staltz (твиттер) — их рассуждения для меня становятся превосходной пищей для ума.

N.B.: за это я, к примеру, люблю коллективные аккаунты, типа @jsunderhood — вам подносят на блюдечке с голубой каемочкой каждый раз человека со своим мнением, своими историями и своим опытом. Если этот человек еще и неплохой рассказчик (рассказчик в формате 140 символов — o tempora, o mores!) — то вообще идеально. И если вы не согласны с тем, что вам рассказывают — помните, у некоторых людей настолько узкий кругозор, что его называют точкой зрения.

А еще любовь к написанию всего самостоятельно очень любит пожирать время. Я давно пришел к выводу, что лучший код — это написанный не мной код и (признаюсь, иногда с внутренним отвращением) адаптирую некоторые вещи, убирая свою реализацию потоков, и вставляя RxJS, выкидывая шаблонизатор, написанный мной 6 лет назад и вставляя handlebars — все более и более концентрируясь на новых проблемах, которые не решаются стандартными библиотеками.

Бритва Оккама — лучшее оружие против такого проявления гордыни. Нещадно режьте свои велосипеды и будьте аккуратны создавая что-то новое, для решения уже существующей задачи. Возможно, каждый из нас грезит стать автором очередного Redux или Leaflet (Владимир для меня всегда был примером “гуру” коммьюнити, сделавшего восхитительный проект путем титанического труда), но чаще всего конец немного предсказуем:

(с) http://xkcd.com/927/

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

Изоляция

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

Этот человек не ходит на наши местные конференции и встречи, мотивируя тем, что ничего нового и толкового там не расскажут — все можно и так прочитать в интернете — и, как следствие, всю конференцию можно сократить до одного gist’а с 10 ссылками — и поэтому все это просто пустая трата времени. Формально, он прав. В нашем провинциальном Харькове не бывает докладчиков уровня React Europe или даже конференций проводимых Яндексом, а темы зачастую совпадают с хайпом, вокруг нас. Если на встрече мне интересен один доклад — это большой успех — чаще всего выношу одну-две интересные мысли “на подумать” и пару ключевых слов на погуглить. А вот в кулуарах начинается магия.

FDConf#15, Минск, Беларусь. Vladimir Agafonkin и я в кулуарах :)

Проявив минимум коммуникативных навыков можно и нужно вступить в дискуссию или обсуждение любой темы, которая Вас заинтересовала. Лично меня пару раз удивляли своими решениями люди, которых моя внутренняя боги…гордыня мысленно наделяет ярлыком “да он же даже не сеньйор, что он мне может рассказать”. А пару раз я ощущал себя совершенно полным идиотом, признавая что все во что я верил — неправда или не совсем правда. Можно красиво назвать это Ньютоном, увидевшим подтверждение теории относительности, но я предпочитаю называть это выщипыванием перьев у своего внутреннего павлина.

Да, возможно вы на конференции будете “самым умным”. Поделитесь своими знаниями с менее опытными коллегами, опуститесь до их уровня и попытайтесь объяснить, что они не правы. Меня всегда поражало молчание людей, которые точно не являются интровертами, и которые приходят домой после встречи и ведут себя так:

(c) http://xkcd.com/386

Подобная изоляция от сообщества, которое мы имеем и попытка приобщиться вместо этого к большим умным людям, которые “где-то” там портят людей. Я видел, как потом подобные личности начинают раздражаться (или огорчаться, в зависимости от характера) от “тупости людей вокруг” и отправляются в долгий поход за лучшей жизнью

Я эксперт

Этой разновидностью гордыни любят болеть тим лиды и прочие люди, которые в силу тех или иных причин обрели полноту власти. Фактически, у них появилось новое, почти безотказно работающее заклинание “Я так сказал”. С его помощью можно эффективно защищаться от критики, даже не задумываясь конструктивна она или нет. Каждая претензия воспринимается как посягательство на полноту власти и попросту игнорируется.

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

Вам показалось, что предыдущий абзац был немного резок? Вам не показалось :) Считайте это моей детской травмой, ведь этим джуниором был именно я. И тогда мне было печально осознавать, что убытки, которые понесла компания превышали тогда пару моих годовых доходов. Зато это стало для меня уроком и я всегда, перед тем как сказать подчиненным “делайте так, потому что я сказал” прошу свою гордыню подождать в сторонке и пытаюсь реально, безэмоционально взвесить те аргументы, которые они излагают

N.B.: Это не означает, что никогда нельзя прибегать к позиции “sudo делай так как я сказал”. Иногда коллега, ставящий под сомнение Ваши идеи, просто не обладает той информацией, которой обладаете Вы, иногда Вы просто не можете с ним ею поделиться — да и вообще, я могу придумать тысячи вариантов, когда приходится заставлять. Просто помните, что если ваши исходные предпосылки неверны — вы можете завести не только себя, но и свою команду в страшный темный лес. Вы готовы за это отвечать?

Второе проявление “Я эксперт” в компании — это незаменимость. Когда в силу ряда причин Вас действительно некем заменить — это расслабляет. Я сам пару раз становился более наглым и вел себя вот так:

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

Резюме

Гордыня — один их самых распространенных грехов программиста. Мы все любим считать себя уникальными, с пиететом относиться к своим достижениям и не воспринимать как “ачивки” успехи коллег. Но никогда не забывайте, что павлиний хвост при всей своей красоте закрывает обзор — и вы никогда не узнаете, что скрывается за ним: возможности которые вы упускаете, новые знакомства в личной или профессиональной сфере или даже коварного подчиненного, пытающегося вас подсидеть. Поэтому раз мы уже начали с библейских мотивов, давайте ими и закончим — любите себя, но не забывайте любить и ближнего своего.

Следующая статья

Like what you read? Give Illya Klymov a round of applause.

From a quick cheer to a standing ovation, clap to show how much you enjoyed this story.