Перевод статьи Франсуа Лантье Наду“A Guide to Developer Productivity: 5 Healthy Habits & Tools”.
На бумаге разработка программ и веб-разработка это структурированные, упорядоченные процессы.
Но как насчет разработки в реальной жизни? По большей части это хаос:
Технические решения, новые стеки, социальные уведомления, затекшие плечи, звонки, собрания, семейные обязанности, GIF-ки… ЛЕНЬ!
try{ Work(); } catch(ChaosOverloadException ex){ Logger.LogFatal("(╯°□°)╯︵ ┻━┻ ", ex); Tables.FlipAllOfThem(); }
Нет сомнений, что поддержание продуктивности разработчика это ежедневная борьба.
Поверьте мне, я знаю: это ежедневная головная боль в наших командах по разработке.
Поэтому я решил попытаться сделать написать что-нибудь об этом.
Надеюсь, это что-то – давайте по-модному назовем это “Руководством по повышению продуктивности разработчика” – поможет нам и другим разработчикам в стремлении к здоровой производительности.
В этом посте мы рассмотрим 5 привычек разработчика, ведущих к повышению продуктивности, а также подходящие инструменты, которые помогут придерживаться этих привычек.
То, что вы прочтете далее, может сэкономить ваши деньги, силы и, возможно, слезы. Приступим?
5 привычек разработчика + полезные инструменты
Непродуктивное время разработки дорого обходится 1) вам и 2) вашим клиентам.
Если слишком много времени тратится непродуктивно, это может поставить под угрозу вашу самооценку, мотивацию, профессиональные отношения и даже ваши собственные деньги. Как же это исправить?
1. Создайте свое собственное, строгое расписание (по возможности)
Красота программирования в том, что им можно заниматься практически где угодно и в любое время. Распорядок работы с 9 до 5 в наши дни становится все более устаревшим.
Есть ли у этой монеты другая сторона? Очень легко скатиться до установки «Я могу это сделать позже/когда-нибудь». Постановка положительных ограничений поможет вам структурировать и оптимизировать время разработки.
Прежде чем застолбить произвольные отрезки времени в своем Google Календаре, притормозите на секунду и спросите себя:
Когда я МОГУ работать?
Возьмем, к примеру, меня. Я не могу работать в ночную смену. Я не могу работать до 8 утра. Я не могу работать во время личных встреч. Это уже проясняет вопрос моего расписания и подчеркивает потенциальные рабочие часы.
Когда я продуктивнее всего?
Я знаю, что в моем случае полдня уединенной, сосредоточенной работы в выходные (во время работы кофеен) творят чудеса. Я также знаю, что после 8 вечера я просто не могу сосредоточиться.
Где я наиболее продуктивен?
Если, как и большинство разработчиков, вы можете себе позволить роскошь работы где угодно, вопрос выбора места является ключевым. Для ночных авралов я предпочитаю свою квартиру и включенную музыку. Выходные? Суматошные кофейни. Но каждое утро? Офис подходит лучше всего.
Определив, когда вы можете работать, когда вы наиболее продуктивны и где, вы сможете создать хорошее, подогнанное под себя расписание.
Имейте в виду, что все люди разные, и ваши пиковые часы могут не совпадать с графиками ваших коллег. Некоторые программисты – настоящие ранние пташки, которые могут подняться еще до рассвета и успеть отладить кучу всего, пока большинство людей еще только тащатся за своим утренним кофе. А совы могут хорошо писать код по ночам, когда все остальные уже счастливо забрались под одеяло.
А если вы не знаете? Ну, экспериментируйте + повторяйте. Есть несколько очень простых приемов, позволяющих понять, в какое время дня ваш мозг больше всего готов производить, просматривать и тестировать код.
Еще одно положительное ограничение это заполнение всего оставшегося времени деятельностью, которой вам нравится заниматься (спорт, развлечения, сторонние проекты, поездки и т. п.). Необходимость пропускать или отменять эти дела будет мотивировать вас продуктивно проводить рабочее время.
1.1 Четкое определение задач на день
Когда вы определили временные рамки вашей работы, составьте реалистичный список задач. Я это делаю ежедневно, поскольку быстрая перестройка стартапа часто означает «дерьмо случается». Но вы можете успешно делать это еженедельно.
Начинать день с записи того, что я хочу сделать, и заканчивать записью того, что я на самом деле сделал, помогает мне выверять, насколько реалистичны мои планы на день. Таким образом, благодаря лучшему пониманию своих возможностей, можно постепенно избавиться от недовольства собой.
Инструменты продуктивности для расписаний и списков задач
→ Google календарь
→ Pivotal Tracker / Jira / Trello (в зависимости от размера вашего проекта)
→ Todoist
→ Расширение Chrome Momentum
→ Toggl – особенно хочу отметить их прекрасный блог.
→ Приложения для приема «Помидор»
→ Post-its!
2. Пишите понятный, легко тестируемый код
Даже простые сайты/приложения могут казаться настоящими мамонтами.
Но, как и в случае с любым проектом, к разработке нужно подходить с точки зрения структуры, т. е., разбивать задачу на мелкие части.
Имейте в виду, что над вашим кодом, скорее всего, в какой-то момент придется еще поработать или возникнет необходимость его улучшить. Поэтому, ради себя в будущем или ради коллег, пишите код с понятной, легко поддающейся расшифровке структурой. Я клянусь, что полное тестирование сохранит в дальнейшем бесценное время – ваше собственное, вашей команды и ваших клиентов.
Несколько советов от нашей команды:
- Обдумайте вариант разработки через тестирование (TDD) — это экономит время! Изначальное написание тестов для своего кода заставит вас думать о проверке edge cases, что сразу вскроет неожиданные проблемы.
- Используйте component mocking и поддельные данные. Это вообще используется в модульном тестировании, но для TDD критически важно, поскольку реализация зависимостей UUT (Unit Under Test) скорее всего еще не существует.
- Фокусируйтесь на малом количестве компонентов кода за раз. Это сделает каждый из них более надежным/поддерживаемым. Плюс, это заставит вас логически организовывать взаимодействующие модули и изготавливать компоненты с единственной ответственностью. Результат? Более простые в поддержке проекты!
Инструменты продуктивности для тестирования кода
- Инструменты непрерывного тестирования для расширений (например, как NCrunch для .NET)
- Решения непрерывной интеграции (такие как Travis CI, AppVeyor, Jenkins)
- Тестовые фреймворки JavaScript (например, Mocha, Chai, Jest)
Это инструменты, которые должны быть у каждого программиста и, конечно, мастера своего дела.
3. Избавьтесь от отвлечений в стиле «пора и перекурить»
Slack и чат
Давайте начнем со слона в комнате, со Slack.
Для большинства это может оказаться новостью, но Slack не способствует повышению вашей продуктивности, ребята!
Деррик Реймер, автор манифеста по ссылке сверху, сказал об этом лучше всего:
Проблема в том, что сегодня инструменты чата усиливают негативные стороны человеческой природы, а не сводят ее к минимуму.
- Мы нетерпеливы.
- Мы чувствуем тревогу из-за значков «не прочитано».
- Мы зависим от push-уведомлений.
- Мы считаем вещи более срочными, чем они на самом деле есть.
- Мы заботимся о том, как нас воспринимает наша команда, и не хотим выглядеть так, будто мы расслабляемся.
Как это исправить? Единого ответа нет. Но есть несколько советов:
- Используйте в Slack режиме «Не беспокоить» в то время, когда вам нужно хорошо сосредоточиться.
- Всегда используйте прямой обмен сообщениями для диалогов.
- Призывайте коллег 1) строго придерживаться темы в выделенных каналах, 2) ограничивать их нажатия клавиш, 3) использовать @-упоминания для людей, кого обсуждение касается напрямую.
- Используйте асинхронную коммуникацию где только возможно (комментарии/заметки в инструментах управления проектом или в инструментах поддержки). Intercom для этого отлично подходит!
Email и социальные сети
Постоянная проверка почты вредит производительности. Как и чаты, это создает ложное ощущение срочности и взаимодействия.
Поэтому, возвращаясь к теме строгого графика: просто отведите 2-3 разумных отрезка времени в неделю для проверки почты. Со временем это приучит ваших корреспондентов, что вы – не центр поддержки 24/7. Их ожидания приспособятся к более здоровому асинхронному ритму связи. То же самое, кстати, касается и чатов!
Следить, чтобы уведомления соцсетей держались в каких-то берегах, довольно просто:
- Для работы создайте в Chrome отдельную сессию, в которой выйдите из всех социальных сетей.
- Выключите мобильный или переведите в беззвучный режим, чтобы получать вызовы только с самых важных номеров (в Android/iOS — режим «Не беспокоить»). Если возможно, положите телефон вне зоны досягаемости.
- Подумайте над использованием блокировщиков сайтов (см. ниже).
Инструменты продуктивности для уменьшения отвлекающих факторов
→Приложение Missive – элегантный гибрид электронной почты, чата и поддержки.
→ Расширение Chrome StayFocusd
→ Расширение браузера WasteNoTime
→ Приложение для тайм-менеджмента RescueTime
4. Не бойтесь попросить о помощи
Основная суть открытого исходного кода – сотрудничество и прозрачность. Работа в изоляции будет стоить вам драгоценного времени.
Плюс, какой бы сложной ни была ваша проблема, есть шансы, что кто-то ее с ней уже сталкивался и исправлял. Безусловно, это не значит, что вам стоит бездумно копипастить код. Однако отведение времени на изучение вопроса, анализ и внедрение чужого решения подходящим образом полностью себя оправдает.
Инструменты продуктивности для сотрудничества разработчиков
→ StackOverflow
→ GitHub
→ Slack
→ Функция комментирования в инструментах для управления проектами
→ Специфические инструменты технической поддержки и документации
5. Позаботьтесь о своем умственном здоровье
С течением времени пропущенные дедлайны, баги на проде, недовольные клиенты, споры… могут нанести тяжелый урон.
Не говоря уже о мировых новостях, личных проблемах и теориях заговора.
Шутки в сторону. Как по мне, это самая полезная из привычек. В прошлом году у меня были тяжелые периоды, и стало ясно, что как только с умственным здоровьем что-то не ладится, ничего хорошего не выходит, ни в профессиональном, ни в личном плане. И, да, это УБИВАЕТ производительность.
Такие проблемы легко пропустить, поскольку они не всегда заметны в физическом смысле. Но поддерживать свой мозг в здоровом состоянии критически важно.
Следование этим советам будет полезно для вашей жизни в целом, а не только как разработчика.
Жизненная гигиена
1. Выполняйте больше физических упражнений
Согласно некоторым медицинским авторитетам, отсутствие упражнений для вашего здоровья столь же опасно, как курение табака. Физическая активность положительно сказывается на:
- Увеличении обучаемости
- Улучшении памяти
- Росте креативности
- Повышении выносливости мозга
2. Хорошо питайтесь и все время пейте воду (серьезно, делайте это)
Как и в случае с физическими упражнениями, большинство работающих взрослых людей редко хорошо питаются, и это также очень сильно влияет на их производительность. Жирная, насыщенная углеводами пища может серьезно повлиять на то, сколько работы вы выполните.
Помните о структурированном графике с ежедневным списком дел? Почему бы не забронировать там время для планирования вашего стола, приготовления еды и приемов пищи?
Что касается воды, она 1) выводит токсины, 2) облегчает головные боли и снимает усталость, 3) заряжает вас энергией и укрепляет иммунную систему. Пейте воду!
3. Высыпайтесь
«После смерти отосплюсь» – дурацкий девиз.
Мой друг-дизайнер Тони из Осмо хорошо сказал об этом в своем посте на Фейсбуке, подводя итоги прекрасной серии подкаста:
Ключевые выводы:
- Недостаток сна тесно связан и болезнью Альцгеймера и другими распространенными проблемами со здоровьем, такими как синдром дефицита внимания и гиперактивности, рак, ожирение и т. д.
- Когда вы бодрствуете, это приводит к небольшому количеству повреждений мозга, что вызывает болезнь Альцгеймера. Эти повреждения лечатся во время сна.
- 7 часов сна это абсолютный минимум. Одна ночь сна меньше 7 часов у 99% населения приводит к повреждению мозга.
- Люди, утверждающие, подобно Илону Маску, что могут обходиться менее чем 7 часами сна, бредят, вредят себе и увеличивают риск для своего здоровья.
- Ваше тело не может запасаться сном, как запасется энергией/калориями. Например, нельзя в течение недели спать подольше, чтобы компенсировать недосып в выходные.
- Аналогично, дремота снимает симптомы нехватки сна, но не восстанавливает повреждения мозга.
- Мужчинам недостаток сна обойдется в старение на десять лет, если смотреть по уровню тестостерона.
4. Стремитесь к балансу во всем
«Без отдыха и конь не скачет». А также пребывает в вечном стрессе, нервозности и плохом настроении. Бедный конь разработчик.
Трудоголизм реален. По факту, люди, у которых проявляются симптомы трудоголизма, хотя и высоко ценятся компаниями, зачастую теряют близких друзей. Их семейная жизнь также может пойти под откос, и даже некогда любимая работа перестает их радовать.
Поэтому выходите в люди, на обед, на прогулку, в кино. Встречайтесь с любимыми людьми. Качественные отношения с людьми находятся близко к вершине человеческого счастья!
Борьба с тревожностью и фрустрациями
Привычки жизненной гигиены, упомянутые выше, помогут вам лучше управлять своими эмоциями. Но я также хочу подкинуть вам еще три важные идеи:
1. Медитация
Забудьте о чакрах, йоге, мычании и гуру.
Медитация это вполне мирская практика, которая, как доказала нейробиология, уменьшает стресс/тревожность и улучшает концентрацию, креативность, способность сопереживать и память.
Я медитирую ежедневно уже два года. Это мне настолько помогает, что я превратился в того надоедливого парня, который всегда пристает с этой темой ко всем, кого бы ни встретил.
Дыхание это мощный и доступный инструмент — пользуйтесь им!
2. Умственное развитие
Это сложная задача, но сводится она к укрощению вашего эго.
Ваш ум развивается путем учебы на ошибках, а не за счет наслаждения успехом. Исходя из этого факта, смиренное принятие ошибок и неудач неразрывно связано с личностным и профессиональным ростом.
3. Стоицизм
Философия стоицизма насчитывает уже сотни веков, но актуальна и сегодня. Она учит вас принимать вещи, которые вы не можете изменить, и быть благодарным за то, что есть, хорошо оно или плохо.
Я мог бы написать об этом целый пост, но я буду краток и сошлюсь на «The Obstacle is the Way» Райана Холидея. В блоге Тима Ферриса также есть подборка полезных источников по теме стоицизма.
Инструменты продуктивности для умственного здоровья
→ Приложение для медитации Headspace (как его не похвали, все равно будет мало)
→ Приложение для управления стрессом Calm
Заключительные размышления
Итак, товарищи разработчики, позвольте мне подвести итоги и покинуть вас. Чтобы оптимизировать производительность, вам определенно необходимо:
- Составить строгое персонализированное расписание и придерживаться его.
- Писать легко проверяемые и тестируемый код.
- Использовать инструменты для сокращения отвлекающих факторов (чат, электронная почта, соцсети).
- При необходимости обращаться за помощью к другим разработчикам.
- Приобретать привычки, которые будут поддерживать здоровье вашего мозга!
Я надеюсь, это руководство поможет вам на пути к здоровой продуктивности разработчика.
[customscript]techrocks_custom_after_post_html[/customscript]
[customscript]techrocks_custom_script[/customscript]