Эти 3 инструмента сделали меня гораздо лучшим программистом
Вероятно, вы похожи на меня и испытываете ненасытную жажду нового программного обеспечения, чтобы утолить своё любопытство. Существует огромное количество полезных приложений. Некоторые приложения настолько мощные, что могут изменить то, как вы думаете и работаете. Вот три инструмента, которые коренным образом изменили меня как программиста.
Neovim: Мечта Кулибина
Будь то функциональные возможности, расширяемость или легкость редактирования, Neovim позволяет мне создавать именно ту среду, которую я хочу, и сосредоточиться исключительно на коде, улучшая мою эффективность и общий опыт разработки.
Бесконечные эксперименты и индивидуальная настройка
Neovim — это высоко настраиваемый текстовый редактор с некоторыми продвинутыми функциями редактирования кода, сопоставимыми с другими редакторами кода, такими как VS Code. Не все функции VS Code полностью совпадают, но ответ Neovim — бесконечная настраиваемость.
Neovim имеет обширную систему плагинов, и постоянно появляются новые плагины, пополняя экосистему. Бесконечные эксперименты с моей системой полностью погрузили меня в программирование; я пишу код не только для создания приложений, но и для того, чтобы писать код лучше. Если что-то мешает мне, я могу установить плагин или написать код сам.
Лёгкое редактирование
Самое большое преимущество Neovim заключается в том, как легко он делает редактирование текста. Перемещение, изменение и удаление слов без особых размышлений действительно освобождает. Я чувствую, что типичный графический интерфейс редактирования громоздок и только мешает. Neovim позволяет мне сосредоточиться исключительно на значении кода, а не на процессе редактирования. Я ощущаю себя ближе к коду. Мои идеи проявляются на странице, без необходимости думать о механике редактирования. Но на этом преимущества не заканчиваются, потому что Neovim имеет первоклассную поддержку Tree-sitter, и это лишь делает редактирование еще лучше.
Tree-sitter — это специальный язык, который можно настроить так, чтобы он понимал практически любой структурированный текст — языки программирования, разметку markdown и даже специализированные синтаксисы, такие как Typst. Tree-sitter позволяет пользователям обрабатывать текст специфическим для конкретного языка образом. Например:
- Навигация: переход от одной функции к другой или к определённым частям функции.
- Выбор и перемещение целых блоков if-else без копирования и вставки.
- Перестановка аргументов в функции без копирования и вставки.
Только ваши способности ограничивают то, что вы можете сделать. Neovim поставляется со многими конфигурациями Tree-sitter (называемыми диалектами), и в дикой природе существует еще намного больше.
Система продажи билетов: создавайте свои билеты, а затем закрывайте их
При управлении крупным проектом невозможно помнить каждую задачу, которую нужно выполнить. Когда вы пишете небольшой скрипт (< 1000 строк), вы точно знаете, что находится прямо перед вами: что вы пишете и что нужно написать — у вас есть чёткая цель в голове, и вы видите финишную черту.
Для крупных проектов, охватывающих несколько пакетов, репозиториев и десятки тысяч строк кода, невозможно запомнить весь постоянно растущий список задач, которые нужно выполнить. На самом деле даже частые переключения между пакетами для внесения небольших изменений часто приводят к потере концентрации. Именно здесь на помощь приходит система тикетов.
Для тех, кто не знаком с этим термином, система тикетов очень похожа на систему задач: каждая задача является тикетом, который описывает отдельную проблему — например, баг или функционал. Сила системы заключается в том, как вы организуете эти тикеты: вы можете их помечать тегами или размещать на доске Канбан.
Доска Канбан состоит из набора колонок, и каждая колонка представляет состояние задачи. Мне нравится использовать следующие состояния: бэклог, следующий, в процессе и выполнено. Сама доска Канбан представляет проект или цель — например, «реализовать аутентификацию». Каждая задача — это небольшая единица работы, которая способствует достижению этой цели. Например, «создать таблицы базы данных». Когда вы создаёте задачу, она попадает в колонку «бэклог». Когда вы хотите обработать задачу в ближайшее время, она перемещается в колонку «следующий». Я уверен, вы можете догадаться о остальном.
Со временем, когда вы работаете над своим кодом, вы неизбежно обнаружите проблемы, исправление которых в данный момент займет слишком много времени. Именно тогда вы создаете тикет, помечаете его, и если он относится к конкретной цели, добавляете его на соответствующую доску Канбан.
У меня обычно открыто 1–2 проекта (доски Канбан), которые представляют собой задачи, которые я планирую выполнить в ближайшем будущем.
Слишком дальнее планирование может сделать вашу работу негибкой, и вы тратите больше времени на перестановку своего плана, чем хотели бы.
Использование системы тикетов необходимо, если ваш проект занимает больше недели или двух. До того как я начал использовать её, я часто начинал день, тупо глядя на свой код и пытаясь понять, какой следующий логический шаг. Это неправильный способ организации программного проекта, и предварительное планирование задач освобождает вас от постоянной остановки в работе. Вы выполняете обдумывание заранее и освобождаете себя для сосредоточения на коде.
GitHub предлагает отличную систему тикетов с доской Канбан — они называют это проектами. Вы можете создавать глобальные проекты или проекты, привязанные к конкретному репозиторию. Кроме того, если вы используете гибкую систему ведения заметок (например, Org-Mode, которая будет рассмотрена далее), которая позволяет легко переставлять задачи, это также подходит; однако стоит иметь в виду сотрудничество с другими.
Org-Roam: Продвинутая система заметок
В последнем разделе я упомянул Org-Mode, пакет для Emacs, который позволяет быстро переставлять заголовки, помечать их тегами и даже превращать их в задачи. Org-Mode — это действительно огромный пакет с сотнями функций — после шести лет использования я еще не освоил всё, что он предлагает.
Org-Roam — это ещё один пакет для Emacs, построенный на основе Org-Mode. Org-Mode обеспечивает базовое оформление документов и бесконечный список функций для их редактирования; Org-Roam предоставляет возможности для создания ссылок, позволяя связывать заметки в графе. Он работает очень похоже на гиперссылки в Интернете.
Будучи программистом, вы всегда учитесь. Независимо от того, изучаете ли вы новый фреймворк, библиотеку или язык — все это абсолютно огромные темы, и на их освоение уходят годы. У этих технологий много аспектов и особенностей, что означает, что ваше обучение никогда не заканчивается. Чтобы запоминать все, что вы изучаете, вам нужен эффективный способ систематизации отдельных идей в места, откуда их легко извлечь. Использование традиционной системы заметок здесь не подходит; вместо этого нужно четко отделять каждую идею, как это делают веб-страницы в интернете. Также необходим способ быстрого поиска по вашим заметкам. Org-Roam предоставляет оба этих инструмента.
Рабочий процесс у каждого будет разным, но мой заключается в том, чтобы создавать одну заметку для каждой идеи и размещать ссылки в нескольких других заметках, которые служат как индексы. Ниже вы можете увидеть пример.
Детали в кратких изложениях были бы гораздо полезнее на реальном примере. Подробные резюме помогают поддерживать ваше понимание изученных идей, особенно если вы регулярно просматриваете свои заметки.
Этот подход позволяет мне получить краткий, хорошо организованный и тематический обзор всего, чему я научился. Когда я позже пересматриваю эти записи, я часто заново изучаю большую часть материала всего за 10 минут. В отличие от традиционных систем ведения заметок, обновление знаний по языку, которым я давно не пользовался, никогда не утомляет мой ум, потому что информация настолько доступна.
Что ещё более важно, система заметок на основе графа позволяет организовывать двусторонние связи. Вы выделяете определённые ключевые слова в своих заметках и связываете их с другими заметками. Эти ссылки называются обратными ссылками, и они делают блок текста видимым в другой заметке. Обратные ссылки очень мощные, потому что они часто обнаруживают давно забытую информацию.
Org-Roam — это не единственная система ведения заметок, которая предоставляет мощную функцию обратных ссылок. Однако она уникально интегрируется с пакетом Org-Mode. Эти два пакета объединяются, чтобы интегрировать мои списки дел с моей личной базой знаний.
Как вы можете видеть на скриншоте выше, задачи — это просто заголовки в Org-Mode с ключевым словом «TODO» перед ними. Org Agenda (часть пакета Org-Mode) их подхватывает и отображает в специальном буфере. Так как мы также используем Org-Roam, мы можем связывать их с любыми другими заметками в Org-Roam.
Другие похожие системы, которые гораздо проще в использовании, это Obsidian и Logseq — обе подходят для тех, кто просто хочет работающую систему. Org-Roam и Emacs предназначены для тех, кто хочет высоко настроенный рабочий процесс — то есть для программистов.
У меня есть целая статья, посвящённая тому, почему я предпочитаю использовать Neovim, которая может быть вам полезна. У нас также есть статьи о том, как использовать Obsidian для ведения заметок или для ведения дневника; обе эти статьи служат хорошим введением в Obsidian.
Если Org-Roam вызвал у вас интерес, посетите страницу Org-Roam, чтобы узнать о нём больше. Вам также, возможно, стоит изучить Org-Mode. Если вы новичок в Emacs, настройка может быть сложной, но Doom Emacs значительно упрощает этот процесс, и это моя выборная дистрибуция Emacs.






Добавить комментарий