Правильная ссылка на эту страницу
http://az-design.ru/Support/SoftWare/l/GlassRob/04h0004.shtml

Почему “Креативное программирование”?

Для творческого мышления нужна позиция, сочетающая
поиск идей и умелое обращение со своими знаниями и опытом.
Встав на эту точку зрения, вы опробуете разные подходы,
часто не приводящие никуда. Вы используете безумные,
дурацкие и непрактичные идеи, чтобы достичь практичных
новых идей. Время от времени вы нарушаете правила
и ищете новые идеи в непривычных местах,
Рождер фон Эйк
“A Whack on the Side of the Head”, Warner Books, 1990

       Миру программирования присущ принципиальный конфликт, иногда принимающий характер войны.
       С одной стороны — руководители, которые стремятся навязать разработчикам более высокий уровень дисциплины и контроля, и исследователи, которые с теми же целями предлагают, а порой даже пытаются узаконить формальные методы.
       С другой стороны — разработчики программного обеспечения, спокойно продолжающие писать программы обычным путем, то есть свободно выбирая методы и применяя творческие решения.
       Время от времени появляются “революционные” методы, которые какое-то время пользуются популярностью и затем исчезают, мало что изменив в существующей практике разработки программ.
       Методологии дробятся, языки программирования приходят и уходят, CASE-средства пылятся на полках, ориентация на объектность вечно остается “задачей следующего года”. Попытки упростить и регламентировать разработку программного обеспечения в целом проваливаются одна задругой.
       В чем причина такой ситуации? Может быть, в неподатливости разработчиков, которые настолько закоснели в своих привычках, что не способны воспринимать новое? Похоже, руководители и исследователи именно так и полагают.
       А может, дело в невежестве руководителей и исследователей, которые настолько озабочены поиском новых решений, что перестали понимать старые? Такая точка зрения характерна для практиков.
       Думаю, главная проблема этого конфликта — творчество. Если при создании программ творчество почти или совсем не нужно, то правы руководители и исследователи, заявляющие, что процесс изготовления программ можно упростить и регламентировать. Если же, напротив, творчество было и остается важной составной частью процесса создания программ, то правы практики: нам по-прежнему будут нужны свободные методы и творческие решения. Вот эту-то совокупность проблем, возникающих из представлений о творчестве в программировании, я и собираюсь рассмотреть в книге и, если удастся, решить. Потому я и назвал ее “Креативное программирование”.
       Рассмотрению этих диаметрально противоположных точек зрения и возможных путей выхода из конфликта посвящена первая часть книги. Я разделю проблему на составные части. Вместо того чтобы рассматривать творчество в целом, мы последовательно изучим его с разных сторон, взяв такие его аспекты, как дисциплина, формальные методы, оптимизация решений, количественный подход, технологический процесс, теория и занимательность. Эти и некоторые другие темы будут изучены в ряде неформальных очерков. Попутно мы рассмотрим пару дефиниций творчества и даже результаты исследования, имевшего целью выяснить, какие же задачи разработки программного обеспечения действительно требуют творческого подхода.
       Затем в части II мы перейдем к несколько более формальной и практической точке зрения на творчество. Мы возьмем две области, в которых творчество играет особо важную роль — творчество в организационной сфере и творчество в технологиях программирования, — и изучим значение творчества в них существенно глубже. А после, чтобы более полно осветить творчество в программировании, мы взглянем на наш предмет с исторической точки зрения: где и как возникла проблема творчества? Для каждой из этих тем мы рассмотрим пути стимуляции творчества. Для этого есть чертова дюжина приемов, которые мы опишем и обсудим.
       Чтобы не ограничиваться при рассмотрении творчества точкой зрения одних лишь программистов, в части III мы рассмотрим то, что узнали о творчестве, применительно к другим областям. В частности, нас ждет несколько удивительных ответов на вопрос: “Могут ли компьютеры и программы повысить уровень творчества в других (некомпьютерных) областях?”.
       В части IV мы увяжем свободные концы всех нитей книги.
       Это обзор структуры книги, но как она построена с эмоциональной точки зрения? Куда она приведет нас в итоге?
       Надеюсь, по мере чтения книги вы станете по-новому воспринимать роль творчества и тот конфликт, с рассказа о котором я начал. Где-то я подам идею, где-то подскажу — все это поможет вам сформировать собственное мнение относительно важности творчества в разработке программного обеспечения. Изучение материалов для этой книги стало для меня путешествием чувств и ума, уведя далеко от того места, где все началось. Такое может случиться и с вами.
       Попутно я призываю на помощь некоторых коллег. Например, у известного программиста П. Дж. Плогера (P.J.Plauger) мы позаимствуем понятие “индекса сложности” (“the falutin' index”) — легкомысленного способа оценки программных проектов, весьма отличающегося от формальных метрик, о которых можно прочесть в формальной литературе. Аналогично Брюс Блюм (Bruce Blum) из Лаборатории прикладной физики имени Джона Хопкинса поможет нам изучить соотношение между развлечением и скукой в программных проектах, а Дуэйн Филипс (Dwayne Phillips) будет руководить нашим исследованием забавной стороны некоторого проекта. Деннис Галетта (Dennis Galletta), профессор из Питта, расскажет о творчестве в стратегических системах. Покойный Дэн Кугер (Dan Couger) из Университета Колорадо (и директор Центра изучения творчества в Колорадо-Спрингс) — автор ряда идей о творчестве в программировании, которые я позаимствовал из его книг. С Айрис Весси (Iris Vessey) из Университета Пенсильвании мы вместе исследовали природу задач программирования и описали результаты. Таким образом, данная книга отчасти является коллективным трудом.




<<< Пред. Оглавление
Начало раздела
След. >>>

Дата последнего изменения:
Thursday, 21-Aug-2014 09:10:55 MSK


Постоянный адрес статьи:
http://az-design.ru/Support/SoftWare/l/GlassRob/04h0004.shtml