The Creative Programmer (Креативный программист) (Рубрика SelfDevelopment)
Недавно я прочитал эту книгу Ваутера Гренефелда про креативнрость в программировании. Суть в том, что Ваутер рассматривает разработку как творческую деятельность, сравнимую с созданием музыки, а не просто технический процесс. Мало того, автор утверждает, что креативность можно развивать и даже дает практические советы о том, как это делать. Книга в оригинале вышла в издательстве Manning, а на русский переведена издательством "Питер". Читал я на русском и особых проблем не заметил.
Если возращаться к самой книге, то автор выделяет следующие столпы креативности
- Technical knowledge (технические знания): без hard skills в инженерии никуда - сложно быть креативным без знания технической базы. Я уже как-то рассказывал про путь в сторону staff engineer и как прокачивать харды для становления крутым IC (individual contributor)
- Collaboration (сотрудничество): это то, что обычно называют soft skills, а точнее тут про эффективное общение в команде и обмен идеями. Недавно у меня был доклад как раз на эту тему
- Constraints (ограничения): часто именно наличие ограничений стимулирует инновации для их преодолениея
- Critical thinking (критическое мышление): сомнение в предположениях и улучшение решений. У меня есть целая подборка ресурсов про критическое мышление
- Curiosity (любознательность): стремление к постоянному обучению и разнообразным интересам
- Creative state of mind (творческое состояние ума): развитие концентрации и внутренней мотивации
- Creative techniques (творческие техники): методы, такие как использование метафор и мозговой штурм
Если обобщать основные мысли, то
- Креативность возникает из соединения идей из разных дисциплин, что автор иллюстрирует историческими примерами
- Автор поощряет "хорошее воровство" идей (адаптация концепций) в противовес простому подражанию
- Ваутер говорит про баланс между внутренней мотивацией (например, любопытством) и внешними факторами (например, сроками) - это по его мнению повышает продуктивность
В последней главе есть много креативных практик из инструментария писателя, художника и инженра. Поэтому желающий повысить свою креативность может взять эти инструменты и начать их практиковать. А для отслеживания прогресса можно взять Creative Programming Problem Solving Test, позволяющий отслеживать и измерять прогресс в развитии креативности.
P.S. Вопросы креативности в software engineering очень важны, например, ребята из Google исследовали их и недавно написали интересный whitepaper "Developer Productivity for Humans, Part 8: Creativity in Software Engineering", который я уже разбирал раньше.
#Thinking #Engineering #SelfDevelopment #Software #Brain