>>5543851> паттернами
Возьмем средний портрет программиста: невзрачный, щуплый, нелюдимый ботан-очкарик, который проводит дни напролет выжигая кодом глаза. Если бы 100-200 лет назад быть таким - шанс выживания был бы невысок. В те времена (во все времена) интеллект был важен, но и другие качества были не менее важны для выживания: сила, ловкость, общительность, умение наладить контакты, поддерживать отношения, завладеть самкой.
Программисты в целом занудны, нелюдимы, необщительны. Они также часто высокомерны и даже пафосны (как блондинка гордится своей грудью, так программист гордится своими мозгами). Все это выливается в ботан-стайл-юмор, когда в шутках используется программерская терминология. Самый худший пример такого юмора: "Эй ты, сейчас я тебя быстро зарефакторю, а то и патчи поставлю". И это типа смешно. Этот юмор доступен только "избранным", которые знают, что такое рефакторинг и патчи. Высшая каста!
Программист - это человек, который целыми днями общается с машинами на машинном языке. Делает он это намного чаще, чем с людьми, поэтому он далеко не всегда может быть душой компании (вне программерской тусовки), и вообще склонен к отсутствующему взгляду и молчаливости ввиду того, что он в голове строит модель того, как решить поставленную задачу - даже когда готовится ко сну. Программисты предельно логичны, поэтому у них наблюдаются определенные сложности в выражении своих эмоций. Они просто не умеют говорить нелогичные фразы, а если вдруг случайно что-то такое вырвется, то эту оплошность тут же нужно будет исправить. Это чрезмерное внимание к собственной речи и постоянные паузы (для корректировки и переосмысления только что сказанного) делает из них отличных спорщиков, но весьма занудных собеседников.
Горе от ума: программисты настолько умны, что уже предвидели свою смерть и вообще всё тлен. Поэтому им тяжело радоваться жизни - тем более, что они живут в виртуальном мире.
Горе от тупости: работа программиста требует быть в меру тупым.
Такие диалоги - не редкость:
- Слушай, а почему у нас компонент так странно отрабатывает?
- Какой компонент?
- Ну этот, который репортит ошибки.
- Что значит странно отрабатывает?
- Ну ошибки через раз кидает.
- Какие ошибки?
- Не знаю, ещё не смотрел.
- Почему не смотрел? Надо посмотреть.
- Окей.
- А с чего ты взял, что он неправильно отрабатывает?
- Ну он через раз ошибки кидает.
- А ты спецификацию смотрел?
- Да.
- Где там написано, что компонент не может/не должен через раз кидать ошибки?
Подчеркну, что такой диалог - эталон правильного подхода программиста в так называемом troubleshooting.
Неудивительно, что когда человек целыми днями общается на языке машин, разговаривает с другими людьми, которые используют язык машин, при этом вставляя словечки из того же языка машин, то он мал-помалу становится машиной. Даже речь его теряет эмоциональный окрас, а глаза как будто стекленеют.
Сама суть программирования заключается в том, что ты должен оперировать сущностями, которых не видишь. Ты должен представлять, как оно всё работает и взаимодействует. Ты угадываешь и предсказываешь, основываясь на известных тебе данных, стараешься на все 100%, но всегда будет какая-нибудь мелочь. Мелочь - точка с запятой, лишний пробел, что угодно - и вся система будет поломана.
А теперь представьте себе Мерседес, который бы не завелся от отсутствия одного винтика. Малореально, да? А вот в программировании такие ситуации каждый день.
Я работал в паре с признанными мегамозгами, которые знали что делают. Несмотря на свою мозговитость, они встречали все те же проблемы, что и я. Откуда ни возьмись появляется ошибка. Ошибок всегда больше, чем решений и это всегда боль, а чтобы преодолевать боль, нужен зашкаливающий оптимизм. Пока дойдешь до решения, даже зная, как решать, ты все равно вымажешься в десятке-другом ошибок, оплошностей, нелепостей. И это далеко не всегда будет даже точка с запятой, или пробел. Это может быть системная нестыковка компонентов, когда оказывается, что нужно либо по-новой решать задачу, либо ставить костыли, чтобы как-то обойти эту досадную ошибку, которую предвидеть не смог.
Внимание к мелочам, друг! Вглядывайся в логи внимательно, дебажь код с душой. Неважно, насколько ты хороший человек, или сколько раз ты можешь подтянуться - если ты пропустил какую-то мелочь, вся система завалится. Боль. Приготовься к тому, что в 99% случаев ничего не будет работать.
Программисты - это, по-сути, психи. Только психически больному человеку будет интересно сидеть 24 часа в сутки перед экраном и заниматься перемещением единичек и ноликов, вместо того, чтобы, скажем, просто прогуляться весенним днем на солнышке и ни о чем не думать.
Хорошо, когда ты таким психом родился. Когда ты с детства аутсайдер с мозгами, когда тебе сам Бог велел идти в программисты, потому что там твои навыки изгоя-ботана, наряду с чугунной пятой точкой, пригодятся будь здоров. Сверстники будут играть в футбол и тискать девочек во дворах, а ты им отомстишь тем, что через 10 лет будешь программистом. Но, правда, будешь мстить так всю жизнь, в робких попытках доказать, что ты тоже умеешь жить...
Хорошо, когда ты родился изгоем, с тобой никто не дружит, и тебе ничего не остается, кроме как реализовать себя через занудные книги и компьютер - тогда сам Чёрт велел тебе идти в программисты.
Но как быть простому смертному? Простому, нормальному парню, который в гробу видал все эти технологии. Парню, который не торчит от новой операционки, или сраного гаджета. Парню, который, как и любой другой нормальный человек, иногда ошибается и не уделяет слишком много внимания каждой чертовой мелочи, из-за которой он мог бы пропустить всю жизнь вокруг. Как быть ему? Непсиху-неизгою, не занудному ботану, но мужу, который решил стать на путь программирования, то есть общения с машинами на их языке?
Ответ может быть несколько неожиданным, но суть в том, что парню этому, если он и правда хочет стать хорошим программистом, сначала придется стать психом. Стать психом сознательно, прошу заметить. В отличие от рожденных психами программистов, которые изначально имели все предпосылки для этой работы, нашему парню поначалу будет очень некомфортно делать первые шаги на чужой территории. На территории психов и гиков, компьютерных задротов, которые по технологиям прутся больше, чем по окружающему миру. Это как добровольно ампутировать себе руку, чтобы стать инвалидом и, таким образом, приобщиться к касте инвалидов.
Главный вопрос, который стоит задать себе нормальному человеку, который решил стать программистом, звучит примерно так: "Готов ли ты сознательно стать психом?"; и второй вопрос: "Готов ли ты измениться и стать более занудным и менее эмоциональным?". Потому что проверено не только на себе, но и на своих друзьях-программистах: чем больше человек занимается программированием, тем больше он становится задротом и занудой. То, что мы делаем - меняет нас. Об этом нужно помнить.
Пiчальна, чо.