Я старый. При этом я в ладу с собой. Я не лежу ночью, беспокоясь о своей старости. Но прекрасно понимаю, что я определённо стар — по крайней мере в смысле программирования. Большинство непрограммистов посмеялись бы над мыслью о старости. Во многих сферах в середине пятого десятка лет означает, быть на вершине профессиональных навыков. Но в разработке программного обеспечения любой человек старше 40 часто рассматривается с некоторым подозрением. Люди старше 50 часто выпадают из пула резюме. Человеку за 60 хорошо иметь очень прочную стратегию выхода на пенсию. Но это статья не об определении «старости» или о предвзятости к старикам. Эта статья о том, что «более опытным» разработчикам часто труднее приспособиться к конкретной работе, задаче или среде.
Это не просто предубеждение. Это реальность. Я испытал это на себе. Я видел это у других. Я почувствовал это в своей душе. Не знаю, поможет ли эта статья кому-нибудь. Как-нибудь. Но чувствую себя обязанным назвать некоторые причины, по которым старикам вроде меня становится всё труднее просто вписаться в работу, не говоря уже о том, чтобы преуспеть в ней.
Я не утверждаю, что говорю за всех стариков. И я не говорю, что нет некоторых стареющих разработчиков, которые вполне процветают в своей среде. Следующие наблюдения — мои и только мои. Ваш опыт может быть иным.
Усталость от политики
Когда я был моложе, я был доволен всеми стандартными корпоративными политическими играми. Чёрт возьми, иногда я даже наслаждался ими. Но сейчас… Ну, скажем так, я стал полярной противоположностью политического игрока — и моё нежелание «подыгрывать» часто вызывает ощутимые проблемы в работе.
Раньше я работал в управлении. В какой-то момент у меня было 60 разрабов, организованных в 6 команд, которые всё докладывали мне. В то время я был гораздо больше занят тем, чтобы излагать своё словоблудие «правильно». Я гораздо больше был склонен к тому, чтобы часами писать отчёты (о которых я знал, что они не будут прочитаны) и ставить галочки в окошках для аудита (о которых я знал, что они никого не заботят).
Около 5 лет назад я сознательно ушел из руководства. Я хотел снова стать просто кодером. Как можно дальше уйти от политики, позволив себе передозировку кода. Но на моём пути к просто кодеру случилась забавная вещь. Политика, похоже, последовала за мной.
В хорошие дни я только и делал, что пялился на IDE. Но слишком много дней я понимаю: от меня ожидают, что я расскажу руководителям именно то, что они хотят услышать. Слишком много дней я все ещё погружён в заседания и бесконечные административные подробности. Но слишком часто приходится говорить руководству то, что оно хочет услышать.
Поскольку я зациклился на этом, у вас может сложиться впечатление, что я один из тех капризных стариков. Из тех парней, что жалуются на любое решение, сколь бы тривиально оно ни было. Однако я не думаю, что такой ярлык описывает меня вообще.
Я совершенно счастлив разговаривать с «бизнесом», «клиентами» или «заинтересованными сторонами». И я обычно могу разговаривать с ними так, чтобы избежать техноболтовни и никого не унижать. Люди могут спрашивать меня о всяких сомнительных результатах — и я спокойно объясняю им, дилетантам, какие они могут иметь неприятные непредвиденные последствия в будущем. В течение нескольких недель или даже месяцев эти взаимодействия не доставляют мне никаких проблем. Затем случается это…
Это — тот момент, когда кто-то хочет, чтобы вы сделали что-то в коде, буквально совершенно бессмысленное.
Но люди не просто говорят тебе сделать это. Они горячо спрашивают твоего мнения. Они настаивают на том, чтобы вы чувствовали, что внесли свой вклад, даже когда ваш единственный логичный вклад — сказать, что вся эта идея — полное сумасшествие. Но вы не можете сказать им так. На самом деле, едва ли вы сможете сказать им что-либо вообще — если только это не подкрепляет их первоначальную просьбу. Так происходит потому, что люди продолжают запрашивать ваши отзывы. Но они не хотят вашего отзыва. Они хотят, чтобы вы кивнули и сделали всё, что они просят.
Когда я был моложе, мне было гораздо легче проглотить свои возражения в подобных случаях. А сейчас? Мне легко избежать оскорблений или конфронтации, но нелегко сформулировать обратную связь в робких выражениях, чтобы воротилы обманули себя и полагали, что я поддерживаю их идею.
Я ни на кого не кричу. Не использую непрофессиональную лексику. Но вам лучше поверить: если вы спросите меня, что я думаю об идее, которая действительно эпически глупа, я скажу совершенно чётко, что это ужасная идея. Удивительно, как часто эта простая склонность вновь и вновь вызывает неприятности в работе.
Неприятие текучки
С каждым годом, проскальзывающим в зеркале заднего вида, моё терпение к безжалостной текучке технологий немного истончается. Наверное, я выражаюсь, как динозавр. Но я не жалуюсь на обучение или внедрение новых технологий. Изучение новых технологий обычно увлекательно для меня, как и почти для любого программиста. Я жалуюсь на (как себе это представляю) ускоряющуюся тенденцию выбрасывать устоявшиеся технологии и погружаться головой в новую — часто без всякой причины, кроме фактов, что кому-то она по-настоящему нравится или кто-то по-настоящему не любит старую. Если вы читали другие мои статьи, то могли заметить частое употребление термина “фанат”.
Если вы рекламируете какую-то конкретную технологию, но не можете привести убедительный эмпирический аргумент в её пользу, вы, вероятно, «фанат». Если вы очерняете какие-то другие технологии, но основной аргумент против — то, что они старые или глупые, то вы, наверное, «фанат». Фанаты могут показаться безобидными в нашем направлении работы. Но они могут причинить реальный ущерб.
Если фанат — какой-нибудь малоуважаемый парень прямо из колледжа, его иррациональные страсти, скорее всего, не вызовут никаких реальных проблем. Но фанаты могут быть где угодно. Ваш менеджер может быть фанатом. Архитектор башни из слоновой кости, который дружит с CIO, может быть фанатом. Парень, который работает в компании последние 20 лет, может быть фанатом. Чёрт возьми, даже CEO может быть фанатом!
И как только фанат решит, что он ненавидит технологию, с которой вы работаете (технологию, в которую вы, вероятно, вложили тысячи часов), и как только его слова достигнут ушей тех, кто принимает решения, только вопросом времени становится факт, когда вы всё перепишете или когда станете искать новую работу.
Эта текучка относится не только к технологиям верхнего уровня. Она применима, например, к пакетам NPM. Или к руководствам по стилю. Или… к любому тривиальному аспекту нашей работы. И как только мнение в вашем отделе «эволюционирует», вы обнаружите, что вам придётся радикально изменить подход к выполнению работы или искать новую работу.
Хотите знать, почему нечто столь банальное, как табуляция и пробелы, может и по сей день приводить людей в ярость? Это происходит потому, что среди вас есть люди, которые программировали, используя табуляцию или пробел многие годы, и это никогда не было проблемой. И вот однажды кто-то заходит и говорит: «О! Не могу поверить, что вы всё ещё пользуетесь табуляцией/пробелом!» Довольно скоро вы будете вынуждены следовать за толпой в любом тривиальном решении, которое было принято для вас. Или будете искать новую работу.
Пожалуйста, не думайте, что я не хочу изучать новые технологии (или техники). Погружаясь во что-то, что обещает решить проблему, я взволнован так же, как и программист рядом со мной. Но я не в восторге от переключения с языков/фреймворков/инструментов и т. д. только потому, что старый способ — якобы «тупооой», а на замену, предположительно, придёт новое навороченное, блестящее решение.
Цинизм опыта
Я могу вспомнить много случаев, когда в начале карьеры моя наивность была почти… внутренним активом. Видите ли, иногда я был слишком глуп, чтобы осознать, что меня используют. Но в процессе «использования» я также приобрёл ценный опыт. Или произвёл впечатление на людей, которые видели, как я ломал свой хребет, чтобы всё получилось.
В мои 20 лет любое малейшее предположение о необходимости дополнительной работы привело бы к тому, что я провёл бы 24-часовой марафон кодирования. Или работал бы в выходные. Любое предположение, что мы используем какую-либо (контрпродуктивную и плохо поддерживаемую) технологию, привело бы меня к тому, что я нырял бы с головой в процесс изучения и внедрения этой технологии. Любой намёк на опционы на акции или будущие IPO заставил бы меня задуматься о том, что я работаю на следующий Google и смогу работать на себя почти до смерти — потому что… я буду богат!
А сегодня? Ну, давайте просто скажем, что я стал более взыскательным к своими усилиям.
Я буду (и часто) работать сверхурочно. Но, как только почувствую, что моей готовностью работать сверхурочно злоупотребляют, мы немного поболтаем. И если наша команда кого-то потеряет и «решение» компании заключается в том, чтобы просто распределить работу по остальным сотрудникам — сохраняя при этом все сроки выполнения, то гарантирую — я очень чётко скажу всем, что не буду полностью брать на себя чужую рабочую нагрузку.
Я уже не в восторге от пустых обещаний большинства компаний (особенно стартапов). Если пакет компенсации включает в себя некоторые опционы на акции, то это здорово. Но если вы ожидаете, что я буду рассматривать эти варианты как основной компонент, то я предлагаю вам начать набор в местных колледжах. У меня есть ипотеки (здесь множественное число). У меня есть счета и обязательства. И даже если мне понравится ваша компания, она не понравится мне настолько, чтобы я был готов отказаться от зарплаты по рыночному курсу.
Вот ещё одна ситуация, где мой опыт (цинизм) может иногда создавать мне проблемы:
Как только вы приобретёте репутацию в организации как опытный программист, который действительно может сделать что-то, вы можете внезапно обнаружить, что у вас на руках множество просьб о неофициальной работе. Я говорю о тех ситуациях, когда кто-то за пределами конвейера вашей команды подходит и начинает говорить что-то вроде: «Насколько трудно сделать маленькое изменение в этом приложении??».
Двадцатилетний Адам был бы в восторге от таких просьб. Несколько коротких встреч, и я мог бы работать по ночам и выходным, просто чтобы реализовать какой-нибудь партизанский проект.
Иногда я делал это, потому что был в восторге от технологии. В других случаях я делал это потому, что хотел угодить. Иногда у меня даже были неприятности из-за этого. Но я почти всегда обнаруживал, что повышение моей репутации в компании стоит любого кратковременного удара.
Сегодня я редко балую людей, обратившихся ко мне с такими просьбами. Вы знаете их. Это люди, которые считают, что они могут полностью разрушить конвейер разработки, подлизавшись к одному из программистов напрямую. У меня были руководители, которые пытались сделать это со мной (они, тем не менее, были полностью вне моей субординации). У меня были молодые леди, которые пытались сделать это со мной, сидя рядом со мной ближе естественной дистанции и улыбаясь мне больше, чем улыбается кто-то искренний.
Сегодня моя реакция на этих людей всегда одна и та же. Я вежливо их выслушиваю. Даю любую немедленную обратную связь, которая может помочь правильно направить их. Но, как только они хотят подтолкнуть меня к тому, чтобы я выполнял работу — вне нормального конвейера разработки, — я вежливо, но твёрдо отказываюсь.
Это может звучать как «корректный» способ справиться с подобной ситуацией. Но я заметил, что, как только я говорю кому-то «нет», это имеет тенденцию сопровождаться всевозможными долгосрочными побочными эффектами. Менеджеры говорили мне в обзорах эффективности, что со мной «трудно работать». Когда я пытаюсь выяснить, откуда взялась эта оценка, оказывается, что она исходит от тех самых людей, которые пытались заставить меня нарушить нормальный ход вещей.
На самом деле, удивительно видеть ошеломлённые взгляды на лицах каждый раз, когда я говорю профессиональным и бесстрастным тоном: «Нет. Я не буду этого делать», или «Вам придётся поговорить об этом с менеджером проекта», или «Вам нужно будет обсудить этот приоритет с клиентом напрямую».
Для некоторых людей не имеет значения, насколько вы профессиональны или справедливы. Они всё равно затаят злобу, если посметь отказать им.
Небольшая терпимость к двусмысленности
Может быть, это не очень беспокоит стариков. Может быть, это беспокоит только меня. Я не знаю. Но я знаю, что за последние два с лишним десятилетия корпоративной работы моё терпение к вопиющему корпоративному двуличию неуклонно иссякало.
Для ясности: я понимаю, что у корпораций есть общеупотребительные обороты. Меня не беспокоит, когда кто-то говорит, что мы должны «прикоснуться к базе в оффлайне» [прим.перев. — touch base offline — восстановить контакт с кем-то на короткое время через реальную встречу]. А «мыслить нестандартно» — избитая (и почти бессмысленная) фраза, но, когда кто-то произносит эти слова, я догадываюсь, что они пытаются передать.
Но если вы скажете мне, что нам нужно сделать некоторые «правильные размеры» [прим. перев. — right-sizing — сокращение размеров компании за счёт сокращения штата], меня немного затошнит. Если вы продолжаете проповедовать мне о том, что надо быть «разрушителем» [прим. перев. — быть человеком, который идёт против системы], я знаю, что ваша идея «разрушения» заключается в том, чтобы я работал по ночам и в выходные, чтобы реализовать ваше видение приложения.
Если вы просите меня принять «мероприятие», это тонкий способ попытаться дать мне новую работу без учёта текущих приоритетов проекта. Я мог бы продолжать, но вы уже поняли суть. Я действительно возненавидел эту непрекращающуюся потребность поддерживать неприятные идеи в какой-то расплывчатой форме «новой речи».
Это расстройство особенно бросается в глаза, когда кто-то хочет, чтобы я согласился с предложением — и это предложение не имеет никаких оправданий. Я могу довольно много говорить о большинстве потенциальных идей. Но если идея просто лишена смысла… Я так и скажу. И вот тут-то люди начинают говорить обо мне, как о каком-то ворчливом старом медведе, которого невозможно переубедить.
Знание своей ценности
Как знание своей ценности может быть чем-то плохим? Что ж, позвольте мне объяснить. В свои 20 лет я уже обладал тонной знаний и довольно приличными навыками программирования. Но у меня было скудное резюме — и мне было очень трудно изначально войти в профессию. Когда вы находитесь на этом этапе карьеры, вы, как правило, очень тщательно думаете, прежде чем уйти, или перейти на другую работу, или встать на сторону одного из ваших коллег. Но прошло уже много времени с тех пор, когда я настолько беспокоился о своём резюме.
Я счастлив работать в области, где всегда был очень высокий спрос на мои навыки. И моё резюме теперь находится на том уровне, при котором я больше не беспокоюсь о какой-то конкретной записи. По большей части это хорошо. Но это также означает, что моя готовность мириться с дерьмом других людей пугающе мала.
Недавно у меня была контрактная работа, где вся моя команда работала удалённо, но они хотели, чтобы я приходил в офис каждый день. Итак, я пробыл там недолго. Недавно у меня была работа, где несколько руководителей были откровенными, неистовыми расистами. И женоненавистниками. И антисемитами. Итак. Я пробыл там недолго. Однажды у меня была работа, где меня заставляли выполнять нелепую, сложную и трудоёмкую работу, чтобы удостовериться в безопасности моего кода (включая множество контрольных флажков, которые ничего не делали для реальной защиты приложения). Но когда я показал, с какой лёгкостью могу взломать базу данных сотрудников (и любой другой за пределами компании может сделать то же самое), — им было всё равно… Я пробыл там недолго.
Вообще говоря, такого рода гипермобильность является активом. Я имею в виду, кто хочет застрять на работе, где какой-то её аспект стал обременительным?? Но обратная сторона в том, что становится очень трудно оправдать общение с чьим-либо дерьмом — даже в течение короткого времени. Опять же, как правило, это хорошо. Но я встречал других стариков, таких же, как я, которые просто не могут сесть и построить прочную историю с какой-то одной компанией, потому что эти компании всегда делают что-то грубое, непрофессиональное или просто откровенно глупое. Пройдите по этой схеме через 3, 4 или более работодателей, и вскоре у вас будет репутация этого капризного старика, который просто не может «вписаться».
ПО как обрезка теста
Одной из самых душераздирающих тенденций в области разработки за последнее десятилетие с лишним было постоянное стремление свести Программирование к какому-то конвейерному процессу. Хотя я могу понять желание усовершенствовать сложный процесс, превратив его в более простой, но конечный результат этих усилий, — то, что с программистами часто обращаются как с… рабочими сборочного конвейера.
Слушайте, это понятно всем. Разработка программного обеспечения трудна. И сложна. И дорогá. И отнимает много времени. И я также понимаю, что организации постоянно ищут новые способы упрощения этих (по сути сложных) проектов.
Но вы не можете создать важное, совершенно новое приложение с нуля и ожидать, что можно просто передать кучу всеобъемлющих спецификаций команде разработчиков и заставить их провернуть его так же, как они строят кормушку для птиц. Видите ли, все хотят преследовать идею Святого Грааля, что могут просто провести мозговой штурм над большим набором спецификаций, передать эти спецификации команде разработчиков, и — вуаля — выходит приложение, которое они себе представляли.
Я не знаю, сколько раз я создавал какой-то компонент и работал над спецификациями, понимая, что клиент попросил что-то совершенно противоречивое или бессмысленное. И это прекрасно — до тех пор, пока я могу пинговать их и вести интеллектуальную беседу о проблеме. Но теперь, похоже, всё чаще заинтересованные стороны хотят просто застрелить меня из-за кучки спецификаций, а потом хотят, чтобы я ушёл восвояси, пока у меня не будет готового продукта. Иногда люди буквально раздражаются, если я задаю им вопросы. И даже если они не возражают против моих просьб, не дай Бог, чтобы я когда-нибудь зашёл так далеко, чтобы спросить о дизайне, который они просили.
Большинство людей в моем положении не просто знают, как писать код. Они знают, как построить приложение лучше. Они знают очень много о том, что работает, а что вызывает кошмары конечного пользователя. Сейчас у меня нет никакого желания быть бизнес-аналитиком или менеджером проекта. Но идея о том, что я никогда не должен давать никакой функциональной обратной связи по дизайну самого приложения, ну… это просто невежество.
Когда я был помоложе, я делал свои скудные предложения. А иногда клиенты даже слушали. Но если они полностью игнорировали меня, мне было всё равно. Я просто делал всё именно так, как просили клиенты.
Но я признаю, что в данный момент моей жизни меня чертовски расстраивает, когда клиент просит о чём-то, что, как мне известно, потерпит неудачу, или продукт нужно будет изменить сразу после релиза, но, если я поднимаю этот вопрос любым способом, в их голосе ощущается раздражение.
Я даже, кажется, слышу, как они думают: «Почему бы этому парню не заткнуться и просто не создать приложение именно так, как мы его попросили??» Пройдите этот процесс с достаточным количеством клиентов и вы поймаете себя на том, что удивляетесь, почему вы вообще занимаетесь тем, чем занимаетесь.
Заключение
Я мог бы написать в том же духе еще 100 000 слов. Но пост уже становится довольно длинным. Сейчас я просто хотел изложить некоторые причины, по которым старые программисты действительно могут иметь проблемы с «современными» отделами разработчиков. Не потому, что они «застряли». Не потому, что не могут понять новейшие технологии. Часто это происходит потому, что их собственный опыт в некотором смысле работает против них. Я часто замечал это, когда смотрел на себя. Я ловлю себя на мысли: «Сколько ещё я могу продолжать это делать?» Потому что некоторые глупости, с которыми я сталкиваюсь ежедневно, иногда вызывают у меня сильную депрессию.
- Продвинутый курс «Machine Learning Pro + Deep Learning»
- Курс по Machine Learning
- Курс «Математика и Machine Learning для Data Science»
- Профессия Этичный хакер
- Разработчик игр на Unity
- Курс по JavaScript
- Профессия Веб-разработчик
- Профессия Java-разработчик
- C++ разработчик
- Курс по аналитике данных
- Курс по DevOps
- Профессия iOS-разработчик с нуля
- Профессия Android-разработчик с нуля
Рекомендуемые статьи
- Сколько зарабатывает дата-сайентист: обзор зарплат и вакансий в 2020
- Сколько зарабатывает аналитик данных: обзор зарплат и вакансий в 2020
- Как стать Data Scientist без онлайн-курсов
- 450 бесплатных курсов от Лиги Плюща
- Как изучать Machine Learning 5 дней в неделю 9 месяцев подряд
- Machine Learning и Computer Vision в добывающей промышленности
- Machine Learning и Computer Vision на обогатительных фабриках
Автор: Skillfactory School