[Лонг]Вкатунам в IT. Интро и некоторые рекомендации.

Лонг на тему вкатунства, по линии инженерии Linux. Основная тема - то, чему уделяют внимание преступно мало при ускоренном вкатунстве и то, что потом отличает белого человека от переученного наспех дурачка.

О себе - в свободное от основной работы время занимаюсь подбором толковых малолетних для вкидывания их в айти движуху, воннаби хедхантер. Тематика - инженеры в линуксах, стучать гаечным ключом по CentOS. (всегда смотри на автора текста\спича\тейка, это дает контекста к тексту - что он говорит, как он говорит и почему он это говорит).

До некоторой степени текст справедлив для разработчиков, но утверждать не буду - я особо не вникаю, а они снежинки сложные. У нас, линуксятников, все поближе к казарме.

Краткий пересказ - вкатуны делают гигантский упор на навыки и умения, полностью жертвуя фундаментальными знаниями. В результате они умеют применять свои навыки только в стерильной среде, где все под их контролем и создано для взаимодействия с ними - в продуктивной среде это приводит к крушению сопуствующих служб, о взаимодействии с которыми джуник не подумал. Он не знал, что это может сломаться. Можешь листать в конец до рекомендаций книг.

Кто нанимает вкатунов?

Рассмотрим некоторые особенности РФ 2024, которые приходят в голову в целом при обсуждении вкатинга. Почему вообще вкатуны кому-то нужны?

  • Импортозамещение набирает ход - отечественные поставщики софта, сервисов и услуг наращивают выручку. Рост их пользовательской базы оказывает напряжение на многие позиции, в том числе - техническая поддержка, простая инженерия, т.е. те места, где можно и нужно масштабироваться. Кто-то закрывается, кто-то открывается - в целом по больнице рост. Значит, тут ты нужен.
  • "Офицерские" кадры на дороге валяются редко и это не вкатуны - тут ищут не тех людей, кого "обучим заставим", а тех, кто "придет и покажет как надо". За счет этих людей компания растет качественно. Значит тут тебя, вкатуна, не ждут.
  • Искать под задачи масштабирования людей с нужным набором навыков долго и муторно - их зачастую проще и дешевле научить. Крупные интеграторы давно уже собесят людей, вводят их в свой буткемп (человек уже получает зарплату, для него это как ходить на работу) и там уже его дрочат, по итогу на экзамене решают, заркыть ему стажировку или расстаться с ним. Значит, даже недостаток компетенций не проблема, доучат под себя.
  • Нытье про "пошли массовые сокращения айтишнеков, ряяя" можно игнорировать - ни одна из знакомых мне контор не вздохнула с облегчением, мол "набрали полтора состава, закрываем вакансии" - не надо путать пропердеж отдельных убыточных проектов, где сократили всех подряд, с настроениями в отрасли. Пузыри метана надуваются и лопаются, общий тренд "работать некому" остается.

Вывод: работодатель, который готов нанять вкатуна в линукс-инженеры, смотрит примерно на следующий облик:

  • Некоторый минимальный набор компетенций по теме. Никто не забанит тебя, если ты знаешь как поднимать сеть через NM, но не знаешь как в systemd-networkd - всем насрать, научишься за вечер. Ну или разок получишь леща и научишься за следующий вечер.
  • Умение завалить ебало и делать работу. Вкатун идет на должности, которые должны разгрузить более важных специалистов от рутины. Поэтому тут придется немного потерпеть. Просто прими этот факт, что твоя польза в компании в том, что более старший инженер может спокойно пойти с женой в ресторан вечером. Тебе за это платят деньги, все что ты делаешь офицер может сделать сам. Таков путь, тебе главное зацепиться, дальше будешь развиваться посчитаешь нужным.
  • Того, кто может адекватно работать как звено большого механизма, расширять и усиливать его, а не саботировать и ослаблять.

Про третий пункт мы сегодня и поговорим.

No mutant is an island.

Джун почти всегда или настраивает, или дебажит сервисы. Мониторинг, веб-сервер, файлопомойка - по инструкции, в соответствии с заданием. У нормальных компаний типовые операции прописаны достаточно хорошо.

Проблема в том, что сервисы, которые ты настраиваешь, не существуют сами по себе - они являются частью сложного, стекированного механизма, где каждый компонент имеет свои требования и зависимости и определенным образом сконфигурирован на взаимодействие друг с другом. Здесь можно отметить три направления:

  • Сервисы работают в некоей среде - если обычная служба, то внутри ОС, если контейнер, то в докере\кубере. Разворачивая сервис ты должен держать в уме, как он будет взаимодействовать с уже настроенными компонентами системы, не будет ли он их повреждать, не выполнишь ли ты деструктивную операцию для данного сетапа пока будет поднимать свой NGINX.
  • Сервисы взаимодействуют с другими сервисами. Необходимо понимать основы такого взаимодействия и типовые вещи, которые могут пойти не так.
  • Сервисы передают данные по сети. Ты должен иметь выше базового понимания, откуда берутся пакеты, что такое MTU, что такое флаг DF и как он может отхуярить тебе защищенный доступ к ресурсу два раза в сутки без видимых причин.

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

