Как стать автором
Обновить

Комментарии 6

программирование — если этого у вас не спрашивают, значит, не девопса здесь ищут

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

большая часть работы у меня заключалась именно в программировании. Я писал либо код, либо YAML-файлы, либо код, который за меня собирал YAML-файлы.

Большая часть материалов про работу девопсом содержит требование уметь программировать, но почему-то либо вообще стыдливо умалчивает - зачем уметь программировать, либо вот такие вот короткие намёки на точку приложения этих усилий. :(

Плюсану.

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

Но справедливости ради - это 0.5% от того, что спросят на алгособесе на middle+ SWE.

>Язык не принципиален. Если это конечно не PHP или не Perl =) Самые популярные и удобные варианты — это Python и Go.
Интересно, чем PHP или Perl не угодили и чем Python и Go лучше указанных языков, кроме моды на них? Простейшая обработка входных массивов данных и выплюнуть все в файл - задача одинаково легкая и удобная как в Python, так и в PHP, Java, Ruby, C, C++, R, C#, Rust и еще кучи современных языков. Даже сраный древний Pascal справится с этим не хуже питона. PHP и Perl отлично и быстро молотят огромные объемы текста. PHP обычно даже проще, удобнее, комфортнее в плане разработки скриптов и код получается обычно лаконичней того же питона. Если ты отлавливаешь баг в PHP, то ты знаешь, что проблема с кодом, а не в том, что где то пробел лишний или не добили до ожидаемого количества. Я уж не говорю про кусок кода, скопированного с какого то сайта. Код на PHP или Perl просто скопировал и запустил, а питоновский будешь форматировать пол часа, разбираясь с пробелами. А для огромного количества задач и обычного Bash-а хватает.

Глобально есть 3 направления применения знаний ЯП в девопсировании:

  • для разбора кода. Часто приходится глядеть в сорсы опенсорс инструментов, чтобы понимать, как это работает (а вернее - не работает таким образом, как вы думаете). Документация может отсутствовать, быть неполной или врать. Дешевле сказать девопсам "а вы умейте код читать", чем обновлять доки

  • для допиливания инструментов. Вот у меня есть опенсорсный инструмент, который не умеет ходить в noSQL СУБД по SSL, и noSQL СУБД, которая категорически не хочет, чтоб в неё ходили по SSL - ну, такие полиси. Я могу сесть и поплакать, а могу форкнуть код и переписать так, чтоб умел

  • для написания своих инструментов. Там бывает не только "простейшая" обработка данных. Начав заниматься platform engineering, вы быстро дойдёте до того, что вам надо написать свой продукт (погуглите, как устроена платформа у крупняков).

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

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

В целом, в IT сопротивление "моде" бесполезно, "моду" надо уважать, потому что именно за "моду" платят средние или среднебольшие деньги - и если не вам, то значит кому-то ещё.

>для разбора кода. Часто приходится глядеть в сорсы опенсорс
инструментов, чтобы понимать, как это работает (а вернее - не работает
таким образом, как вы думаете).

Фраза
----------------------------------------------------------------------------------------------------------------------
"Язык не принципиален. Если это конечно не PHP или не Perl =) Самые популярные и удобные варианты — это Python и Go."
----------------------------------------------------------------------------------------------------------------------
здесь уже не подходит. Если проект написан на C# или Java, то язык очень даже принципиален и будет отличаться, как от питона, так и от го.

>Я могу сесть и поплакать, а могу форкнуть код и переписать так, чтоб умел

Аналогично. Если инструмент написан на Java, то знание нужного языка - принципиально. Если допиливается готовый инструмент в виде API-костыля, который будет прокладкой между инструментом и БД, то да, язык не принципиален. Это может быть и C#, Perl, PHP, Java. Если код инструмента написан на ASM-е или Erlang-е и надо дописать именно его, то знание питона не поможет никак.

>для написания своих инструментов.
Вы писали на C#, Python, Perl, PHP, Go? На уровне девопсовских задач все эти языки абсолютно одинаковы. Что есть у Python и Go такого специфического, чего не умеет Perl, PHP? У меня есть опыт программирования примерно на 15 языках, включая Basic, 1C, Pascal, ASM86-486, PHP, C, C++, Perl, PHP, JS и т.д. Доки по C#, Ruby, Python и Go я пробежался "по-диагонали" чтобы понимать, есть ли смысл гоняться за модой и бросаться изучать новый язык или оставлять инструменты на том, что знаю. Ничего какого то революционного у них нет. Чуть другой синтаксис, чуть другая логика работы, но чего то прямо "вау!!!" я не обнаружил. Каждые 3-5 лет всплывает мода на новый язык, пока одни пытаются дорасти хотя бы до уверенного миддла, модный язык уже меняется. Только что пиковые зарплаты были у "шарпистов", через 3 года у питонистов, через 5 лет у явистов, сейчас у какого-нибудь Rust с сообществом в 5к человек на весь мир.

>То есть - вам придётся использовать те же языки, на которых написана инфраструктурщина. Терраформ на го написан.

Битрикс24 - на PHP, как и куча других продуктов.

>"у нас тут куча техплатформенного кода на пайтоне, и пайплайн под пайтон, и автодеплой, и линтеры,

Все то же самое можно сказать про Erlang и Java. У меня сейчас один из проектов именно на Java. И тут пришел кандидат со своим Go. Эй, кто там следующий?

Увы. Вам придётся либо смириться, что каждые N лет получает распространение новый язык (и девопсы учат и используют именно его), либо менять мир. Неконструктивно только сетовать по поводу несправедливости мира к тем, кто умеет программировать на 15 языках, включая уже невостребованные.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий