Комментарии 6
программирование — если этого у вас не спрашивают, значит, не девопса здесь ищут
На техническом собеседовании вас, скорее всего, попросят попрограммировать. Причем не написать какой-нибудь микросервис, а скорее показать знания алгоритмов, с языком программирования на выбор.
большая часть работы у меня заключалась именно в программировании. Я писал либо код, либо YAML-файлы, либо код, который за меня собирал YAML-файлы.
Большая часть материалов про работу девопсом содержит требование уметь программировать, но почему-то либо вообще стыдливо умалчивает - зачем уметь программировать, либо вот такие вот короткие намёки на точку приложения этих усилий. :(
>Язык не принципиален. Если это конечно не 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. Эй, кто там следующий?
Работа DevOps-инженера в крупной компании: ответы на частые вопросы