Ты планируешь стать частью отлаженного механизма, работа которого приносит деньги, сбои которого приносят убытки - а значит нужно, чтобы ты во время выполнения своих задач осозновал, что ты делаешь и как это сказывается на решении глобальной задачи.Если ты будешь иметь такое представление, то и не сгенеришь проблем другим и сможешь оперативно заметить, что что-то идет не так. Мониторингами все подряд не вымажешь, верификации на все не настроишь, инструкциями все случаи не покроешь - иначе вместо найма тебя написали бы ансибль плейбук и все на этом.

Перейдем к простым примерам:

  • Веб-сервер ругался на недостаток прав, поэтому ты полез перебивать права на файлы, чтобы подогнать их под своего пользователя - чем сломал работу других служб, работающих под своими привилегиями.
  • Но ты не такой дурачок, запустил веб-сервер под нужным пользователем, но ничего не заработало - потому что ты не знал, что тут настроены POSIX ACL (это нормально, о них почти никто не думает)
  • Ты докинул диск в LVM том, но дотянуть логический раздел до нужного размера не получается - ты не знаешь, что конкретно тут диски в режиме Mirror, и нужно перезаложить размер.
  • Ты не понимаешь, как работает ARP \ RARP, поэтому не можешь сходу установить, что у вас в сети наблюдается дублирование IP-адреса, дебажишь другие вещи.
  • Ты настроил прохождение трафика, но забыл про пропуск ответных пакетов.

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

Чем чревато?

Джун без фундаментальных знаний:

  • Не умеет дебажить. Он не знает, что могло пойти не так, как работают сложно настроенные механизмы ОС, которыми пользуется не только он. Самая главная претензия от компаний это не умеет в нормальный траблшут - приходится будить более опытного инженера, а он в ночь пятницы бухой в гавно.
  • Не умеет взаимодействовать. Он не знает, чего ждать от других компонент и людей, можешь сломать их пайплайны. Он не понимает, как работают унифицированные механизмы вроде LDAP, REST и так далее.

Что делать? Читать.

Компутер Саенс все таки саенс - а значит в ней есть фундаментальные труды, где люди расписывают базу и после прочтения которых у тебя в голове должен сформироваться вот такой карамболь - ты должен понять, как думали те люди, которые это разработали. Ты должен уловить их логику, понять, какую проблему они решали и все сразу встанет на свои места.(Однако, ударятеся в теорию информации не стоит, там не интересно. Хуже только теор. основы кудахтерной безопасности).

Итак, ты хочешь стать линукс-макакой - по совокупности сложности и полезности порекомендую это:

  • Экзамены RHCSA и RHCE - ищи книги по подготовке к данным экзаменам, актуальные, оттуда ты возьмешь нужный уровень практики - шатание самой ОС, как она работает, как не работает и т.п. Во многих отечественных конторах аналоги этих экзаменов являются обязательными - это твое повышение квалификации. Если ты с порога заявишь, что мол "давай собесь по RHCSA" - это хорошая смелая заявка. Примеры - Red Hat RHCSA 9 EX200 Certification Guide и в целом Vugt, голлландец неплохо себя показал.
  • Как работает ОС - сразу ебашь базу, "Современные операционные системы." Танненбаум. Дед базовейший, поясняет по масти. Ты должен иметь в голове четкие определения простейших вещей - "Процесс это экземпляр запущенной программы + назначенные ему ресурсы", что такое зомби, что такое дискреционная модель доступа, что такое виртуальная память - на собесе очень подкупает, когда человек отвечает быстро про такие для джуна нетривиальные вещи. Злоебучий вопрос про Load Average из этой же масти.
  • Сразу шлифани книжкой где тоже самое, но про линуксы и попроще - «Внутреннее устройство Linux. 3-е изд.». Тут разбирают кишочки, а после Дедовской книги станет понятно, почему они именно такие.
  • Курс CCNA от богоспасаемой корпорации Cisco. Никто лучше утятам про сети не рассказал. Они ушли, но "кто-то" выложил в интернет полностью рабочие их курсы. Можно загуглить "антинетакад", ищи и обрящешь.
  • Книга "DNS и BIND", какое найдешь издание. DNS это самая базовая служба в ИТ, которая нужна всегда и везде и даже если на собеседовании у вас не совпадут используемые ОС, фреймворки, веб-сервера - DNS один на всех и как он работает ты знать обязан. (когда он отхуярится будет уже поздно изучать). Ценность этой книги в том, что ты посмотришь как люди задизайнили то, чем пользуется весь мир и оно даже особо не разваливается. Станет понятнее mindset, имхо, это личная уже рекомендация. Ну и да - отличать A от CNAME ты обязан, знать, чем рекурсивный запрос отличается от нерекурсивного тоже.
  • Книжек не нужно(для макаки), но статейки полистай на тему - что такое виртуализация, серверная виртуализация, LDAP, REST, SSH, x509, контейнеры - могут быть интересные дополнения к прочитанному.

Если ты осилишь эти книжки и сможешь вывезти за базар по ним - ты лично для меня уже очень ценный и интересный кадр, думаю, я закончу собес после 2-3 вопросов - сразу пойму, что ты знаешь, откуда в будке интернет берется.И у тебя будет очень большое будущее, потому что это на 90% сильнее типичного кандидата.

Outro

Сосредоточился на недостатке фундаментального понимания у малолетних кандидатов, необходимость изучения БАЗЫ в тандеме с набором конкретных навыков. Человек должен понимать, в какой среде работает и как работают вещи, с которыми он взаимодействует.

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

17
1
1
1
38 комментариев