У програмної архітектури є етичні аспекти

Майкл Найгард

Етичний аспект програмного забезпечення стає очевидним, коли мова заходить про громадянські права, розкраданні особистих даних або шкідливих програмах Однак він виявляється і в менш екзотичних обставинах Успішно працюючі програми впливають на життя тисяч, а то і мільйонів людей Їх вплив може бути як позитивним, так і негативним Програми здатні поліпшити або погіршити наше життя – нехай навіть незначною мірою

Кожен раз, коли я приймаю рішення щодо поведінки програми, я насправді вирішую, що зможуть і що не зможуть робити її користувачі Причому прийняте рішення набагато жорсткіше, ніж законодавство: не існує апеляційного суду, в якому можна було б опротестувати вибір обовязкових для заповнення полів або сувору послідовність операцій

На цю проблему можна подивитися і з точки зору ефекту масштабу Згадайте історії про останні інтернет-хробаків чи фільмах-блокбастерах Напевно вам зустрічалися підрахунки того, скільки робочих годин було втрачено через них в масштабах країни Завжди можна знайти якогось аналітика з оцінками нечуваного збитку, нанесеного чим-небудь, здатним відвернути людину від робочого столу Мораль цієї історії зовсім не у викритті математичного невігластва преси та дешевої погоні за сенсаціями Насправді мова тут йде про той ефект, який можуть дати маленькі числа у великому масштабі

Уявіть собі, що ви повинні прийняти рішення щодо деякої функції Є два варіанти реалізації: простий, вимагає одного дня роботи, і складний, який відніме тиждень У найпростішому варіанті доводиться вводити чотири нових обовязкових поля, а в складному програмі вистачить розуму на те, щоб обробити неповні дані Який спосіб вам слід вибрати

Обовязкові поля виглядають досить безневинно, але з ними ви навязуєте свою волю користувачам, змушуючи їх збирати додаткову інформацію до початку роботи А це часто означає, що дані доведеться записувати на папірцях, щоб зібрати їх в одному місці і ввести в систему одноразово Все це веде до втрати даних і затримок, а також викликає роздратування у користувачів

Розглянемо таку аналогію: припустимо, мені потрібно прикріпити на будівлю вивіску Чи можна змонтувати її на висоті 1,8 м, змушуючи тим самим пішоходів пірнати під неї або обходити її стороною Звичайно, мені буде простіше обійтися без сходів і будівельних лісів, при цьому вивіска навіть не буде повністю перекривати рух Я економлю годину на установці ціною двох секунд, які я забираю у кожного пішохода, проходить повз мого магазину З плином часу сума цих двосекундних втрат набагато перевищить зекономлений мною годину

Неетично ускладнювати життя іншим (навіть ненабагато) тільки для того, щоб трохи спростити її для себе Успішні програми впливають на життя мільйонів людей, але кожне прийняте вами рішення фактично навязує вашу волю користувачам Завжди памятайте про те, що ваші рішення вплинуть на життя цих людей Будьте готові взяти на себе додаткову ношу, щоб зняти частину вантажу з ваших користувачів

Біографія автора наведена на стор 31

Джерело: Форд Н, Найгард М, де Ора Б, 97 етюдів для архітекторів програмних систем – Пер з англ – СПб: Сим-вол-Плюс, 2010 – 224 с, Мул

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*