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

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

Как повысить продуктивность разработчиков?

1. Программирование без мыши

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

Даже если вы время от времени пользуетесь мышью (в некоторых случаях это может быть полезно), преимущества программирования без мыши слишком хороши, чтобы их игнорировать:

  • Меньше отвлекающих факторов и переключения контекста для вашего мозга.
  • Более высокая скорость: вы можете буквально работать со скоростью мысли.
  • Меньше физических движений: не нужно двигать руками («Где моя мышка?» — «Черт! Я только что опрокинул свою чашку чая…»).

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

Если вы хотите посмотреть видео на эту тему, рекомендую Часть I и особенно Часть II из серии Codurance.

2. Изучите ВИМ

Какие-то закатывающиеся глаза! 🙂 VIM нравится не всем. И лихорадочные, и ненавистные люди наводняют Интернет (пользователей Emacs тоже лучше не добавлять в священную войну). Это нормально. У VIM очень специфический способ работы. Но, пожалуйста, учтите это:

Даже если VIM не является вашим любимым редактором.

Даже если вы страстно ненавидите VIM.

Даже если вы никогда больше не воспользуетесь им.

Сделайте одолжение и изучите VIM.

Зачем изучать ВИМ?

Хирургическое редактирование текста

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

VIM рекомендует использовать точные движения (команды для перемещения), чтобы перейти прямо к делу. Например, используя мнемонику f, вы можете найти конкретный символ в текущей строке вместо многократного перемещения курсора. Некоторые плагины даже позволяют идти дальше и выполнять поиск по документу.

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

Программирование без мыши

Кодирование в VIM поможет вам привыкнуть к программированию без мыши. Даже если вы перейдете на полноценный готовый редактор или IDE. Даже если вы больше никогда не запустите VIM.

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

Чрезвычайно настраиваемый

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

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

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

Интеграция с VIM повсюду

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

То же самое касается некоторых приложений TUI (см. следующий раздел в этой статье). Многие из них поддерживают движения VIM.

Даже в некоторых браузерах есть расширения для перемещения, как если бы вы использовали VIM (см. следующий раздел).

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

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

3. Установите расширение для браузера Vimium.

Больше ВИМ!

Vimium помогает с просмотром без мыши. Вы можете использовать движения VIM для перемещения. Некоторые из движений, которые я использую:

  • k и j для перемещения вверх и вниз.
  • h и l для перемещения влево и вправо.
  • H, чтобы вернуться назад.
  • L для перехода вперед.
  • gg для прокрутки вверх страницы.
  • G для прокрутки вниз страницы.
  • / для поиска текста (хотя обычно я использую функцию поиска в браузере).
  • f, чтобы найти кликабельный элемент (подробности см. ниже).
  • ? для отображения экрана справки, удобного для просмотра списка ярлыков.

Чтобы открыть ссылку, нажмите f, и он покажет ярлык для каждой ссылки:

Затем нажмите комбинацию клавиш для нужного кликабельного элемента.

Если вы хотите, чтобы ссылка открывалась на новой вкладке, нажмите F вместо f в обычном режиме (до того, как увидите ярлыки для каждой ссылки).

Полный список горячих клавиш можно найти на веб-сайте Vimium.

4. Изучите ярлыки трех ваших лучших инструментов

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

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

Текстовый редактор/IDE

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

Вам не нужно начинать изучать их все. Найдите самые повторяющиеся задачи, а затем сначала изучите быстрые клавиши для них. Стремитесь к правилу 20/80.

В некоторых IDE, таких как IntelliJ или VSCode, есть ярлык для открытия списка действий. Это первое сочетание клавиш, которое вы должны выучить. Откройте список действий, начните вводить то, что вы хотите сделать, и нажмите Enter. Как правило, вы также можете увидеть фактическое сочетание клавиш для действия, чтобы вы могли изучить их во время поиска.

Терминал

Существует не так много ярлыков, которые вам нужно научиться использовать в терминале. Но если вы используете что-то вроде iTerm или Kitty, вам, вероятно, захочется выучить ярлыки для:

  • Откройте новую вкладку или окно.
  • Закройте вкладку или окно.
  • Откройте новую панель.
  • Закройте панель.
  • Перемещайтесь по панелям.

