[Из песочницы] Клуб анонимных программистов, или почему только псих может стать настоящим программистом
Конечно, вместо того, чтобы тратить время на написание этого поста, я мог бы изучать программирование. Но здесь ведь собрались не ботаны-зануды, чтоб на ночь глядя заниматься всякой компьютерной чепухой, верно? Намного интереснее разобраться — почему одни люди «рождены» быть программистами, а другие страдают и плачут по ночам, но у них мало что выходит. Сначала давайте разберемся в том, кто же такой программист.Возьмем средний портрет программиста: невзрачный, щуплый, нелюдимый ботан-очкарик, который дни напролет проводит выжигая кодом глаза. Если бы 100–200 лет назад быть таким — шанс выживания был бы невысок. В те времена (во все времена) интеллект был важен, но и другие качества были не менее важны для выживания: сила, ловкость, общительность, умение наладить контакты, поддерживать отношения, завладеть самкой.
Изгою в обществе жилось несладко. Связей мало, общаться никто не хочет, размножаться тоже. Защитить семью труднее, чем обычному, туповатому, но смекливому бандюгану. Если изгой был успешным ботаном, у него был шанс снискать себе уважение в обществе (как-то пучеглазый Эйнштейн с языком наперевес), и ему за его заслуги прощали его чудаковатость. И тем не менее, аутсайдерам жилось несладко.
Сейчас же случилось невероятное. Чудаковатые, нелюдимые, занудные и скушные, но мозговитые ботаны научились с помощью программирования монетизировать свои мозги. Причем, даже лучше, чем врачи, или юристы, у которых мозги шурупают не хуже, а то и лучше. Программисты купаются в лучах славы, как когда-то это делали шахтеры при СССР. Программисты стали негласной элитой общества, как единственная альтернатива бандитизму или предпринимательству, которая позволяет хорошо жить, не нарушая закон и не рискуя жизнью. Двадцатый век удивил мир всеобщей феминизацией и женской эмансипацией. Двадцать первый век же удивил всех тем, что занудные аутсайдеры наконец получили шанс отыграться за столетия унижений и сжиганий на кострах (пожалуй, их сжигали за занудство). Настроения восставших из пепла цивилизации ботанов очень хорошо передают подобные видеоролики:
[embedded content]
Суть такова: зануды-программисты бесятся с жиру и счастья, что им нравится их работа и хотят похвастаться этим на весь мир, поэтому снимают музыкальные видео. Мол, мы, программисты, могём не только код, но и музыку, и видео штамповать. И, мол, вообще нет для нас преград, эдаких баловней судьбы. Интересно, почему врачи, которые учатся по 10 лет, и обладают намного большими знаниями и практической пользой для человечества, не так кичатся своей работой?
Выше я говорил о том, что программисты в целом занудны, нелюдимы, необщительны. Но я совсем забыл сказать, что они также часто высокомерны и даже пафосны (как блондинка гордится своей грудью, так программист гордится своими мозгами). Все это выливается в ботан-стайл-юмор, когда в шутках используется программерская терминология. Самый худший пример такого юмора: «Эй ты, сейчас я тебя быстро зарефакторю, а будешь вы**бываться — еще и патчи поставлю». И это типа смешно. Этот юмор доступен только «избранным», которые знают, что такое рефакторинг и патчи. Высшая каста!
Также, среди программистов распространены случаи расизма (aka IT-racism). Тестировщики, почему-то, для программистов считаются людьми низшего сорта, даже если сами эти программисты в свое время начинали тестировщиками. К тестировщику-автоматизатору будет, конечно, чуть более благосклонное отношение, но, по сути, у него на всю жизнь будет клеймо «тестера», пока он каким-то чудом не выберется в высшую касту, или не уйдет из IT. Отношения программист-тестировщик — это в лучшем случае отношения рыцарь-оруженосец. Время от времени очередной программист горделиво вспомнит о том, что эта работа (программирование) для избранных (и он будет прав), потому что в ней требуется высокий уровень абстрактного мышления. Разумеется, программисты очень умные, поэтому у них якобы больше прав вести кухонные дебаты о том, как правильно управлять государством. Так что в споре программист VS уборщица по дефолту побеждает сами знаете кто.
Всё вышеперечисленное касалось личностных качеств программиста. Теперь же перейдем к его работе. Программист — это человек, который целыми днями общается с машинами на машинном языке. Делает он это намного чаще, чем с людьми, поэтому он далеко не всегда может быть душой компании (вне программерской тусовки), и вообще склонен к отсутствующему взгляду и молчаливости ввиду того, что он в голове строит модель того, как решить поставленную задачу — даже когда готовится ко сну. Программисты предельно логичны, поэтому у них наблюдаются определенные сложности в выражении своих эмоций. Они просто не умеют говорить нелогичные фразы, а если вдруг случайно что-то такое вырвется, то эту оплошность тут же нужно будет исправить. Это чрезмерное внимание к собственной речи и постоянные паузы (для корректировки и переосмысления только что сказанного) делает из них отличных спорщиков, но весьма занудных собеседников.
Горе от ума: программисты настолько умны, что уже предвидели свою смерть и вообще всё тлен. Поэтому им тяжело радоваться жизни — тем более, что они живут в виртуальном мире.
Горе от тупости: работа программиста требует быть в меру тупым.Такие диалоги — не редкость: — Слушай, а почему у нас компонент так странно отрабатывает? — Какой компонент? — Ну этот, который репортит ошибки.— Что значит странно отрабатывает? — Ну ошибки через раз кидает.— Какие ошибки? — Не знаю, ещё не смотрел.— Почему не смотрел? Надо посмотреть.— Окей.— А с чего ты взял, что он неправильно отрабатывает? — Ну он через раз ошибки кидает.— А ты спецификацию смотрел? — Да.— Где там написано, что компонент не может/не должен через раз кидать ошибки?
Подчеркну, что такой диалог — эталон правильного подхода программиста в так называемом troubleshooting.Неудивительно, что когда человек целыми днями общается на языке машин, разговаривает с другими людьми, которые используют язык машин, при этом вставляя словечки из того же языка машин, то он мал-помалу становится машиной. Даже речь его теряет эмоциональный окрас, а глаза как будто стекленеют.
Сама суть программирования заключается в том, что ты должен оперировать сущностями, которых не видишь. Ты должен представлять, как оно всё работает и взаимодействует. Ты угадываешь и предсказываешь, основываясь на известных тебе данных, стараешься на все 100%, но всегда будет какая-нибудь мелочь. Мелочь — точка с запятой, лишний пробел, что угодно — и вся система будет поломана.
А теперь представьте себе Мерседес, который бы не завелся от отсутствия одного винтика. Малореально, да? А вот в программировании такие ситуации каждый день.О том, что сегодня программист, кроме самого языка программирования, должен знать и разбираться в нескольких фреймворках, в базах данных, протоколах, в разных технологиях и представлять себе, как оно все работает и взаимодействует вместе — я даже и говорить не буду. Это будет большим сюрпризом для тех, кто в универе изучает bubble sorting, тогда как на деле он его ни разу в жизни не использует. Зато будет цениться умение быстро разобраться в очередном фреймворке. Кстати о тулзах и фреймворках — они, как и всё в этом мире, живут и развиваются, поэтому часто бывает так, что освоенный фреймворк через год-два полностью теряет актуальность, потому как в новой версии кардинально другой подход. Но тебя ведь хлебом не корми, дай поюзать новую версию любимой тулзы, верно?
Я работал в паре с признанными мегамозгами, которые знали что делают. Несмотря на свою мозговитость, они встречали все те же проблемы, что и я. Откуда ни возьмись появляется ошибка. Ошибок всегда больше, чем решений и это всегда боль, а чтобы преодолевать боль, нужен зашкаливающий оптимизм. Пока дойдешь до решения, даже зная, как решать, ты все равно вымажешься в десятке другом ошибок, оплошностей, нелепостей. И это далеко не всегда будет даже точка с запятой, или пробел. Это может быть системная нестыковка компонентов, когда оказывается, что нужно либо по-новой решать задачу, либо ставить костыли, чтобы как-то обойти эту досадную ошибку, которую предвидеть не смог.
Внимание к мелочам, друг! Вглядывайся в логи внимательно, дебажь с душой. Неважно, насколько ты хороший человек, или сколько раз ты можешь подтянуться — если ты пропустил какую-то мелочь, вся система завалится. Боль. Приготовься к тому, что в 99% случаев ничего не будет работать.
Программисты — это, по-сути, психи. Только психически больному человеку будет интересно сидеть 24 часа в сутки перед экраном и заниматься перемещением единичек и ноликов, вместо того, чтобы, скажем, просто прогуляться весенним днем на солнышке и ни о чем не думать.
Хорошо, когда ты таким психом родился. Когда ты с детства аутсайдер с мозгами, когда тебе сам Бог велел идти в программисты, потому что там твои навыки изгоя-ботана, наряду с чугунной пятой точкой, пригодятся будь здоров. Сверстники будут играть в футбол и тискать девочек во дворах, а ты им отомстишь тем, что через 10 лет будешь программистом. Но, правда, будешь мстить так всю жизнь, в робких попытках доказать, что ты тоже умеешь жить (как это делали ребята из Ciklum’а). Только посмотрите на этих упитанных нахалов, «бомбочкой» прыгающих в бассейн (1:38):
[embedded content]
Что в этой тушке такого великолепного, друзья? Мозги и ПГМ (Программизм Головного Мозга). Они кичатся своей болезнью, как редкий шахтер кичится угольной пылью у себя в легких (есть и такие люди).
Справедливости ради, должен сказать, что в США программисты хоть и жируют, но не настолько сильно, как у нас. У нас в Украине программисты — это высшая каста всего лишь по той причине, что заморским чертям охота делать программы с помощью наших хлопцев (аутстаффинг, то бишь). Если бы заморские черти решили, что им могут пригодиться наши врачи, я вас уверяю, блатными были бы и врачи. И все остальные баловни судьбы, которые бы выехали на разнице зарплат в США и Украине. Ясен пень, в США нету такого запредельно-кромешного разрыва между грузчиком Джоном и программистом Биллом, поэтому там и программисты не настолько борзые.
Хорошо, когда ты родился изгоем, с тобой никто не дружит, и тебе ничего не остается, кроме как реализовать себя через занудные книги и компьютер — тогда сам Чёрт велел тебе идти в программисты.
Но как быть простому смертному? Простому, нормальному парню, который в гробу видал все эти технологии. Парню, который не торчит от новой операционки, или сраного гаджета. Парню, который, как и любой другой нормальный человек, иногда ошибается и не уделяет слишком много внимания каждой чертовой мелочи, из-за которой он мог бы пропустить всю жизнь вокруг. Как быть ему? Непсиху-неизгою, не занудному ботану, но мужу, который решил стать на путь программирования, то есть общения с машинами на их языке?
Ответ может быть несколько неожиданным, но суть в том, что парню этому, если он и правда хочет стать хорошим программистом, сначала придется стать психом. Стать психом сознательно, прошу заметить. В отличие от рожденных психами программистов, которые изначально имели все предпосылки для этой работы, нашему парню поначалу будет очень некомфортно делать первые шаги на чужой территории. На территории психов и гиков, компьютерных задротов, которые по технологиям прутся больше, чем по окружающему миру. Это как добровольно ампутировать себе руку, чтобы стать инвалидом и, таким образом, приобщиться к касте инвалидов.
Главный вопрос, который стоит задать себе нормальному человеку, который решил стать программистом, звучит примерно так: «Готов ли ты сознательно стать психом?»; и второй вопрос: «Готов ли ты измениться и стать более занудным и менее эмоциональным?». Потому что проверено не только на себе, но и на своих друзьях-программистах: чем больше человек занимается программированием, тем больше он становится задротом и занудой. То, что мы делаем — меняет нас. Об этом нужно помнить.
А я, тем временем, продолжу свой путь, проглатывая горькие и занудные книги по программированию, в слепой надежде, что мне удастся сохранить себя и стать таки настоящим программистом. И я не один — нас много. Люди, которых жизнь заставила быть программистами, или попросту программисты поневоле. У нас даже есть свой «Клуб анонимных программистов», где мы изливаем душу, как изливают её друг другу члены «Клуба анонимных алкоголиков».
Итого: чтобы стать настоящим программистом, нужно стать оптимистичным психом.
P.S. Да, я знаю, что «ты сначала добейся, а потом критикуй.P.S.2 Да, я знаю, что есть также и веселые программисты, программисты альфа-самцы, душки компании.P.S.3 Да, я знаю, что есть программисты-качки.P.S.4 О себе рассказать не могу, потому как мои коллеги читают Хабр, а я хочу быть инкогнито.