Как настроить короткий цикл обратной связи в качестве соло-кодера

1656580580 kak nastroit korotkij czikl obratnoj svyazi v kachestve solo kodera

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

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

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

О петлях обратной связи

Полковник ВВС США Джон Бойд разработал концепцию петли OODA, а OODA является аббревиатурой наблюдать, ориентировать, решать, действовать. В военных операциях это иллюстрирует процесс принятия решений на основе постоянного поступления новой информации:

Наблюдайте: Получите необработанную информацию об обстоятельствах и текущей среде.

ориентировать: Поставьте необработанные наблюдения в контекст. Учитывайте такие вещи, как соответствие текущей ситуации и полученные знания и опыт.

Решите: Составьте план движения к своей цели.

Действие: Выполните план.

Поскольку это цикл, то действовать этап ведет непосредственно обратно в наблюдать этап. Это критическая концепция «обратной связи», обеспечивающая все более успешные итерации. Он широко применим за пределами военных операций — вы можете распознать его как источник метода PDCA (планируй-проверяй-действий).

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

Цикл обратной связи команды разработчиков

Давайте посмотрим, как могут смотреться некоторые компоненты цикла обратной связи для разработчика в команде:

  1. Указания от владельцев продуктов или отзывы пользователей
  2. Ежедневный скрам/стендап со всей командой
  3. Расстановка приоритетов с командой разработчиков
  4. Индивидуальное кодирование и тестирование
  5. Коллективная рецензия кода
  6. Развертывание и мониторинг производительности

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

Цикл обратной связи разработчика соло

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

  1. Воспитывать дисциплину
  2. Уточняйте конкретные цели высшего уровня
  3. Расставьте приоритеты и планируйте цели среднего и низкого уровня
  4. Автоматизируйте свою работу
  5. Блокируйте время для проверки кода
  6. Блокируйте время для проверки процесса
  7. Обновите свои цели и процессы по результатам ваших обзоров

Ниже я подробно расскажу каждый из этих этапов.

Воспитывать дисциплину

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

Почему дисциплина так важна? Потому что, когда мы хотим завершить проект в эту пятницу вечером, мы не хотим писать хорошее сообщение о фиксации. Мы не собираемся очищать комментарии к коду. Мы просто хотим увидеть, как проклятая вещь идет, Привет, git push -f.

Именно в такие моменты дисциплина позволяет нам не упускать возможность практиковаться, учиться и улучшать свой рабочий процесс. Дисциплина помогает нам избежать комиссий в пятницу вечером, которые превращаются в утро понедельника git reset --hardс.

Уточняйте конкретные цели высшего уровня

FSBRpf7OG7Jq2t0heAlZu4PLkFgpWIk3sW6p

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

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

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

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

Расставьте приоритеты и планируйте цели среднего и низкого уровня

ne08OzeVcFueWzqHi5iS5spqEzuVgL6Vzhhc

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

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

  1. Полный JavaScript программы
  2. Создайте интерфейс и таблицу стилей
  3. Проведите локальные тесты
  4. Настройте облачный сервер
  5. Развернуть приложение в облаке
  6. Делайте тесты
  7. Добавьте репозиторий в GitHub
  8. Опубликовать в Hacker News
  9. Прибыль!!!

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

  1. Исследуйте облачных провайдеров
  2. Определитесь с услугой и зарегистрируйтесь
  3. Настроить сервер/экземпляр
  4. Добавьте интеграции
  5. Тестовое развертывание

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

Автоматизируйте свою работу

YQiux-ArUTRIoqGGcNSAY7W1cyjyG1SiHTJG

Недавно я прочитал замечательную статью под названием «Ручная работа – ошибка». В нем обсуждается процесс, посредством которого успешные разработчики документируют и в конечном счете автоматизируют свою работу. Красота этой идеи в ее простоте. Записывая то, что мы делаем вручную, мы можем исправлять и усовершенствовать наши процессы. Совершенствуя наши процессы, мы можем легче переводить их в фрагменты кода и скрипты. Благодаря набору сценариев, которые мы сможем объединить, мы сможем автоматизировать нашу работу.

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

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

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

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

Блокируйте время для проверки кода

j0xWdQE2By2JGa9VFfRjL88NWz7ERedqY21F

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

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

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

Исследуйте основные методы для того, над чем вы работаете. Однако установите себе время и воспринимайте прочитанное недоверие. На этом поле много кроличьих нор. Как отправную точку, я рекомендовал бы изучать DRY-код и смотреть, как дядя Боб требует профессионализма в разработке программного обеспечения.

Контрольный список для проверки кода

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

Обзор кода Виктории Феерия!

— [ ] Это решает вопрос с высоким приоритетом.
— [ ] Это полная реализация, соответствующая спецификации.
— [ ] Изменения, не связанные с темой, не были включены и добавлены в отставание.
— [ ] Названия переменных имеют содержание и у них нет магических чисел.
— [ ] Корректные и полезные сообщения об ошибках возвращаются при любом случае.
— [ ] Никаких отладочных операторов печати не осталось.
— [ ] Этот код Сухой и модульный.
— [ ] Этот код безопасен. Частный и публичный код хорошо разделены.
— [ ] Этот код является собственной документацией или документация обновлена.
— [ ] Пятилетний ребенок мог бы следить за этим, серьезно, это столь читабельно.
— [ ] Модульные тесты успешно прошли.
— [ ] Master был объединен в ветку и протестирован.
— [ ] Форматирование соответствует инструкциям стиля.
— [ ] Я не могу найти никаких дополнительных случаев или известных дефектов.
— [ ] Я был бы рад, если бы этот код приписывали мне публично.
— [ ] Я полностью понимаю, что оказывает код и влияние внесенных мной изменений.
[ ] Я действительно проверил, что он действительно выполняет то, что сказал.

Вот отличный пример очистки кода с учетом некоторых из вышеупомянутых моментов.

Блокируйте время для проверки процесса

Nvgdg9nCzq5Rrtlq29-FF564MtsGginnwJnU

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

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

Вопросы для проверки процесса

Обзор процесса может быть таким простым, как краткий список вопросов:

  1. Каковы мои цели наивысшего уровня на этот период? Я встретил их?
  2. Каковы мои цели среднего и низкого уровня на этот период? Я встретил их?
  3. Было бы лучше, чтобы я относился к другим или более конкретным целям? Почему?
  4. Успешно ли я устранил или автоматизировал помехи?
  5. Соблюдал ли я график проверки кода? Почему или почему бы нет?
  6. Как я могу устранить препятствия в следующий раз?

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

Обновите свои цели и процессы по результатам ваших обзоров

RCd2DfPOTP3j7UoMT1M9-UCuLeNO7SQRkKDo

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

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

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *