Developer Productivity for Humans, Part 8: Creativity in Software Engineering (Рубрика Management)
Продолжаю читать статьи от ребят из Google на тему продуктивности инженеров, а точнее в этот раз это статья про креативность. Я уже рассказывал про колонку про "Developer Productivity" в журнале IEEE. В этой статье авторы описываются свой подход примерно так:
- Авторы исследования сделали обзор предыдущих статей и литературы и отметили, что креативность - это качество крутых инженеров
- Но вот что значит креативность в software engineering - это большой вопрос, который авторы по привычке решили выяснить, начав с людей
- Если кратко, то их выводы были в том, что креативность в разработке - это умное переиспользование, а не полная новизна, как принято в других сферах
- Авторы проводили это исследование для того, чтобы понять как лучше измерять и поддреживать креативность инженеров - их интересует именно, что делает кретивным процесс разработки, а не какие персональные качества делают креативными конкретных инженеров
- Свое исследование они решили сделать количественным, но поделили его на отдельные фазы
- Feedback studies, когда обратную связь нужно было дать непосредственно, когда происходило определенное событие
- Elicitation studies, когда нужно было сделать фотографию креативного момента раз в неделю (это мог был скриншот с сессии брейншторма, скриншот дизайн-документа, скриншот кода, который подвергся жестокому рефакторингу и так далее)
- Follow-up interviews, когда исследователи задавали вопросы по фотографиям с воспоминаниями и просили инженеров описать в чем именно состояли моменты креативности
- Post analysis, когда исследователи идентифицировали общие темы из собранных данных, такие как: повторное использование, инфраструктура, knhowledge sharing, обучение, новизна
- Объединение полученных тем с конкретными моментами в developer workflow, которые помогли исследователям получить более глубокое понимание опыта участников исследований
- В итоге, авторы выделили три ключевые темы, которые относятся к креативности
- Коллаборация и брейншторминг взращивают креативность среди разработчиков
- Problem solving с исследованием проблемной области через изучение и исследование создают сцену для креативности
- Умное переиспользование и рекомбинация существующего кода полезным способом является основным атрибутом креативности в software engineering. Суть в том, что не надо быть новатором в коде, а лучше сделать решить сложную задачу простым и понятным способом, который потом будет легко поддерживать и развивать
- Интересно, что авторы видят противоречие между продуктивностью и креативностью, когда чрезмерно фокусируясь на продуктивности не остается времени на креативные решения. Например, часто инженеры отмечали, что коллаборация с коллегами для решения сложной проблемы или сложный рефаторинг являются креативными, но редко когда такое менеджеры считают продуктивным:) Авторы формулируют гипотезу, что продуктивность - это про ближайшее время, а креативность про долговременный эффект от качественного кода.
Напоследок авторы отмечают, что
There remains a need to better understand what creativity means in the context of software engineering, how it affects the whole software development process, and how factors like work location or AI tools might influence it.
#Management #Leadership #Software #SoftwareDevelopment #Metrics #Processes #Creativity