В начале своего пути каждый программист сталкивается с кажущимся простым, но неожиданно сложным вопросом: какой текстовый редактор или IDE мне следует использовать?

Я надеюсь, что я не единственный, у кого были почти экзистенциальные кризисы по этой теме, но я буду первым, кто признает, что это правда. По общему правилу разработки программного обеспечения всегда следует выбирать подходящий инструмент для работы, но с текстовым редактором все не так просто. Быстрый поиск в Google «какой текстовый редактор мне следует использовать» обнаруживает множество вариантов для различных сценариев использования с несколькими явно убедительными претендентами. К ним относятся большие IDE, которые часто в подавляющем большинстве содержат множество функций, но, тем не менее, многофункциональны, а также легкие текстовые редакторы со слишком небольшим количеством функций, чтобы стать убедительным аргументом в качестве штатного редактора. Я не буду подробно останавливаться на этом, но достаточно сказать, что есть много вариантов.

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

Но почему? Эта статья вовсе не пытается убедить программистов перейти на Vim, а пытается обратить внимание на причины, лежащие в основе наших решений. Когда я решил использовать Vim, я могу пообещать, что в моей голове послышался тихий голос, который сказал: «Ну, это сложнее всего в использовании, а умные люди в Интернете говорят, что это лучший вариант, так почему бы и нет!». Это тот же образ мышления, который заставил меня переключиться с Ubuntu на Arch Linux, использовать tmux без уважительной причины и писать программы на C, когда Python может подойти. В Vim нет ничего плохого, и многие рекламируемые преимущества верны, но важно понимать движущие факторы для перехода с одного инструмента на другой.

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

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

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

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