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

Время — ценный ресурс.

Рост эффективности на 1 час в день экономит 1 месяц в год.

Давайте посчитаем вместе:

1 час в день × 5 дней в неделю × 52 недели = экономия 260 часов в год.

260 часов ÷ 8 часов в день = 32,5 рабочих дня в год.

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

Я разработчик. Мне удалось так наладить свою ежедневную работу, что последние несколько лет в среднем я успеваю сделать 1–2 запроса pull каждый день. Не то чтобы это наилучший показатель, и необязательно стремиться именно к нему, но он позволяет получить общее представление об эффективности работы.

Сегодня я хочу поделиться с вами рекомендациями, благодаря которым мне это удалось.

? Главная мысль

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

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

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

Таблица оптимизации времени xkcd. Она не совсем точно соотносится с концепцией рабочего дня, поскольку в ней расчёты ведутся в сутках. Источник
Таблица оптимизации времени xkcd. Она не совсем точно соотносится с концепцией рабочего дня, поскольку в ней расчёты ведутся в сутках. Источник

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

? Рабочий процесс / терминал Git

Здесь можно сильно сэкономить время тремя способами:

  1. Автодополнение по истории команд.

  2. Алиасы для быстрого набора команд.

  3. Упрощение управления файлами в Git.

Автодополнение по истории команд

Я пользуюсь такой настройкой терминала:

Если вы уже настроили Oh My Zsh, добавьте эти «плагины» в файл .zshrc.

# in ~/.zshrc
plugins=(
  git
  zsh-autosuggestions <--- we'll talk about this one now
  zsh-syntax-highlighting
)

С помощью подсказок Zsh-плагин предлагает дописать каждую команду, которую вы вводите.

Вот как это работает: 

Чтобы принять предложение из подсказки, нужно просто нажать стрелочку вправо на клавиатуре.

Алиасы

Я добавил этот плагин к .zshrc.

# in ~/.zshrc
plugins=(
  git <--- we'll talk about this one now
  zsh-autosuggestions
  zsh-syntax-highlighting
)

Плагин Git добавляет алиасы для быстрого набора команд Git. Вот для примера несколько алиасов, которые я использую:

  • ga => git add,

  • gc => git commit,

  • gd => git diff,

  • gs => git status,

  • gps => git push,

  • gpl => git pull.

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

Ещё я добавляю пользовательские алиасы в .zshrc.

Вот два примера:

# in ~/.zshrc
alias addalias='code ~/.zshrc' <-- open up zshrc file to edit it
alias reload='source ~/.zshrc' <-- reload zshrc file to apply changes

Нумерованные сочетания клавиш для файлов Git

SCM Breeze упрощает работу с файлами в Git: он помогает создавать нумерованные шоткаты для путей к файлам.

Можно называть файлы git add 2-3 или git reset 1.

Приведу пример:

?️ Написание кода

Вот как лучше всего оптимизировать работу в редакторе кода:

  1. Поиск кода в стеке. Допустим, вы ищете вызов метода. Вам нужно посмотреть, что за код у него внутри. Не используйте глобальный поиск cmd + F по имени этой функции, выискивая определение. 

    Вот что я советую:
     

    • Создание сочетаний клавиш для поиска переменной, метода, класса.

    • Клавиша быстрого доступа в VS Code: F12.

    • Сочетание клавиш в JetBrains IDE: cmd + B.

  2. Навигация между файлами. Бывает, работаешь сразу в 2–3 файлах и в каждом файле нужно вернуться в определённую точку. Нажимая nav в верхней части редактора, ищешь нужный из 15 открытых файлов. Или работаешь в большом файле и всё время прокручиваешь его то вверх, то вниз. Но и здесь можно организовать работу удобнее. 

    Вот что я советую: 

    • Создание сочетания клавиш для перехода вперёд или назад по истории файлов. Так вы сможете удобно перемещаться и между редактируемыми файлами, и между конкретными разделами в файле.

    • Сочетание клавиш в VS Code: Ctrl + - и Ctrl + Shift + -.

    • Сочетание клавиш в JetBrains IDE: cmd + option + ⬅️ и cmd + option + ➡️.

  3. Написание кода. С тех пор как несколько месяцев назад я начал пользоваться GitHub Copilot, он уже сэкономил мне целые дни. Он предлагает автодополнение почти для каждой строки кода, который вы пишете, включая тесты. Удивительно умный инструмент ?

