Это небольшая история о том, как лично мне помог всего лишь один инструмент в выходе на совершенно новый уровень, как специалиста.

Мотивация для развития

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

Я не исключение, и первая попытка не увенчалась успехом.

На тот момент я уже работал полтора года дежурным 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)


  1. Pastoral
    05.02.2023 00:25
    +1

    Ну вот, один бизнес винтик познал. А то напрашивалась некоторая аналогия - у африканских озёр племена умирают с голода но не ловят рыбу (пока сердобольные японцы не просветят, на камеру), а у компьютеров люди помирают от старости (медленно), но так и не проявляют интереса к тому, как оно там всё.


  1. Habrahog
    05.02.2023 00:47

    Замените запятую в заголовке на тире. Пожалуйста.


    1. MonsterCatz Автор
      05.02.2023 00:53

      Заменил.


  1. beretto
    05.02.2023 00:54
    +3

    А в чем полезность данной статьи? Ура, я познал питон?


    1. MonsterCatz Автор
      05.02.2023 01:02

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

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

      Большим удивлением для меня также стало то, что на рынке труда это высоко ценится. Пока я не умел в питон, я думал, что это лишь маленький пункт моего развития. Я ошибался.

      У меня без малого 3 года опыта работы, так что прошу меня простить, если было слишком неинтересно. При написании статьи в основном расчет был на таких же, как и я, только помладше.


  1. ku4in
    05.02.2023 01:56
    +2

    Изучение началось с того, что я купил курс по Python: Basic за 5 000 рублей.

    Лично мне зашел курс МГУ. Ведет Георгий Курячий. Не реклама, просто, на мой взгляд, недооцененный бесплатный контент. Там и не студентам можно домашку сдавать и вопросы на лекциях на ютубчике задавать.


  1. boopiz
    05.02.2023 08:24
    -1

    1. пАйтон, в не питон. Монти, мать его, Пайтон.

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

    3. куча библиотек и модулей есть у любого ЯП.

    4. оффтоп. вот какой рукожоп писал этот редактор текста на хабре для мобильных браузеров? сапожник без сапог! бажина конкретная. если у вас нумерованный список, то перейти просто в текст нельзя двойной enter тупо возврашает к предыдущей строке. по этому пишу пунктом.

    5. и вот такое выпускают в продакшн. вся отрасль уже превратилась в тыкву по моему.


    1. MountainGoat
      05.02.2023 09:20
      +1

      1: Всем давно пофиг. Персонаж мультиков из детства против весьма нишевой группы комиков. Даже официальный логотип CPython - две змеи.
      2: Вот тут согласен: Питон на уровне админа можно выучить по официальной справке, не то что по учебникам.
      3: Иногда бывает, что модулей дофига, но про все пишут что они - глючное, не стабильное, не готово к проду. Открываешь список из двадцати - и не можешь выбрать.
      4: Используйте маркдаун. На Реддите визуальный редактор тоже фуфел, как и в Дискорде.
      5: Адаптируйтесь.


      1. boopiz
        06.02.2023 02:36

        вот это и плохо. что пофиг. это первый пункт из которого в итоге получается 4 пункт. А вместо решения предлагается 5 пункт.


  1. DikSoft
    05.02.2023 08:51
    +1

    Ок, для Linux администратора, вероятно, Python уже необходим.

    Вопрос: что даст этот язык Windows администратору в большой инфраструктуре, и даст ли больше, чем закрываюший на сегодня все потребности универсальный PowerShell?

    Спрашиваю не ради холивара, интересно мнение уже использущих. Плюсы, минусы, подводные камни, так сказать.


    1. MountainGoat
      05.02.2023 09:28

      Именно Windows администратору - возможно, что и ничего не даст. И PowerShell и Bash - решения под одну ось. На другую оба портированы, но со скрипом и никто всерьёз не пользуется. А Питон - он универсальный. Скрипт, работающий сразу на двух осях, пишется вообще без проблем. Поэтому когда прыгаешь туда-сюда между осями, выручает.


      1. Krasnoarmeec
        05.02.2023 10:48

        Всегда думал, что PowerShell кроссплатформенный. И даже OpenSource.


        1. funca
          05.02.2023 11:57
          +1

          PowerShell не часть POSIX (aka Portable Operating System Interface). Поэтому на *nix, коих зоопарк, это весьма нишевая штука, ниша которой понятна одному лишь Майкрософту.


          1. khimick
            05.02.2023 16:44
            +1

            так и баш не прям совсем posix


            1. funca
              05.02.2023 19:12

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


  1. CrzyDocTI
    05.02.2023 13:27
    +3

    В итоге от аргументов - "больше платят"

    Аргументов для применения как сисадмину - ноль

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