Я работаю программистом уже почти десять лет. И, как и для каждого, кто посвящает работе до 2/3 суток, удобный инструментарий имеет для меня огромное значение. Сегодня я хочу как следует порефлексировать, поэтому статья выйдет слегка необычной. Сразу же хочу дать дисклеймер: всё, что вы прочтете ниже, носит субъективный характер. Поэтому будьте открыты и снисходительны.
Приблизительно 2010 год — Notepad и все-все-все
Делая первые шаги в Java, я писал код в Notepad++. Да-да, я был тогда молод и простительно невежествен. Тогда я понятия не имел, что такое редактор кода. Мне казалось, что это просто Notepad с дополнительными кнопками.
Основное внимание я уделял изучению программирования, а DX (Development Experience) отошел на второй план. Единственно интригующим было то, что я мог запускать код с помощью плагина, нажимая на функциональную клавишу. Это давало большое преимущество по сравнению с работой в Notepad и командной строке Windows.
Ключевые моменты
-
Хорошо, когда можно писать и выполнять код в одном и том же месте.
Два года спустя — Eclipse
К этому времени я уже вполне мог писать приличный код сразу на нескольких языках. В какой-то книжке, не помню точно, автор советовал обратить внимание на такую замечательную вещь как Eclipse. Я попробовал и втянулся. Впервые инструментарий стал вызывать у меня привыкание. Удовольствие от написания, сборки и запуска Java Swing-приложений без погружения в системы сборки и исполнения было просто... непередаваемым.
Интернет был тогда невелик, поэтому я часто копался в оффлайновой документации, пытаясь разобраться в проблеме. Временами это было крайне нудно и утомительно, но другого выхода я не видел. И вот впервые я задумался о том, что Eclipse ведет себя вовсе не так, как моя предыдущая программа. Я еще не знал слова IDE. Мне хватало того, что Java работает на трех миллиардах устройств, и я должен хорошо в нем разбираться.
Ключевые моменты
-
Очень хорошо, если ваша программа может самостоятельно позаботиться о конфигурации.
-
Еще лучше, если программа подскажет, что писать дальше.
2014 — Знакомство с Linux и VI
Я купил себе новый синий ноутбук. На наклейке надпись: «Ubuntu». Что это за штуковина? Где мой DVD-диск с пиратской Windows и ключом активации, написанным на обратной стороне? Я сходил в школьную библиотеку, и, Боже, обнаруженная там книга по Unix вызвала у меня радостный трепет. Тогда я решил с концами пересесть на Linux (и, спойлер, больше так и не касался Windows).
Однако я не понимал, почему чудаки из интернета постоянно пишут, что редактировать конфигурационные файлы нужно с помощью какого-то VI. Кому охота открывать терминал, добираться в нем до искомого файла и запускать этот жуткий vi, из которого даже выйти невозможно?
Как ни печально, но изучение vi входило в учебную программу колледжа, и мне приходилось в нем работать. Но я все равно так сильно его ненавидел, что написал особый конфиг для gedit, лишь бы профессору казалось, что я работаю в терминале.
Ключевые моменты
-
Никогда не требуйте от людей достигать поставленных целей сугубо с помощью вашего любимого инструмента. Имеет смысл лоббировать ту или иную идею, но лишь для того, чтобы проверить, найдет ли она отклик у людей.
-
Все разработчики обязаны пользоваться Linux. Никаких исключений. (Личное мнение: я считаю macOS также дистрибутивом Linux).
2017 — Возвышенное (Sublime) искусство кодить
И вот все стало налаживаться. Я определился с выбором профессии веб-разработчика. Часто писал небольшие утилитарные приложения. И в очередной раз книжка, которую я читал, подсказала мне, что Sublime Text — это моя новая среда разработки. Круто, я в деле!
Есть в нем кое-что, что близко моему сердцу. Это возможность гибко настраивать редактор при помощи JSON-файлов. Я провел целую неделю, подправляя что-то в файле настроек. Это было почти волшебством — скопировать JSON-файл на USB-накопитель и сделать компьютер приятеля похожим на мой.
В конце концов «моя» версия Sublime стала выглядеть как совсем другое приложение. По сей день я остаюсь убежденным фанатом райсинга (модный термин, обозначающий тонкую настройку ПО под себя). И да, мне, как и пользователям WinRar, совершенно начхать на постоянные поп-апы Sublime с просьбой купить его.
Ключевые моменты
-
Sublime очень хорош для своего пула задач.
-
Единственная причина, по которой он «провалился», — это идеологическое сходство с VS Code, у которого есть корпоративная поддержка и прекрасное сообщество. Разработчики потихоньку перебрались из Sublime на VS Code, а, как известно, никто не разрабатывает плагины для программ, которыми лично не пользуется. И опять же Vim — он и рядом не стоит с Sublime и его мощным графическим интерфейсом, однако сообщество упорно поддерживает его десятилетиями..
2019 — Взлет VS Code
Я чувствовал, что становлюсь старше и профессиональнее. Sublime Text был для меня как на ладони. Каждая привязка клавиш и каждая конфигурационная опция жили в моей голове. Не говоря уже о множестве расширений, хорошо настроенных под мой рабочий процесс.
В тот момент потеря папки с конфигами Sublime внушала больше опасений, чем пропажа самого ноутбука. Шучу, тогда я уже знал git. Но в офисе требовалось работать сугубо в VS Code, поэтому еще месяц я потратил на его настройку.
В конце концов, я сам изумился тому, какое чудище Франкенштейна у меня получилось. Мой VS Code выглядел как Sublime, работал как Sublime, а запускался дольше и тяжелее, чем старый-добрый Eclipse. Хуже всего было то, что senior ругался последними словами всякий раз, когда пытался отлаживаться на моей машине. Типичная проблема хакера, ничего удивительного.
Мне чертовски нравится экосистема расширений VS Code. Можно сидеть в редакторе и чувствовать, что под его капотом редактора что-то большое и умное. В нем было то, чего мне не хватило в Sublime. По сей день VS Code остается моим любимым инструментом для написания кода. Если что-то можно запрограммировать, то это обязательно будет происходить в VS Code. Мне он кажется современной версией emacs.
На собственном опыте я ощутил разницу между языками строгой и динамической типизации. В те дни я работал с Ruby on Rails, а динамически типизированные языки — это кошмар любого редактора. Убейте, но я ненавижу Ruby, Python, JavaScript и т.д., несмотря на то, что ежедневно пишу на них по естественным причинам. Иногда я даже прихожу поскулить и поскрестись под двери JetBrains.
Ключевые моменты
-
У VS Code была концепция универсального редактора. И сообществу удалось претворить ее в жизнь.
-
Ядро VS Code — жесткое и продуманное, а поверх него можно делать всё, что душе угодно.
-
Его благословение оборачивается и его проклятием. Поскольку каждый может легко и быстро написать расширение (а зачастую «легко и быстро» превращается в «тяп-ляп, вот вам плагин»), VS Code зачастую безосновательно упрекают в тяжести и медлительности.
2021 — Стремление к совершенству
Что такое ОКР, спросите вы? Это состояние, когда ты слишком строго относишься к тому, как все должно быть устроено. Возможно, кому-то это покажется скорее достоинством: мол, вау, это же круто, но по факту это история про «А-а-а! Края стола не параллельны краям ноутбука, паника!».
К тому же, я легко отвлекаюсь, поэтому мне нужна максимально сосредоточенная обстановка. Я отвлекся от написания этой статьи, чтобы поискать картинку выше, а вернулся лишь прочитав о фильме, из которого взялся этот мем...
Мне нравится, когда обе среды, как снаружи, так и внутри ноутбука, выглядят предельно минималистично. Посмотрите на скриншоты в конце статьи. Там даже иконок «скрыть-развернуть-закрыть» нет. Тюнинг всего, от расстояния между буквами в шрифтах до паддингов во всплывающих окнах, волнует меня не по-детски. Мне доставляет огромное удовлетворение заниматься подобными вещами, и если поискать в Гугле «Unix ricing», вы поймете, о чем я.
Однако в последнее время у меня стало болеть запястье из-за постоянных прыжков с букв на стрелки курсора. Работа по 80 часов в неделю имеет свои «плюсы». 😅
Я погуглил об этой проблеме и, как ни странно, одним из советов было использование Vim (-mode) на компьютере. Коварный vi! Пока я не запустил его, я даже не понял, что это он меня настиг. Во мне тут же вскипела застарелая ненависть.
Для серверных нужд я пользовался Nano. Позже перешел на micro, который был по своему функционалу ближе к VS Code. Многие годы я делал всё, лишь бы снова не столкнуться с vi, моим заклятым врагом. А еще я настолько погряз в своих диких привычках, что буквально каждый инструмент, которым я пользуюсь, должен обеспечивать мне дикий микс из хоткеев Sublime и VS Code.
Боже! Я ненавижу себя. Я даже не могу пользоваться чужим компьютером, на котором установлена чистая версия этого ПО. С годами я забыл о том, как в свое время ценил awk, sed, grep и т.д. Настало время меняться. Нельзя и дальше жить в таком постыдном отрицании.
Ключевые моменты
-
Делайте то, что приносит вам удовольствие, а не только то, что позволяет сбежать от реальных проблем.
-
Все мы живем в отрицании чего-либо. Это нормально — рано или поздно наступит ваш черед испытать осознанность.
-
Изучите основные (gnu-) инструменты Linux.
-
В долгосрочной перспективе их преимущества будут неоценимы.
2022 — Привыкание к Vim
Я решил перейти на Vim. Не потому, что он лучше подходит для моего конкретного рабочего процесса, а потому, что хотел покончить с зависимостью от VS Code.
Да, я понимал, что все равно не смогу работать в Vim в офисе. Но дома — пожалуйста. Кстати, я премного благодарен YouTube'ру по имени Бен Авад, который открыл мне спокойный способ миграции на Vim.
Тогда меня ничего особенно не удивляло в Vim, потому что буквально каждая его фича могла быть реализована сочетанием клавиш в VS Code. Тем не менее постоянная путаница между редакторами изматывала. Я даже специально отключил Vim для всех папок моих рабочих проектов.
Уже к концу года я мог свободно перемещаться в VS Code, используя комбинации клавиш из Vim. И даже начал видеть в последнем эргономические и функциональные преимущества.
Ключевые моменты
-
Нужно быть практичным и последовательным. Сначала научиться ходить, чтобы потом бегать.
-
Соблазн достичь того, что у других не получается, является хорошей мотивацией.
-
Личной силы воли не хватит, чтобы исследовать эти неосвоенные территории. Без катализатора и сильной мотивации не обойтись.
2023 — Окончательная миграция
С моей стороны было чертовски глупо думать, что в один прекрасный день я удалю VS Code и перейду на Vim, потому что смогу работать в нем ничуть не хуже. Я не осознавал, что использую Vim для выполнения действий а-ля VS Code. Все, чему я научился, сводилось лишь к нескольким новых сочетаниям клавиш. VS Code к этому моменту уже захватил контроль над моей личностью. В нем я мог молниеносно просматривать код, и это вызывало уважение коллег. Поэтому я вздохнул и вернулся к старой парадигме, оставив Vim в прошлом.
Я был рад уметь делать все, что и эти «ботаники» из Vim, но осознавал: это не моя зона комфорта. Проблема заключалась в том, что я использовал VS Code с гибридной привязкой клавиш, а теперь попытался заменить этого кадавра на что-то совсем другое. Странное решение, не правда ли?
К счастью, недавно выдался перерыв в работе над офисными проектами, и я понял, что это тот самый шанс, чтобы изменить свои установки. Я осознал, что переход с Sublime на VS Code не доставил мне никаких проблем, он проходил в удовольствие. Я снова открыл Neovim. Это было болезненно, но у меня был план. Всякий раз, когда мне чего-то не хватало, я читал документацию по Neovim и добавлял функции.
Меня радует, что я сам, сознательно написал каждую строчку своего конфигуратора редактора. Это заняло целых два месяца, но теперь у меня есть собственная милая маленькая PDE (Personal Development Environment).
Это охватывало все — от величины отступов по умолчанию до дерева файлов и языковых серверов. Позже я посмотрел на YouTube видео от ThePrimeagen о настройке Neovim, и оно настолько меня перегрузило, что мне пришлось взять недельный перерыв на обдумывание собственной конфигурации. 😂
Ключевые моменты
-
Примите к сведению теорию айсберга. В первую очередь заметна часть, торчащая над водой, а не вся та работа, которая потребуется для понимания основ.
-
Моей самой большой мотивацией для окончательного перехода был шлейф величия, окружающий Vim как программу. Все, что показано на скриншотах ниже, — это текст в окне терминала, никаких изображений, никаких реальных кнопок или какого-либо графического интерфейса. Это даже не настоящие иконки. Это действительно сложно — и сделать, и понять. Нельзя изменить шрифты или их размер. Всё, что есть у вас в распоряжении — это аккуратное манипулирование текстом в черном окне терминала. Я невероятно уважаю людей, которые создали все это.
Сегодняшний день
Теперь, когда я полностью перевел свои рабочие процессы на Neovim, я не ощущаю разницы. Я уже привык к биндингу Vim, изменилась только эстетика. Но самое приятное заключается в том, что я понимаю, как работают все его составные части.
Я знаю, как работают сообщения об ошибке в строке, откуда берутся все эти автозаполнения, как форматируется каждая строка и многое другое. Теперь, когда я вижу что-то, я размышляю о том, как это сделать, а не о том, как это использовать.
В конце концов, я инженер, и моя личность вращается вокруг двух основных вещей: насколько хорошо я разбираюсь в программном обеспечении и что я могу создать/создаю
Скриншоты моего кодерского сетапа
К сожалению, я не могу подробно описать все экраны и утилиты, но если вам понравится эта конфигурация, я могу написать статью о том, как все настроить с нуля. Своего рода подробное руководство по основам применения терминала и наладке Vim.
Хотите попробовать мой сетап? Скачайте его отсюда: https://github.com/sameer1612/.dotfiles
Ответы на вопросы
-
Сделает ли меня более компетентным разработчиком использование Vim?
— Да, я могу это гарантировать -
Сложно было перейти на него?
— Не слишком-то. Дело ограничилось изучением пары сотен новых горячих клавиш, lol. Но у меня есть собственное «кунг-фу» для их быстрого изучения. -
Почему ты так на этом зациклен? Это всего лишь редактор! Работа – это то, что ты в нем пишешь, а не он сам.
— Вы хотите стать инженером или кодописателем? Подумайте и скажите прямо сейчас. Хорошо, что вы выбрали инженера. А теперь подумайте снова: как много вы упускаете за слоем абстракций, которые создает для вас привычное рабочее окружение. Вы же не хотите быть инженером со слабыми фундаментальными знаниями, ведь так? -
Выглядит очень сложно. А я вывезу?
— На это ушло два года, несколько раз я бросал это дело, и все получилось лишь когда я начал с нуля и постепенно наращивал функциональность. Теперь это мое детище. Я не могу отозваться о нем плохо. Интерес — это не когда ты выбираешь что-то, чем будешь заниматься. Настоящий интерес приходит, когда ты вкладываешь во что-то много усилий.
Автор:
omyhosts