В каждой профессии есть свои плюсы и минусы - “дроубеки” и “бенефиты”. И часто минусы профессии, с которой знаком поверхностно, почти не заметны - со стороны все выглядит легко и просто, пока сам не столкнешься. Классическое “путать туризм с эмиграцией”. Так, IT представляется многим “лежанием с ноутом на пляже” и, действительно, на удаленке можно поехать пожить у моря, только вот на пляж времени почти не останется. Или работа врача на скорой помощи представляется романтическим спасением людей, хотя в жизни это рутина, скандальные бабки, вонючие бомжи, пробки, неудобный график и так далее и так далее.
Хотел бы обратить внимание на один айтишный “дроубэк” который, как мне представляется, почти отсутствует в других профессиях (хотя, конечно, с большинством профессий я не знаком и могу ошибаться). Под IT я тут понимаю корпоративную разработку и поддержку софта в шаге от продакшена. Речь вот о чем: на мой взгляд, корпоративная разработка - это одна из очень небольшого количества сфер где человек 90% времени занят исправлением косяков - багов, некорректной работы, зависаний и т.д. и т.п.
Возьмем в пример так полюбившихся здесь, на сайте, плиточников: они сносят нахрен старую плитку, кладут стяжку, кладут новое. Большая часть их работы, если они умеют работать - это именно делать новое, спокойно класть плитку. Какие-то косяки исправлять не приходится, если руки на месте. Ну или приходится относительно редко. Возьмем, ну скажем, юристов: есть дело - разбираем документы, готовим документы. Врач действует строго по протоколу лечения: симптомы - диагноз - терапия. Если понос - дать пурген, если вилка в глазу - накапать зеленки. А что у нашего брата? Каким бы крутым спецом ты ни был, большая часть твоего времени это понимать почему не работает корректно написанный код. Вечно что-то идет не так: документы приходят не в той кодировке, дата подачи стоит будущим числом, идентификаторы в унаследованной базе не уникальны и так далее и так далее. И будь ты хоть превосходный специалист который предусмотрел почти всё - все равно что-нибудь пойдет не так. А предусмотреть все, особенно когда приходится работать с легаси - практически не реально, это потребовало бы больше времени, чем написание самого легаси с нуля.
Да, конечно, свои “легаси” есть везде: ко врачу может прийти загубленный другим врачом пациент, автомеханику могут привести раздолбанную в хлам классику. Но есть ньюанс - от автомеханика, который взялся что-то поменять в убитой машине, не ждут что он теперь будет ответственным за то чтобы она стала новой. И врач не отвечает за то, что пациент в запущенном состоянии. В IT же ты получаешь тонну легаси и с этого дня ты считаешься ответственным за то, что оно должно работать правильно. Плевать, что код писали шесть команд, каждая со своим видением (а скорее без всякого видения) архитектуры; плевать что нет документации - ты теперь крайний.
И если в других профессиях люди работают работу, то разработчик корпоративного софта вечно исправляет баги. Хорошо если от тестеров, а не от поддержки или, того хуже, от руководства, которому нажаловались пользователи (а пользователи-то наслышаны что в IT все зажрались, деньги гребут лопатой, работают по три часа - ну вот и тут не могут за день разгрести ком легаси-дерьма…).
Состояние разработчика - это вечный стресс от того что все работает не так. Причем, по мнению окружающих, именно по твоей вине. Это вечный поиск почему на тесте все летает, а на проде все тупит, почему в кафку все ушло, в логах "все ОК", а в базе все "не ОК". Вечное выхватывание подводных камней, которых в момент получения задачи никак не ожидал и, как следствие, вечное “ну когда сделаете, обещали же на прошлой неделе”.
И хоть ты тресни, подход “нормально делай - нормально будет” не сработает. То есть для разработчика естественное состояние — это не «пошел и работаешь по стандартному сценарию/протоколу/инструкции», а «пришел и пытаешься понять, почему стандартный сценарий/инструкция/протокол не отработали, что за чертовщина происходит, откуда здесь вообще может быть null». А за спиной дышат недовольные пользователи и спрашивают: «Ну когда?» — а ты не понимаешь, в чем дело (через час поймешь, но прилетит новый баг). Если продолжать аналогию с автомехаником: он может поменять шины на автомобиле, а завтра ему прилетит баг что машина не едет, а не едет она потому, что пользователи залили не бензин, а мочу (а ты, такой-сякой, не предусмотрел валидацию топлива). Или надо было поменять магнитолу, ты поставил новую, а через день перегорели предохранители, так как древняя машина не рассчитана на современные магнитолы, а ты, такой-сякой, не проверил документацию (которой все равно нет).
Разработчик похож на какого-то мультяшного или игрового героя типа сантехника Марио который бегает по зданию завода с безумными трубами и только и успевает латать дыры и закручивать гайки, в то время как течет из всех щелей и стабилизировать все - в принципе не возможно.
Последнее время мне кажется что вечный поиск багов и вечное ожидание что, как бы ни отлаживались, что-то пойдет не так - держит разработчиков в очень сильном стрессе. Стресс этот, конечно, не сравним с работой силовых структур, спасателей и т.д. В конце-концов жизнью мы не рискуем. Но, с другой стороны, “наш” стресс - постоянен. Баги есть всегда, баги появляются всегда, и виноваты в них тоже мы всегда.


Комментарии (194)