Набрёл на фрагмент книги Алистера Кокбурна про разработку софта (1985-naur.pdf).
В книге "Work-Oriented Development of Software Artifacts" (1988) Pelle Ehn описывает серию проектов, исследовавших способы сделать программное обеспечение более соответствующим своему конечному применению, более удобным в использовании и создаваемым совместно программистами и конечными пользователями.Там ещё есть от Питера Наура, про программирование как строительство теории. И от Миямото Мусаши, самурая 17-го века, не знавшего поражений.
Для меня высшей точкой этой книги является то, как он рассматривает разработку программного обеспечения в контексте четырёх философов: René Descartes, Karl Marx, Martin Heidegger и Ludwig Wittgenstein.
Человек, работающий в стиле Декарта, мыслит внешнюю реальность как нечто достойное описания и направляет свои усилия на её фиксацию. Поэтому его интересует, насколько требования, модели и код соответствуют реальности. Этот картезианский подход заполнял первое полувековье нашей области.
Человек, работающий в стиле Маркса, прежде всего спрашивает: «Кому выгодна эта новая система? Как её внедрение изменяет структуру социальной власти?» Это осмысленный вопрос, независимо от того, нравятся вам политические теории Маркса или нет.
Человек, работающий в стиле Хайдеггера, рассматривает систему с точки зрения её эффективности как инструмента. В идеале пользователь вообще не должен «видеть» систему. Он должен видеть сквозь систему саму выполняемую задачу. Например, когда я печатаю документ, я вижу страницу, заполняющуюся текстом; я не «вижу» текстовый процессор. Опытный пианист видит создаваемую музыку, а не фортепиано; хороший плотник видит гвоздь, входящий в дерево, а не молоток. Подход Хайдеггера к оценке помогает нам создавать системы, более пригодные к использованию.
И только стиль Витгенштейна противопоставляется стилю Декарта. Человек, работающий в этом стиле, рассматривает развитие программного дизайна как разворачивание языковой игры, в которой со временем в язык добавляются новые слова.
Это сразу связывает разработку программного обеспечения с кооперативной игрой изобретения и коммуникации. Вероятно, значительной частью своей модели кооперативной игры я обязан работам Эна. За годы до того, как я разработал идею кооперативной игры, я прочитал и забыл следующую статью. Когда я начал писать эту книгу, я снова её перечитал и был поражён тем, насколько многие мои формулировки перекликались с формулировками Эна.
Эна интересует построение общего опыта через совместную практику, использование самой практики как непосредственной основы для выявления потребностей. Иными словами, он работает с неявным знанием. Более того, он подчёркивает роль мастерства в осуществлении практик (интересно читать слова Miyamoto Musashi, указывающие почти на то же самое). Хотя я и упоминал тему мастерства, Эн развивает её гораздо более глубоко и полно.
