Это небольшая история о том, как лично мне помог всего лишь один инструмент в выходе на совершенно новый уровень, как специалиста.
Мотивация для развития
Наверное, многие из нас на парах мотивации садились читать какую-то книгу по интересной технологии, но ввиду отсутствия четкого понимания, зачем это понадобится забрасывали это дело. Да и за частую техническая литература бывает жутко скучной. Эти два пункта в комбинации окончательно уничтожают желание изучать технологию.
Я не исключение, и первая попытка не увенчалась успехом.
На тот момент я уже работал полтора года дежурным linux админом, умел писать скрипты на Bash, в организации шел активный переход с оркестратора Puppet на Ansible.
В процессе перехода мне также перепадали тикеты на написание новых ролей. Здесь я почувствовал нехватку базового понимания программирования и знания основ Python.
Дальше появляется задача достаточно серьезного уровня - написать скрипт, для выгрузки и парсинга большого массива данных для автогенерируемого дашборда в Grafana. Он был написан на Bash-е, размером в ~350 строк. Выглядел он ужасно. Как его будет поддерживать другой специалист - непонятно. Мне было стыдно, но оно работало и помогало бизнесу.
Итак, я получил мотивацию.
Изучение Python
Мои глаза горели, руки не понимали, что делать, в книгах большое количество информации, а я хочу писать здесь и сейчас. Хочу показать всем, что мне не зря платят деньги.
Изучение началось с того, что я купил курс по Python: Basic за 5 000 рублей. Он состоял из следующих тем:
Типы данных;
Ветвление;
Циклы;
Работа с файлами;
Модули и библиотеки;
ООП;
Исключения и немного инфы о работе с RESTful API.
Да, все темы были сжаты в рамках курса, но это была моя личная точка старта. Этой инфы за пять тысяч рублей мне хватило для того, чтобы научиться писать красивые скрипты и начать изучать программирование в стиле ООП. До этого я умел только в линейное программирование на уровне Bash скриптов.
Эта точка старта открыла огромное количество дверей. Я научился писать: модули для Ansible, большие скрипты для автоматизации действий завязанных с API интерфейсами, полезные AWS Lambda функции, которые помогают защищать наши проекты от DDoS атак, небольших чат ботов и все в таком духе.
Одна лишь мысль о том, что с помощью Python я могу "фактически всё", зажигала моё желание сделать что-то ещё. Я читал скрипты наших DevOps инженеров, просил их же о ревью кода, спрашивал очень много всего, что связано с питоном (казалось, что я уже всех достал), учился применять практики ООП, открыл для себя портал Codewars. Кстати, благодаря Codewars узнал достаточное большое методов для парсинга массивов данных и различных функций, всем рекомендую.
Ansible перестал для меня быть непонятной штукой, которую нужно 24\7 штудировать по документации, а фильтры jinja2 стали моим лучшим другом.
Ранее мой код выглядел так, словно его писали индусы за еду. Примера ради, вырезка кода, который получает id последнего полученного письма и удаляет его.
Python код за еду
mail = imaplib.IMAP4_SSL('imap.gmail.com')
mail.login('mail@gmail.com', 'Psw')
mail.select("inbox")
result, data = mail.search(None, "ALL")
ids = data[0]
id_list = ids.split()
latest_email_id = id_list[-1]
result, data = mail.fetch(latest_email_id, "(RFC822)")
raw_email = data[0][1]
raw_email_string = raw_email.decode('utf-8')
email_message = email.message_from_string(raw_email_string)
mail.store(latest_email_id, '+FLAGS', '\\Deleted')
mail.expunge()
Для примера вырезка из кода последних скриптов. Он генерирует список каких-то нужных данных из ответа на запрос к Elasticsearch и умеет писать prometheus like метрики в случае проблем:
Python код за еду и деньги
def comparison(targets, field, target):
req_result = req(field=field, target=target)
if req_result.status_code == 200:
try:
elc_json = req_result.json()['some']['key']['from_dict']
for item in elc_json:
elastic_hosts.append(item["key"])
res = [x for x in targets if x not in elastic_hosts]
for name in res:
write_metric(hostname=name)
except:
write_metric(error_msg="Message", code=3)
move_file()
exit(1)
else:
write_metric(error_msg="Error message", code=4)
move_file()
exit(1)
elastic_hosts.clear()
Все и без меня знают, но стоит еще раз упомянуть, что этот язык программирования обладает огромным количеством библиотек и может пригодиться буквально где угодно. Множество крупных проектов имеют готовые библиотеки для работы с их API.
Используешь Amazon? Вот тебе boto3. Используешь Cloudflare? Вот тебе библиотека cloudflare. Используешь Hetzner? Вот тебе hcloud.
Простой синтаксис дает возможность легко читать код и поддерживать его.
Возможность автоматизировать рутинные процессы - это отдельный вид блаженства.
Что мне это дало?
Во-первых, у меня появилось новое хобби, я по сей день изучаю Python, хоть и моих нынешних навыков хватает с головой для выполнения поставленных задач.
Во-вторых, расширился спектр задач, которые я могу брать и выполнять. Автоматизация процессов, улучшение инфраструктуры, так как в современном мире любая организация стремится к модели Infrastructure as a Code.
В-третьих, программирование(не только на Python) - это прямой путь к DevOps практикам и методологии в целом.
В-четвертых, каждое self-review позволяет без особого труда обозначить твою значимость, как постоянно развивающегося высококвалифицированного специалиста. Это позволило мне хорошо пройти предыдущее ревью и получить небольшое повышение в должности.
Собеседования
Если открыть hh.ru, запросить вакансии "Системный администратор Linux"(middle), в навыки которого обычно не входят K8s, CI/CD, обязательные навыки программирования, Docker swarm и тому подобные вещи, вилка ЗП обычно от 110 000 до 150 000. Возьмем в расчет так же то, что на 150 можно выйти, если хорошо пройти собеседование.
Каждый раз, когда я пишу self-review, я параллельно прохожу собеседования. Это нужно исключительно для моих тараканов в голове, чтобы доказать, что я заслуженно прошу повышение зарплаты и рынок мне может предложить столько же.
В этом году моя схема работала также, ревью + собеседования. Но каково же было мое удивление, когда я проходил некоторые собеседования, мягко говоря посредственно, но исключительно из-за умения писать на Python некоторые работодатели предлагали перейти на ЗП выше 150к плюс обучение. Впервые в жизни я из 10 пройденных собеседований получил 3 крайне привлекательных письменных оффера.
Итоги
Основываясь на полученном опыте я могу с уверенностью сказать, что стоит найти свою мотивацию и постоянно развиваться, это не только хорошо оплачивается, но и очень интересно.
Одним лишь инструментом можно расширить свои умения и востребованность на рынке до серьезного уровня.
Сильным и красивым инженером я ещё не стал, но у меня всё впереди. Я верю в себя и своё желание учить что-то новое. Спасибо за уделенное время, надеюсь история о моём опыте кому-то пригодится.
P.S. На самом деле, Python можно заменить и другим языком. Например, Go. Но про это я уже смогу написать статью только тогда, когда буду знать, о чем я пишу ¯\_(ツ)_/¯
Комментарии (16)
beretto
05.02.2023 00:54+3А в чем полезность данной статьи? Ура, я познал питон?
MonsterCatz Автор
05.02.2023 01:02Нет. Посыл был в том, что лишь один инструмент позволяет не только познать азы программирования, но и открыть для себя уйму новых дверей.
Возможно людям, которые ежедневно используют более сложные вещи моя статья покажется мега очевидной, но для меня, как для человека, который только недавно проникся Python - это большой шаг.
Большим удивлением для меня также стало то, что на рынке труда это высоко ценится. Пока я не умел в питон, я думал, что это лишь маленький пункт моего развития. Я ошибался.
У меня без малого 3 года опыта работы, так что прошу меня простить, если было слишком неинтересно. При написании статьи в основном расчет был на таких же, как и я, только помладше.
ku4in
05.02.2023 01:56+2Изучение началось с того, что я купил курс по Python: Basic за 5 000 рублей.
Лично мне зашел курс МГУ. Ведет Георгий Курячий. Не реклама, просто, на мой взгляд, недооцененный бесплатный контент. Там и не студентам можно домашку сдавать и вопросы на лекциях на ютубчике задавать.
boopiz
05.02.2023 08:24-1пАйтон, в не питон. Монти, мать его, Пайтон.
умея в баш скрипты, где есть абсолютно все базовые конструкции зачем что то покупать, если есть стопицот мануалов..?за ща время администрирования не получили навык в man-ы и проч? очень странно, т. к. при выполнении функций администратора обязательно прихолится что то искать и докручивать..
куча библиотек и модулей есть у любого ЯП.
оффтоп. вот какой рукожоп писал этот редактор текста на хабре для мобильных браузеров? сапожник без сапог! бажина конкретная. если у вас нумерованный список, то перейти просто в текст нельзя двойной enter тупо возврашает к предыдущей строке. по этому пишу пунктом.
и вот такое выпускают в продакшн. вся отрасль уже превратилась в тыкву по моему.
MountainGoat
05.02.2023 09:20+11: Всем давно пофиг. Персонаж мультиков из детства против весьма нишевой группы комиков. Даже официальный логотип CPython - две змеи.
2: Вот тут согласен: Питон на уровне админа можно выучить по официальной справке, не то что по учебникам.
3: Иногда бывает, что модулей дофига, но про все пишут что они - глючное, не стабильное, не готово к проду. Открываешь список из двадцати - и не можешь выбрать.
4: Используйте маркдаун. На Реддите визуальный редактор тоже фуфел, как и в Дискорде.
5: Адаптируйтесь.boopiz
06.02.2023 02:36вот это и плохо. что пофиг. это первый пункт из которого в итоге получается 4 пункт. А вместо решения предлагается 5 пункт.
DikSoft
05.02.2023 08:51+1Ок, для Linux администратора, вероятно, Python уже необходим.
Вопрос: что даст этот язык Windows администратору в большой инфраструктуре, и даст ли больше, чем закрываюший на сегодня все потребности универсальный PowerShell?
Спрашиваю не ради холивара, интересно мнение уже использущих. Плюсы, минусы, подводные камни, так сказать.
MountainGoat
05.02.2023 09:28Именно Windows администратору - возможно, что и ничего не даст. И PowerShell и Bash - решения под одну ось. На другую оба портированы, но со скрипом и никто всерьёз не пользуется. А Питон - он универсальный. Скрипт, работающий сразу на двух осях, пишется вообще без проблем. Поэтому когда прыгаешь туда-сюда между осями, выручает.
Krasnoarmeec
05.02.2023 10:48Всегда думал, что PowerShell кроссплатформенный. И даже OpenSource.
funca
05.02.2023 11:57+1PowerShell не часть POSIX (aka Portable Operating System Interface). Поэтому на *nix, коих зоопарк, это весьма нишевая штука, ниша которой понятна одному лишь Майкрософту.
khimick
05.02.2023 16:44+1так и баш не прям совсем posix
funca
05.02.2023 19:12Ну что-то sh-образное в линуксах обычно идёт из коробки, а остальное нужно ставить отдельно. Не велика проблема на самом деле. Но на практике тут стена из здравого смысла, личных предпочтений, прошлого опыта, когнитивных искажений и корпоративных стандартов.
CrzyDocTI
05.02.2023 13:27+3В итоге от аргументов - "больше платят"
Аргументов для применения как сисадмину - ноль
Открою секрет - за умение адекватно ставить задачу, исследовать варианты решения, реализовывать наилучшее решение - платят куда больше. А уж умение последовательно излагать мысли - вообще необходимо всем чтобы достигать взаимопонимания.
Pastoral
Ну вот, один бизнес винтик познал. А то напрашивалась некоторая аналогия - у африканских озёр племена умирают с голода но не ловят рыбу (пока сердобольные японцы не просветят, на камеру), а у компьютеров люди помирают от старости (медленно), но так и не проявляют интереса к тому, как оно там всё.