Архитектор, помни об этике! PDF Печать E-mail

(В оригинале Software architecture has ethical consequences)

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

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

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

Другой пример. Вы разрабатываете новую функцию для очередной версии вашего ПО, и у вас есть два варианта. Более простой – добавить дополнительное поле в таблицу и форму ввода и сделать все за день-два, и более сложный – не добавлять его и потратить неделю-две. Какой вариант вы выберете?

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

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

Автор оригинала - Michael Nygard