Руководство главного инженера-программиста по безболезненному планированию проектов

Руководство главного инженера-программиста по безболезненному планированию проектов

12 марта 2022 г.

Подход, ориентированный на человека


TL;DR


  • 👑 Доставка королева.

  • 🔭 Визуализируйте и определяйте успех на ранней стадии.

  • 🤹 Не забудьте включить мониторинг производительности и анализ KPI.

  • 🎯 Главный инженер — это руководящая роль. Подумайте о своем участии в проекте.

Для меня работа в качестве главного инженера-программиста — это сближение инженеров, бизнеса и людей.



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


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


Это правильный проект?


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


  • Делать или не делать?

  • Если «сделать», это правильное время?

  • Какова инженерная сложность?

  • Как усилия?

  • Есть ли у нас ресурсы?

  • Делать или не делать?

Есть еще много факторов. Я предлагаю просто:


Следуй за своей интуицией😎


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


  • Изучите свою отрасль и конкурентную среду.

  • Изучите стратегию вашей организации. (Если вы, как и я, не совсем понимаете, что такое «стратегия» в деловом мире, я настоятельно рекомендую книгу «[Игра на победу: как стратегия действительно работает]» (https://www.goodreads.com/book/show). /13586928-playing-to-win)» А. Г. Лафли и Роджера Л. Мартина.)

  • Согласуйте проект с [OKR] организации (https://rework.withgoogle.com/guides/set-goals-with-okrs/steps/introduction/).

  • Поговорите с дизайнерами о потребностях пользователей и болевых точках в их исследованиях.

  • Поговорите с менеджерами проекта (PM) или владельцами продукта (PO) об исследовании рынка.

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

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



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


Как выглядит успех?


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


  • Укрепите свое внутреннее чувство о проекте.

  • Более четко сообщайте другим о цели и согласовании с OKR.

  • Разработайте ключевые показатели эффективности для измерения прогресса и воздействия.

Мне нравится использовать подход Amazon «Работать в обратном направлении» для изложить свои мысли в пресс-релизе. Это отличный способ привести людей в такое же настроение, просто «увидев», что происходит после финиша.


Я использую пресс-релиз в качестве отправной точки для обсуждения и консолидации ссылок на документацию. Обычно включает:


  • Эпопея проекта или обзор.

  • Мокапы дизайна пользовательского интерфейса.

  • Проекты инженерных систем.

  • Аналитика KPI.

Как отправить как можно скорее?


«Отправляемся учиться».


Это стало моим руководящим принципом с тех пор, как я прочитал об этой цитате. [GitHub] (https://dev.to/mscccc/how-we-use-ship-small-to-rapidly-build-new-features-at-github-5cl9) разделяет ту же идею в своих принципах лидерства, и я думаю, что образ мышления является основой бережливой и гибкой разработки программного обеспечения, потому что он:


  • ориентированный на человека и ориентированный на пользователя.

  • питание от итераций обратной связи и обучения.

  • измеримый.

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


[Design Sprint] (https://www.gv.com/sprint/) – еще один отличный инструмент для решения проблемы и начала исследования. Самое главное, это весело🤩


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


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


А как насчет анализа KPI?


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


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


  • [Тестирование перестановок] (https://www.jwilber.me/permutationtest/)




  • [Многовариантное тестирование] (https://www.optimizely.com/optimization-glossary/multivariate-testing/)



  • [Проблема многорукого бандита и ее решения] (https://lilianweng.github.io/posts/2018-01-23-multi-armed-bandit/)

Есть ли мониторинг производительности?


Технические характеристики — это еще одна возможность включить инженерный контекст в обсуждение следующих итераций.


В целом существует два типа мониторинга:


  • Мониторинг реальных пользователей (RUM)

  • Синтетический мониторинг

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


Вот несколько полезных инструментов для мониторинга:


  • [Графана] (https://grafana.com/)

  • [Google Lighthouse] (https://developers.google.com/web/tools/lighthouse)

  • [автопушка] (https://github.com/mcollina/autocannon)

  • [Кипарис] (https://www.cypress.io/)

  • [K6] (https://github.com/grafana/k6)


  • [Clinic.js] (https://clinicjs.org/)

Должен ли я программировать в качестве главного инженера-программиста?


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


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


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



Модель предполагает, что существует 4 типа стилей лидерства, и вы можете гибко выбирать стили руководства в зависимости от ситуации.


Я думаю, что для ситуаций поддержки и коучинга лучшее место и время для кода:


  • Прототипирование.

  • Хакатон.

  • Инструментарий для разработчиков.

  • Визуализация данных.

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


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


Последние мысли


Мы коснулись вопросов, которые я считаю полезными при планировании:


  • Это правильный проект?

  • Как выглядит успех?

  • Как отправить его как можно скорее?

  • А как насчет анализа KPI?

  • Существует ли мониторинг производительности?

  • Должен ли я программировать в качестве главного инженера-программиста?

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



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


Использованная литература


Статьи


  • [Подход Amazon Work Backwards  — Quora] (https://www.quora.com/What-is-Amazons-approach-to-product-development-and-product-management/answer/Ian-McAllister)

  • [Шаблон и пример пресс-релиза Amazon, работающего в обратном направлении  —   Ян Макаллистер] (https://www.linkedin.com/pulse/working-backwards-press-release-template-example-ian-mcallister/)

  • [Дизайн-мышление 101 — Nielsen Norman Group] (https://www.nngroup.com/articles/design-thinking/)

  • [Почему дизайн-мышление работает — HBR] (https://hbr.org/2018/09/why-design-thinking-works)

  • [Дизайн-мышление, объяснение — MIT] (https://mitsloan.mit.edu/ideas-made-to-matter/design-thinking-explained)

  • [Дизайн-спринт — GV] (https://www.gv.com/sprint/)


  • [Тест перестановок: визуальное объяснение статистического тестирования — Джаред Уилбер] (https://www.jwilber.me/permutationtest/)

  • [Многорукий бандит — Оптимизируйте] (https://www.optimizely.com/optimization-glossary/multi-armed-bandit/)

  • [Проблема многорукого бандита и ее решения  —   Лилиан Венг] (https://lilianweng.github.io/posts/2018-01-23-multi-armed-bandit/)

  • [A/B-тестирование — Optimizely] (https://www.optimizely.com/optimization-glossary/ab-testing/)


  • [Многовариантное тестирование — Optimizely] (https://www.optimizely.com/optimization-glossary/multivariate-testing/)


  • [p-значение — Википедия] (https://en.wikipedia.org/wiki/P-значение)








  • [Ключевые показатели эффективности (KPI) для оптимизации] (https://cxl.com/blog/key-performance-indicators-kpi/)

  • [Показатели производительности технических функций — GitLab] (https://about.gitlab.com/handbook/engineering/performance-indicators/)








  • [Анализ статических программ — Википедия] (https://en.wikipedia.org/wiki/Static_program_analysis)



Книги


  • [Штатный инженер: лидерство за пределами управленческого пути  —  Уилл Ларсон] (https://staffeng.com/book)

  • [Игра на победу: как на самом деле работает стратегия  — А. Г. Лафли, Роджер Л. Мартин] (https://www.goodreads.com/book/show/13586928-playing-to-win)

Инструменты


  • [Clinic.js] (https://clinicjs.org/)

  • [autocannon — GitHub] (https://github.com/mcollina/autocannon)


  • [Cypress.io] (https://www.cypress.io/)

  • [Библиотека тестирования] (https://testing-library.com/)

  • [Графана] (https://grafana.com/)

  • [Google Lighthouse] (https://developers.google.com/web/tools/lighthouse)

  • [K6 — GitHub] (https://github.com/grafana/k6)

Эта статья изначально была размещена на [веб-сайте Доу-Чи] (https://dawchihliou.github.io/articles/how-to-plan-a-project-as-a-principal-software-engineer).



Оригинал
PREVIOUS ARTICLE
NEXT ARTICLE