Браузер

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

  • Откройте новую вкладку.
  • Откройте новую вкладку в режиме инкогнито.
  • Перемещение между вкладками.
  • Закрыть вкладку.
  • Откройте новое окно.
  • Переключите инспектора.

5. Изучите слепую печать

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

Для программистов важно не отвлекаться и сосредоточиться на том, что мы делаем. Мы можем потерять фокус, если будем постоянно смотреть на клавиатуру, чтобы найти какие-то клавиши. Сенсорная печать особенно важна, если вы используете VIM в любой форме, так как вам нужно использовать клавиатуру чаще, чем «обычно».

Не зацикливайтесь на скорости (60–70 слов в минуту достаточно). Точность намного важнее. Вы же не хотите проклинать текстовый редактор, когда находитесь в середине реализации критической части того, над чем работаете.

Существует множество инструментов для изучения слепой печати. Очень важно выучить его с самого начала, используя правильные пальцы. Если вы хотите изучить или отточить свои навыки, вам могут помочь два инструмента:

  • TypingClub: я не пользовался этим, но там есть видео, и он выглядит очень хорошо организованным. Это геймифицировано, что может помочь сохранить мотивацию.
  • Исследование слепой печати: это инструмент, который я использовал несколько лет назад, когда TypingClub не существовало (или не было так популярно). Я бы по-прежнему рекомендовал этот инструмент, если вы просто хотите сразу перейти к делу. Это бросит вам вызов и заставит повторять сложные комбинации, но заставит вас совершенствоваться.

6. Используйте полноэкранный режим

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

Где использовать полноэкранный режим?

В вашем редакторе

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

Большинство графических редакторов и IDE также поддерживают полноэкранный режим.

В вашем браузере

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

Вы можете подумать, что будет сложно переключать вкладки в полноэкранном режиме. Но Chrome предоставляет ярлык для перехода на определенную вкладку. В Windows и Linux вы можете ALT+num перейти к 9 различным вкладкам.

«Но 9 вкладок — это очень мало вкладок!»

Это спорно, безусловно. Я не буду утверждать, что я здесь. Но я считаю, что наличие более 9 открытых вкладок снижает производительность. Наличие десятков открытых вкладок — еще одна умственная нагрузка, еще одно отвлечение вашего мозга. И вы не можете получить доступ к вкладкам после # 9 с помощью ярлыка (вы можете получить доступ к последней, самой правой вкладке, с помощью ALT+0).

Когда я работаю с несколькими веб-приложениями одновременно и мне нужно сосредоточиться, мне нравится, когда они находятся в одном окне браузера и перемещаются между ними с помощью ярлыков. Должна быть возможность запоминать положение до 9 вкладок и быстро перемещаться между ними двумя нажатиями клавиш. Это изменило правила игры для меня.

Повсюду

Я рекомендую вам использовать другие инструменты в полноэкранном режиме, если они поддерживаются. Я использую полноэкранный режим на таких вещах, как моя DAW (Digital Audio Workstation), когда я создаю музыку, и почти в любом приложении, которое поддерживает этот режим.

7. Инструменты TUI (интерфейс терминала)

Существует множество инструментов пользовательского интерфейса терминала, особенно в мире Linux. Как правило, они просты и быстры в использовании.

Есть все виды приложений TUI. Для получения исчерпывающего списка, пожалуйста, проверьте awesome-tuis.

Поделюсь теми, которыми пользуюсь лично:

Неовим

Мы уже говорили об этом. Просто установите его, если вы еще этого не сделали.

Рейнджер

Рейнджер — терминальный исследователь. Он поддерживает движения VIM, если вы к этому привыкли.

Преимущество проводника терминала в том, что его можно запустить из свободного окна терминала или из текущего окна (используйте CTRL-z, чтобы выйти из текущего процесса, сделать что-нибудь, а затем вернуться с помощью fg). Это намного быстрее, чем навигация в проводнике файлов с графическим интерфейсом.

Рейнджер существует уже некоторое время. Он немного устарел, но все еще работает очень хорошо.

8. Научитесь использовать Git на терминале

Кто-то не согласится, но я объясню свою мысль.

Git уже давно стал популярной системой контроля версий. Тому, кто недостаточно понимает Git, как разработчику программного обеспечения придется нелегко.

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

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

