DigitableCourses
Настройки портала
Показать возможности портала

Локально и без аккаунта. Аккаунта нет, регистрация не нужна: введённое в инструменты остаётся в localStorage браузера и на сервер не уходит.

Свой счётчик считает открытия страниц и дочитывания: уезжает адрес и десятая доля текста. Без cookies и чужих счётчиков, IP не хранится, Do Not Track уважается. Как это проверить

Репозиторий портала не выложен, «открытым кодом» мы его не зовём. Открыто это:

Живёт портал на донатах, платных консультациях и разборах по запросу и покупке Workbench.

Планов делать курсы платными нет.

Карьера

Бэкенд-разработчик

Серверная часть: данные, API, интеграции, надёжность под нагрузкой.

  1. Junior
  2. Middle
  3. Senior
  4. Дальше: ветвление, а не ступень

По сравнению с учёбой меняется постановщик задачи: теперь это чужой код и люди рядом, а не преподаватель.

Сделать сейчас

  • Собираю с нуля маленький сервис и отдаю его так, чтобы он запускался не только у меняКоллега поднимает мой проект по README и не задаёт ни одного вопроса.
  • Довожу каждый свой баг до причины, а не до исчезновения симптомаМогу назвать место, из-за которого всё сломалось, и объяснить, почему раньше работало.
  • Спрашиваю непонятное в начале задачи, а не в день сдачиМои вопросы приходят до того, как написан код, который придётся выбросить.
  • Читаю чужие pull request и оставляю в них хотя бы один вопрос по существуЗнаю, что происходит в соседних частях сервиса, а не только в своей.

Куда дальше

Middle

Вбок из роли

Что на ступени спрашивают

  • Пишу и запускаю код на рабочем языке без подсказки по синтаксисуМогу с нуля собрать маленький сервис: зависимости, запуск, форматирование, линтер.
  • Понимаю, что происходит между запросом браузера и ответом сервисаМогу объяснить, почему запрос вернул 502, а не «сервер сломался».
  • Пишу SQL-запросы и понимаю, что такое транзакцияСобираю выборку с джойном и группировкой без гугла, знаю, чем отличается транзакция от отдельных запросов.
  • Работаю в общей ветке, не ломая историю остальнымРазвожу конфликт, делаю осмысленный pull request, восстанавливаю потерянный коммит.
  • Локализую ошибку по логам и стектрейсу, а не переборомФормулирую гипотезу, проверяю её, а не меняю строчки наугад.

Обычные ошибки

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

Что учить

  1. Junior
  2. Middle
  3. Senior
  4. Дальше: ветвление, а не ступень

Предмет вырастает с задачи до фичи целиком: раньше вам говорили, что сделать, теперь решать, что здесь значит «сделано», приходится самому.

Сделать сейчас

  • Довожу следующую фичу до прода сам: постановка, код, тесты, выкладка, наблюдениеПосле моего релиза за мной ничего не доделывают.
  • Возвращаю постановку автору, когда в ней нет поведения при ошибкахВ задаче написано, что делать, если соседний сервис недоступен.
  • Смотрю план запроса до того, как таблица вырастетЗнаю, какими индексами пользуются мои запросы, и вижу это в плане.
  • Беру задачу в старом модуле, автор которого уволилсяИзменение внесено, и я могу объяснить, почему не переписал модуль целиком.

Куда дальше

Senior

Вбок из роли

Что на ступени спрашивают

  • Довожу фичу целиком: требования, код, тесты, выкладка, наблюдениеПосле моего релиза не остаётся хвостов, которые доделывает кто-то другой.
  • Пишу тесты, которые ловят регрессии, а не повторяют кодМогу объяснить, что именно проверяет каждый тест и почему его не жалко удалить.
  • Читаю план запроса и чиню медленную выборкуВижу seq scan там, где должен быть индекс, и понимаю, чем платит вставка за каждый лишний индекс.
  • Проектирую API, который переживёт следующую версиюУмею добавить поле, не сломав старых клиентов, и понимаю цену выбранного стиля API.
  • Работаю в чужом и старом коде, не переписывая его целикомМогу внести изменение в модуль, автор которого уволился, и объяснить, почему не стал рефакторить всё.