? Сохраняйте интересное

В Notion я сохраняю на потом всю полезную информацию.

Тьяго Форте популяризировал этот подход как «создание второго мозга». Его суть в том, чтобы сохранять всякие полезности там, где вы будете их использовать, а не там, где вы на них наткнулись.

Вот скриншот двух моих папок с заметками в Notion:

Каждая тема объединяет заметки из множества разных статей, видео, книг. Так мне гораздо проще найти их, когда они мне понадобятся.

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

✅ Не загружайте мозг идеями и задачами

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

Я сохраняю идеи и задачи в Todoist, а также пользуюсь функцией «Сохранить на потом» (Save for later) в Slack — и сразу же выбрасываю их из головы.

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

А вот как выглядит мой список задач в Todoist ↓ Но вы можете организовать всё по-своему.

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

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

? Визуальная коммуникация

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

  • удобно описывать pull request;

  • легко объяснить PM’у через сообщения в Slack, какое изменение вы хотите внести;

  • начальнику проще утвердить или подписать скриншоты, показывающие созданный вами новый флоу.

CleanShot сэкономил мне немыслимое количество времени. Он заменяет инструмент для создания скриншотов для Mac. Кроме того, инструмент:

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

  • умеет делать GIF и запись экрана — именно с помощью этого универсального инструмента я сделал все изображения для этой статьи;

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

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

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

? Вход на сайт

Менеджер паролей — полезное решение по двум причинам:

  1. Это удобно: вам не нужно всё время вводить адреса электронной почты или пароли, он сделает это за вас.

  2. Это безопасно: он сам создаёт сложные уникальные пароли для каждого сайта.

Когда вы входите на сайт с помощью 1Password, это выглядит так:

? Работа с окнами

Разработчикам часто приходится переключаться между окном браузера, терминалом, редактором и мессенджером.

Раньше я тратил уйму времени, вручную меняя размер окон. А потом начал пользоваться специальной программой — Rectangle. У неё есть бесплатная версия, а платная стоит около $10. С её помощью можно быстро разместить одно окно справа, другое слева, а третье открыть на полный экран. Rectangle экономит мне уйму времени.


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

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

Буду признателен, если поделитесь в комментариях, чем сами пользуетесь для повышения эффективности работы, что работает для вас ?


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

Или открыть перспективы с профессиональным обучением и переподготовкой:

Комментарии (8)


  1. rSedoy
    13.07.2024 19:03
    +14

    Основные затраты времени, это обдумывание решений и тому подобное. Код относительно этого пишется быстро, а всякие автодополнения, алиасы и прочее, больше субъективные удобства, их влияние на общее время разработки незначительное. Так что "сэкономленные" это больше манипуляция статистикой.


    1. feelamee
      13.07.2024 19:03
      +4

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

      А когда это все сделано, решение скорее всего будет элементарным


  1. voidinvader
    13.07.2024 19:03
    +4

    Советы как будто не от опытного разработчика, а от опытного пользователя ПК.


  1. fo_otman
    13.07.2024 19:03
    +11

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


  1. kalbas
    13.07.2024 19:03

    в среднем я успеваю сделать 1–2 запроса pull каждый день

    ПФФФФФ, тоже мне метрика. У меня на текущем месте работы это минимальная планка, просто специфика такая.


  1. riky
    13.07.2024 19:03

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


  1. northartbar
    13.07.2024 19:03
    +1

    Не брать с собой в туалет телефон экономит десятки лет.


  1. Boomburum
    13.07.2024 19:03

    Сначала тоже пользовался Rectangle, но потом открыл для себя Lasso — волшебство, которое позволяет не учить коткеи (хотя и они есть) для всяких там «открыть окно на верхнюю правую чатверть экрана», а просто по хоткею выбирать нужные участки экрана — оказалось сильно удобней:) Для удобства перехода есть набор настроек с хоткеями от Rectangle и Magnet.