Изучение того, как использовать Git на терминале, даст вам представление о том, что Git делает на каждом этапе. Даже если вы решите перейти на графический интерфейс позже, борьба с терминалом, пока вы не освоите Git, будет полезна на долгие годы.

Я до сих пор регулярно использую Git на терминале. Я использовал его в течение многих лет после того, как узнал, что некоторые хакеры все еще используют его. Я так многому научился с помощью терминала, что люди обычно прибегают ко мне для решения своих проблем с Git. Сейчас я предпочитаю использовать vim-fugitive, потому что это потрясающе. Но я все еще использую Git на терминале, если нужно (например, на удаленном сервере).

9. Изучите TDD (разработка через тестирование)

В наши дни TDD обычно считается одним из столпов современной разработки программного обеспечения. Изучение TDD поможет вам:

  • Думайте сначала с точки зрения пользователя: TDD означает, что ваш тест будет первым вариантом использования вашего производственного кода. Это помогает писать общедоступные API, которые просты в использовании. Это также помогает думать с точки зрения конечного пользователя.
  • Привыкайте думать о пограничных случаях: когда вы используете метод TDD для своего кода, вы неизбежно будете думать о других способах взлома вашего кода.
  • Получение постоянной обратной связи.
  • Работа небольшими итерациями, повышение уверенности.
  • Уменьшение количества ошибок.

И длинный и так далее, который может заполнить страницы и страницы.

10. Разделенный экран

Это особенно полезно для сочетания тестового и производственного кода. Я не могу поверить, как мало людей используют этот хак.

Наличие рядом тестов и производственного кода значительно экономит умственную энергию по сравнению с зацикливанием между вкладками. Если у вас также есть широкоэкранный монитор, добавьте свой терминал с запущенным с одной стороны наблюдателем за тестами. Разместите тестовый код слева, производственный код посередине и наблюдатель за тестами справа. Ваш поток TDD взлетит до небес.

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

11. Найдите систему продуктивности, которая соответствует вашим потребностям

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

У каждого свои причуды, и рекомендовать конкретную систему продуктивности не имеет особого смысла. Но я могу поделиться моей системой продуктивности, которая хорошо работает для моего рассеянного мозга, если она поможет кому-то еще. Это смесь Календаря Google, Google Keep, Trello и заметок Post-It.

Календарь Google

Этот инструмент изменил мою жизнь по-настоящему. Планирование задач и получение уведомлений помогают мне не забывать делать важные дела.

Я использую Календарь Google для:

  • Назначение задачи на определенный день и время.
  • Время Блокирование ключевых временных интервалов, если мне нужно больше внимания.
  • Дни рождения и другие нерабочие мероприятия. Это помогает очистить умственное пространство и обрести душевное спокойствие, зная, что вы не забудете.

Google Keep

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

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

Но Google Keep отлично справляется с отслеживанием несвязанных вещей и возможностью делиться ими с другими.

Есть и другие инструменты, такие как Notion, которые выглядят более мощными, но я их еще не пробовал. После многих лет борьбы я предпочитаю, чтобы в наши дни все было просто. Так что я пока останусь с Google Keep.

Трелло

Я использую Trello для создания канбан-досок для определенных проектов (этот блог!). Он обеспечивает гибкость и функции, которых не хватает Google Keep (по дизайну). И это становится все лучше и лучше.

Однако мне не нравится использовать Trello для захвата случайных вещей. Я использую Google Keep для этой цели, как я уже упоминал ранее. Мне трудно не забыть открыть Trello или запечатлеть что-то на ходу.

Почтовые заметки

Цифровой это хорошо. Я цифровик. Но я часто забываю открывать вышеупомянутые инструменты для ежедневного планирования. Заметки Post-It или даже просто лист бумаги — это последний кусочек моей головоломки.

Мне нравится отслеживать небольшие задачи и ежедневные списки TO-DO в аналоговой системе. Я пробовал Trello и Google Keep, но постоянно забывал их открывать, и они часто устаревают, потому что я не обновляю прогресс так регулярно. Имея поблизости лист бумаги, мне легче наткнуться на него и использовать его.

Заключение

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

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

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

Спасибо за чтение!