Как правильно изучать новые технологии на примере Prometheus

Illustration of a child carrying a large teddy bear past a box labeled 'MEMOS' overflowing with toys, towards an empty box labeled 'TRASH'.
Обновлено: | Опубликовано:
Illustration of a child carrying a large teddy bear past a box labeled 'MEMOS' overflowing with toys, towards an empty box labeled 'TRASH'.

Новички в программировании не знают, на чём фокусировать своё внимание при изучении новых технологий. И поэтому тратят время на запоминание ненужных вещей. Это пост для них.

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

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

Возьмём для примера модную систему для мониторинга Prometheus. Вот что действительно важно знать про неё (впрочем, часть списка можно опустить):

  1. Promethus собирает и хранит метрики с серверов и приложений. Метрики могут быть чем угодно: количество свободного места на жёстком диске или число запросов в минуту в веб-приложении.

  2. Prometheus работает по pull-модели. Места, откуда вытягивать метрики, могут быть как статичным списком адресов так и вытягиваться динамически при помощи доступных в Prometheus плагинов для Service Discovery;

  3. PromQL - язык запросов, позволяет выполнять разной сложности запросы для поиска метрик и их анализа;

  4. Prometheus не масштабируется горизонтально;

  5. Метрики должны быть доступы в определённом формате и задача объекта мониторинга предоставить эти метрики на каком-нибудь HTTP(S) эднпойнте;

  6. Prometheus написан на языке программирования Go и распространяется как один бинарник;

  7. При помощи PromQL запросов можно определять правила для оповещений;

  8. Отдельный инструмент Alertmanager умеет рассылать эти оповещения, сам Prometheus этим не занимается;

  9. Существуют десятки интеграций с Prometheus как для экспорта метрик, так и для визуализации данных;

  10. Очень легко написать свой экспортер метрик для мониторинга своих приложений;

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

А вот что совершенно не обязательно зубрить и держать в памяти бесконечное число времени:

  1. Формат конфигурационного файла Prometheus;

  2. Конкретный синтаксис определения правил relabeling;

  3. Встроенные в PromQL функции и связанные с ними сложные запросы;

  4. Аргументы для запуска бинарника Prometheus;

  5. Детали настройки плагинов для Service Discovery;

  6. Названия отдельных метрик для популярных экспортеров;

  7. Как именно писать экспортер для своего приложения;

Всё, что входит во второй список, совершенно не нужно запоминать. Вся эта информация находится в пределах одного-двух поисковых запросов, которые не составит труда составить человеку, который уже понял и знает, как работает Prometheus. То есть, если ты понимаешь, что Prometheus умеет получать список объектов для мониторинга при помощи API Kubernetes, то конкретную строчку конфига certificate path можно не запоминать, а просто каждый раз гуглить "Prometheus Kubernetes Discovery certificate path". Пусть эта информация хранится в интернете, а не захламляет тебе мозг.

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

Если на собеседовании вам задают вопросы, связанные с зазубриванием свободно доступной в любой момент информации, то собеседующий дурак и, возможно, работать в этой компании не стоит.

Любой старший разработчик знает, что важнее всего понимать принципы работы всего вокруг и уметь решать задачи. Поэтому услышав вопрос "назови мне 6 функций для запросов в PromQL" от интервьюера, нужно помнить, что это просто плохой интервьюер, и проблема в нём, а не в тебе. И если не возьмут на работу из-за неспособности отвечать на такие вопросы, то ничего страшного — твоей вины в этом, скорее всего, нет.

Как выявить принципы работы технологии

Возникает логичный вопрос: а как выявить эти самые основные принципы работы новой технологии? Как понять что важно, а что неважно? Здесь приходит на помощь универсальный критерий "если ты не можешь объяснить как это работает, значит ты сам этого не понимаешь".

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

Нюансы

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

Выбор технологии для важного проекта

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

Принципы сами по себе не заменяют опыта

Даже если ты применишь правило и действительно поймёшь, как технология работает, и как её использовать, то не спеши добавлять в резюме строчку "эксперт по X". Способность быстро и правильно изучать технологии (которая обеспечивается следованием правилу выше) не заменяет глубокого знания всех её нюансов. Подобное знание можно получить только в боевых условиях. Только когда ты будешь вовлечён в проект, в котором Prometheus стоит в центре всего мониторинга, ты сможешь отдельной строчкой упоминать, как ты им хорошо владеешь. Иначе место этой технологии в твоём резюме в списке "Навыки", где ты просто перечисляешь через запятую то, с чем знаком, но необязательно являешься экспертом в этом.

Нет ничего плохого в том, чтобы запомнить мелкие детали

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


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

Subscribe to our Newsletter

Let us send you the best of what we've discovered in DevOps, Cloud and Kubernetes, as well us occasional event announcements.

We are also preparing some ways to learn together: weekly challenges, free courses and more. Subscribe now to be the first to get those.