Обычные ошибки

  • Переписывать чужой модуль вместо правки: срок уезжает, а причина бага остаётся на месте.
  • Писать тесты на реализацию: любой рефакторинг превращается в починку тестов.
  • Считать выкладку чужой работой: как фича живёт в проде, вы узнаёте от поддержки.

Что учить

  1. Junior
  2. Middle
  3. Senior
  4. Дальше: ветвление, а не ступень

Меняется горизонт ошибки: цена решения видна уже не на ревью, а тогда, когда систему поздно переписывать.

Сделать сейчас

  • Записываю следующее крупное решение вместе с отвергнутыми вариантами и условиями пересмотраСпор о решении идёт по документу и без моего участия.
  • Беру дежурство и веду разбор инцидента самПосле разбора в системе или процессе есть изменение, а не запись «быть внимательнее».
  • Прохожу свою фичу глазами атакующего до релизаЗнаю, что можно сделать с моими данными и что для этого нужно.
  • Ревьюю так, чтобы после комментария человек понимал причинуВ моих замечаниях есть «почему», а не только «переделай».

Куда дальше

Дальше: ветвление, а не ступень

Вбок из роли

Что на ступени спрашивают

  • Выбираю решение по последствиям, а не по моде, и записываю выборУ решений есть ADR: что рассматривали, чем пожертвовали, при каких условиях пересмотрим.
  • Проектирую с учётом отказов: ретраи, идемпотентность, согласованностьЗнаю, что произойдёт с данными при обрыве сети посередине операции, и заранее это учёл.
  • Веду инцидент и пишу разбор без поиска виноватыхПосле разбора остаётся изменение в системе или процессе, а не строчка «быть внимательнее».
  • Ревьюю так, что после ревью человек становится сильнееВ комментариях есть «почему», а не только «переделай»; у команды есть общий стандарт.
  • Вижу в своей фиче поверхность атакиРазбираюсь с авторизацией и секретами до релиза, а не после отчёта пентеста.

Обычные ошибки

  • Стать единственным, кто разбирается в системе: ваш отпуск превращается в риск для команды.
  • Спорить о технологиях вместо последствий: решение принимают по громкости, а не по цене.
  • Проектировать без отказов: обрыв связи посередине операции найдут пользователи, а не вы.

Что учить

  1. Junior
  2. Middle
  3. Senior
  4. Дальше: ветвление, а не ступень

Дальше: ветвление, а не ступень

Сразу к самооценке

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

Сделать сейчас

  • Беру работу, у которой нет ни владельца, ни постановки, и довожу её до концаЗадача закрыта, хотя её никто мне не поручал.
  • Провожу изменение практики через команды, которые мне не подчиняютсяМою идею внедрили там, где я не могу ничего приказать.
  • Считаю деньги своей системы, а не только её схемуМогу назвать, во что она обходится и какой вариант дешевле при росте нагрузки.
  • Пробую соседнюю работу на своей же задаче, прежде чем менять рольПровёл разбор с пользователями или подежурил за платформу — и знаю, моё ли это.

Куда дальше

Дальше не ступень, а развилка

Вбок из роли

Что на ступени спрашивают

  • Беру задачи, которые не помещаются в одну командуДовёл до конца работу, у которой не было ни владельца, ни чёткой постановки.
  • Меняю практики без формальных полномочийМою идею внедрили команды, которые мне не подчиняются.
  • Оптимизирую по измерению, а не по ощущениюНачинаю с профиля и нагрузочного теста, а заканчиваю числом «стало быстрее на столько».
  • Считаю деньги системы, а не только её архитектуруМогу сказать, во что обходится сервис в месяц и какой из вариантов дешевле при росте вдвое.

Обычные ошибки

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

Что учить