Эшер, Морис Корнелис Рисующие руки. 1948
Эшер, Морис Корнелис
Рисующие руки. 1948

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

Формальный подход

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

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

Профессиональный подход

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

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

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

Житейский подход

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

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

Чаще происходит как-раз наоборот. Возвращаясь к истокам, программисту нет-нет да и приходится выступать в роли и аналитика и контролера. А иногда и в качестве постановщика задачи. То есть заниматься прямым творчеством.

Личный подход

Последнее, конечно, является признаком полного провала организации технологического процесса, если речь идет об экономической, народно-хозяйственной деятельности. Однако, большинство (могу ошибаться) программистов занимаются, кроме непосредственной работы, разработкой и личных проектов. Речь не идет о коммерческих стартапах или инициативах. Речь о хобби, о саморазвитии, об обучении. Во всяком случае, считается, что плох тот программист у которого совсем нет никаких параллельных проектов, как говорится, "для души".

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

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

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

Творите, коллеги!

*/

End.

Комментарии (10)