Если вы профессионал в своем деле, то ваше мастерство должно находить отражение и в вашем инструментарии.

Во-первых, это напрямую влияет на вашу эффективность, что отражается на качестве работы.

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

Конечно, нельзя не восхищаться крутым инженером, который всю жизнь пишет код в Vim, оттуда же управляет своей Tesla и делает много другого, что, судя по бесконечным спорам об удобстве инструментов на форумах, “любителям IDE даже не снилось”.

Но все-таки, если профи использует инструменты для профи, то он становится еще сильнее.

Зависимость от инструментов

Когда начинал писать код, мне очень помогла IDE от компании JetBrains - Rider. Мне казалось, что это какое-то волшебство и с ней реально написать любой код, даже, если ты не знаешь, как.

Профессиональные инструменты - IDE или крутая зеркальная камера для фотографа - значительно облегчают жизнь, сглаживая кривую обучения и помогая быстро получить неплохой результат.

“Как тебе удается делать настолько впечатляющие снимки? - Я просто нажимаю на это большую кнопку…”

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

В какой-то момент я понял, что хочу глубже разбираться в работе IDE, хочу больше гибкости и свободы. Поэтому я ушел от экосистемы JetBrains, попращавшись с Rider и Goland.

Своим опытом перехода делился в серии постов.

Сейчас я весь код пишу в VS Code и мне это очень удобно. Конечно, есть некоторые нюансы, но у меня, наверное, ни разу не возникало мысли вернуться на тяжеловесную IDE, которой была Goland, пока…

Пока не стал активно работать с базами данных (Postgres, Redis и другие).

Да, для VS Code есть не мало плагинов, но каждый раз, добавляя очередной плагин, ловил себя на мысли:

  1. Этот плагин ужасен и неудобен в работе.
  2. Мой VS Code начинает превращаться в неповоротливую IDE, от которой уходил, что само по себе начало ухудшать мой опыт использования обычного редактора текста.

Lua-скрипт, безопасно удаляющий ключи Redis по шаблону

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

Обычно это решается простым скриптом (чаще всего пишут на python), но я захотел очень сильно сделать это через Redis CLI…

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

На помощь пришел Lua.

Lua-скрипт, безопасно удаляющий записи по ключу “example-key”:

1
EVAL "local cursor='0' local deleted=0 repeat local r=redis.call('SCAN',cursor,'MATCH','example-key:*','COUNT',5000) cursor=r[1] if #r[2]>0 then deleted=deleted+redis.call('DEL',unpack(r[2])) end until cursor=='0' return deleted" 0

Задачу свою решил, но это было неудобно.

Один инструмент - одна ответственность

Хорошо писать код в одном приложении и в том же приложении манипулировать данными, но как будто SRP работает и здесь: код мы пишем в редакторе текста, а данными в БД управляем в другом месте.

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

После опыта написания Lua-скриптов в Redis CLI поймал себя на мысли, что нужно переходить на удобные инструменты, которые специализируются на работе с базами данных.

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

Все-таки очень важно не замыкаться на одном инструменте (как я когда-то, перейдя на VS Code).

Проанализирйте

  1. Где вы пишите код?
  2. Что используете для работ с БД?
  3. Как тестируете API?
  4. Что используете для проксирования запросов?

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

Каждый месяц появляются все новые и новые инструменты, способные решить, возможно, именно вашу проблему.

Мой сетап для разработки

  1. Редактор: VS Code, но смотрю в сторону Vim/Neovim (так как чувствую, что могу еще ускорить свою работу)
  2. Работа с БД: пока CLI + плагины на VS Code, но планирую перейти на что-то более удобное (DataGrip, DBeaver)
  3. Тестирование API: перешел с Postman на Bruno из соображений безопасности
  4. Проксирование: Proxyman

Запомнить: самое главное, чтобы вам было комфортно.

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

Читайте другие посты и присоединяйтесь к обсуждению темы в Телеграм: @time2code