Изучайте гуманитарные науки
(В оригинале - Read the Humanities)
Практически в любом проекте разработки ПО (кроме самых маленьких) люди работают вместе с другими людьми. Во всех областях, кроме наиболее абстрактных исследований, люди пишут ПО для людей, чтобы помочь им в достижении своих целей. Люди пишут ПО для людей. Этот бизнес связан с людьми. К сожалению, в процессе обучения программистов очень мало внимания уделяется аспекту взаимодействия с людьми – коллегами и заказчиками. К счастью, есть множество исследований, которые могут в этом помочь.
Например, Людвиг Витгенштейн (Ludwig Wittgenstein) выдвинул очень хорошее предположение в работе «Философские Исследования» (Philosophical Investigations), что ни один язык, используемый нами, не может и не является универсальны форматом для передачи мысли, идеи или образа из одной головы в другую. В связи с чем нам уже нужно быть готовым к непониманию в процессе выяснения требований к системе. Витгенштейн также показал, что наша способность понимать друг друга – это следствие не общих определений, а общего опыта, образа жизни. Возможно, это одна из причин, почему программисты, погруженные в проблемы предметной области, работают лучше, чем те, кто от предметной области дистанцируется.
Лакофф и Джонсон (Lakoff and Johnson) представили нам каталог метафор, которыми мы живем (Metaphors We Live By), предполагая, что язык в значительной мере метафоричен, и эти метафоры дают нам шанс взглянуть на то, как мы воспринимаем мир. Даже вполне конкретный термин, как например, «денежный поток» (cash flow), используемый при обсуждении финансовых систем, может быть рассмотрен с метафорической точки зрения: «деньги – как вода». Как эта метафора может повлиять на наше представление системы, работающей с деньгами? Или же часто использующееся выражение «стек протоколов» с верхним и нижним уровнем – оно тоже крайне метафорично: «наверху» находится пользователь, а «внизу» - технология. Это влияет на то, как мы видим структуру проектируемой системы.
Мартин Хайдеггер (Martin Heidegger) изучил то, как люди пользуются инструментами. Программисты создают инструменты, и поэтому для них инструменты находятся в зоне их интересов. Однако для пользователя, как показал Хайдеггер в трактате «Бытие и время» (Being and Time), инструмент становится невидимым, незаметным. Инструмент начинает интересовать пользователя только тогда, когда перестает работать или работает неправильно. И об этой разнице стоит помнить, обсуждая аспекты удобства использования
Элеанор Рош (Eleanor Rosch) пересмотрела модель категорий Аристотеля, согласно которой мы выстраиваем свое понимание мира. Когда программист спрашивает пользователя о требованиях к системе, он старается получить ответ, построенный на предикатах (Предикат - языковое выражение, обозначающее какое-то свойство или отношение). Это весьма распространенная практика, поскольку предикат потом легко становится атрибутом класса или колонкой в таблице. Такой подход – строгий и аккуратный, но к сожалению, как показала Рош (в Natural Categories) и более поздних работах, люди представляют мир совершенно по-другому. Их понимание мира основано на примерах. Некоторые примеры могут быть лучше других, в результате давая неоднозначные, пересекающиеся категории со сложной внутренней структурой. И поэтому, настаивая на ответах в модели Аристотеля, мы не можем задать пользователю правильных вопросов о том, как он представляет мир, и нам будет сложно придти к общему пониманию.
Автор оригинала - Keith Braithwaite