Если бы самолеты строили ИТ-шники
Рубрика: Development, Юмор | 13 April 2008, 21:24 | Vadim Voituk
В блоге Макса Тульева набрел на старый-добрый видеоролик, наглядно демонстрирующий то, как бы выглядло свременной авиастроительство, если бы работало по принципам принятым в ИТ
А опубликовал я его тут не просто так, а дабы подискутировать по поводу отсутсвия ответственности разработчиков за свои проекты.
Вот предположим работает работяга Вася на заводе и делает деталь. При этом после вчерашнего перепоя Вася случайно сбил настройку станка и неделю “штамповал” бракованные детали.
Детали, конечно же, не проходили контроль качества (и это хорошо если он есть) и списывались в брак.
Со временем обнаружили и виновника брака – Васю, который перед запуском серии не произвел замеры и корректировки настроек станка.
Вопрос: с чьей зарплаты вычтут стоимость перепорченного сырья и сорванные сроки поставки партии заказчику?
Правильно – с Васиной!
Некоторые могут не согласиться с корректностью сравнения работы труженика Васи на заводе и разработкой ПО. Но тут я на 100% уверен в правильности аналогии, т.к. разработка ПО уже давно перестала быть творческим трудом, перейдя в разряд промышленного производства.
В теперь предположим, что программист Петя сделал ошибку в каком-нибудь аналитическом приложении и в течении месяца компания оперировала “левыми” данными, в результате понеся финансовые потери, прямые или в виде недополученной прибыли.
Что будет с програмиистом Петей? Вычтут ли с него тысячи недополученной прибыли?
Правильно – не вычтут! Вызовут на ковер, пожурят/покричат, того гляди лишат премии и Петю и его ТимЛида и тестировщика с его QA-лидом. Да и все вроде. И ничего Пете не будет.
Чувствуете разницу между Васей и Петей?
Вообщем тема ответственности разработчиков за свои “поделки” мучает меня достаточно долго, и даже не раз прочувствована на собственной шкуре в разных вариациях.
Особенно актульно это в сферах где, количество пользователей твоего ПО переваливает за миллионы в месяц, при этом пользователи платят за услугу “свои кровные”.
А ведь в Европе часто в трудовой контракт вписывают пункт об ответственности наемного сотрудника за потери или недополученную прибыль компании-нанимателя, в результате действий, бездействий или ошибок в работе сотрудника.
У нас же повсеместно подписывается “бумажка” (по другому назвать эту писульку язык не поворачивается) о материальной отвественности при порче рабочих инструментов (компьютер, стол, кресло, холодильник, и тд.) стоимостью в $1500 суммарно, при этом забывают об ответственности за небольшой баг, допущенный разработчиком, который в итоге “выливается” в сотни тысяч потерь.
Что вы думаете по этому поводу?

Це все правильно! Но, звинувачувати девелопера (односторонньо), на мою думку, є не зовсім коректно. Достатньо часто фірми не дотримуються процедури розробки і тестування (економлять), або розробку довіряють девелоперам без достатнього досвіду.
Нет, не доросли мы ещё до производства.
Всё-таки Вася не занимается ПРОЕКТИРОВАНИЕМ детали, это делают другие люди, и, заметьте, за совершенно другие деньги.
Кроме того, гибкость производства на котором работает Вася довольно низкая. А там, где нужна гибкость – уже давно нет Васи. Его заменили компьютером. Чем кстати, ещё и перепои “победили”.
С таким подходом люди перестали бы идти в программисты =)
Классический идиотизм.
Грубо говоря: если хотите ответственности за ошибки такого уровня-берите в долю. Платите не обычную з.п., а опционы, % от дохода.
“AS IS” – про это вы тоже забыли?
И почему вы говорите, что программисту Пете ничего не будет? Петю будет ругать его руководство, которое сделает выводы.
Как же хочется сбросить ответственность на обычного Васю/Петю, а самому остаться во всём белом?
Баг, допущенный разработчиком и пролезший в программу – это не баг одного человека.
2mrrrr: Дык я и не обвиняю только девелопера – это утрированный вариант.
Илья,
Про проектирование детали никто речи не ведет – просто Вася хреново делает свою работу и по собственной невнимательности “запорол” партию. Если в терминах программирования – неверно закодировал примитивный алгоритм.
Ты же не утверждаешь что проектировщик детали (алгоритма), должен её сам и производить (кодировать)?
Ты же распределяешь работу среди своих подчиненных, а не пишешь весь код сам.
Александр Махомет, понял! Больше ни слова :)
Андрей,
Какого “такого” уровня?
Пример: Года так полтора назад в результате неправильного кодирования примитивной бизнес-логики, несколько тысяч конечных пользователей системы потратили свои деньги впустую.
Суммы конечно небольшие – по $3-$4 с человека, но вот непрямые потери от дальнейшей нелояльности клиента даже подсчитывать страшно.
К тому же был нанесен ущерб бренду и репутации компании-партнера, для которого разрабатывалась услуга, что тоже выливается в непрямые потери.
А ошибочка минимальная.
Конечно же не он один виноват – была ещё группа тестирования, которая баг “прощелкала”, был ещё его тим-лидер, который должен был произвести CodeReview но не успел ввиду запарки, был ещё начальник отдела, который отвечает за весь R&D – досталось всем. Но компании от этого никак не легче…
AS IS применим только на freeware и на недорогом коробочном софте – при разработке же продукта под заказ или аутсорсинге – об этом не может быть и речи.
Так и вижу как какой-то GL в контракте с T-Mobile пишет фразу “AS IS” :)
Наоборот не хочется – потому что сам такой же Вася/Петя.
Ваш комментрарий полон праведного гнева и нежелания заглянуть “по ту сторону барикад”.
Вы расцениваете ответственность как угрозу для себя лично, при этом закрываете глаза на действующие реалии.
А реалии таковы что в результате нецивилизованности нашего рынка, у нас НЕТ никакой ответственности разработчика/тестировщика за потери компании (и меня это пока устраивает:).
А в Европе она есть! И работают же люди! И не брызжут слюной а-ля “класический идиотизм”.
Нет, для ответственности такого уровня не нужны опционы, %, и пр.
Нужно, чтобы менеджеры, которые не имеют никакого отношения к непосредственному выполению работы НЕ ИМЕЛИ ПРАВ устанавливать сроки исполнения.
Такое ПО есть. Стоит оно $n за один экземпляр в год, где n > 5000000.
Если ошибка приводит к проблемам, компания-разработчик выплачивает компенсацию.
Для защиты от внесения ошибок во время разработки в таких случаях применяется более другой процесс с доказательством правильности и т.д.
Ну и простого Васю такой софт разрабатывать не допустят.
Илья, думаю если бы все было так просто – то проблемы уже давно небыло :)
Олег,
Я не говорю о ПО для ядерной энергетики, медицинской диагностики, системах управления полетами и тд.
С ним все ясно – там контроль качества совсем другой.
Я говорю про большую часть остального ПО, разрабатываемого на заказ, особенно в аутсорсе.
AS IS применим только на freeware и на недорогом коробочном софте – при разработке же продукта под заказ или аутсорсинге – об этом не может быть и речи.
Так и вижу как какой-то GL в контракте с T-Mobile пишет фразу “AS IS” :)
—-
Да?
А посмотрите на лицензионное соглашение винды, которое, формально, тоже является контрактом.
Если программа разработчика будет работать на ненадёжном ПО, то она уже по определению не может быть надёжна на 100%. Всё.
Покажите европейские примеры. Реально. Мне даже интересна компания, где в контракте девелопера написано, что он должен платить деньги за свою ошибку.
То, что компании не легче – это проблемы компании и совладельцев. Но никак не наёмных работников. Не надо перекладывать с больной головы на здоровую.
“Неправильное кодирование примитивной бизнес-логики” – вы, простите, кто?
Кто решил, что логика примитивна, и не нуждается в тесте?
Кто пропустил такой код в продакшен?
Что это за гнилая отмазка – прощелкал тим-лид, т.к. времени не хватало.
“Примитивная ошибка”, которую вы приводите в пример, показывает реальный недостаток процесса разработки.
Кстати – на самом деле исходная посылка про рабочего Васю уже спорна/ложна.
И из из посылки про рабочего васю выводятся еще более спорные положения.
С вашим подходом ни одна программа работать надежно не должна.
У меня на столе лежит контракт в котором отдельным пунктом обозначена моя ответственность за потери компании в случае некоректной работы моих разработок.
Вот только пусть сначала докажут что виноват я.
Так же и в ситуации с Петей – доказать будет что-то сложно, да и толку от этого мало.
Да и без такого контракта сделать Петю виноваты будет не сложно: поди докажи что он не нарочно сделал эту ошибку, за что был премировал конкурентами? Тут уже больше вопрос целесообразности.
Тут я с вами согласен- потому и утверждаю что виноват не только Петя а и вся братия во главе с тим-лидом, тестировщиками и начальником ИТ-отдела.
to Vadim Voituk
Тут я с вами согласен- потому и утверждаю что виноват не только Петя а и вся братия во главе с тим-лидом, тестировщиками и начальником ИТ-отдела.
Можливо і вище (винуваті). На мою думку якщо витриманий процес розробки – то ~99% багів можна виловити до кінцевого делівері!.
А на рахунок пункту про відповідальність, то це скоріше навсякий випадок, бо шкода непомічиного багу буває непорівняно вища ніж зарплати тім-ліда, тестерів, девелоперів і т.д. – разом взяті.
А я за то чтобы ввести ответственность разработчика. Вообще, я за лицензирование разработки ПО. Взгляните правде в глаза, самолеты падают и здания обрушаются гораздо реже, чем падает софт. Кстати, обрушения зданий часто валят на расчетные программы использованные при проектировании. И все верят, и даже я. Но страшно не то что все верят, а то что всем кажется это естественным и нормальным. “А… ошибка в программе, ну тогда ладно”.
Ответил постом у себя.
http://blog.leschinsky.in.ua/2008/04/17/otvetstvennost-razrabotchika-po/
Олег, ответил вам у вас же в блоге.
Последние пару лет мои родители работают в сфере строительства. Я вам просто гарантирую, что если бы все программы писали хотя бы с чуть-чуть похожей небрежностью, с какой у нас строят дома, мы б не вылазили из синих экранов.
Просто бетон – намного более надёжный и прощающий ошибки стройматериал, чем биты. А дома строят отвратно. Стрёмно жить в этих домах, после того как узнаешь, как же строят. :\
Ой! Ошибка дошла до клиента и нанесла убыток. Значит:
1. Ошибся программист.
2. Ошибся отдел кадров, который взял человека несоответствующей квалификации.
3. Ошибся Team Leader.
4. Ошибся QA-отдел.
5. Ошибся QA Leader.
6. Ошиблось начальство, которое гонит в шею, вместо того, чтобы нанять больше народу.
Ошиблись все, кроме уборщиц и архитекторов.
Вариант 1: убытки несет фирма.
Думаю, это правильно, ведь ошиблись многие люди, которые работают в одной команде. Ведь гол забивают команде, а не вратарю.
Вариант 2: убытки несут виновные.
Для начала виновных надо найти и установить, в каких долях они должны делить ответственность. Вы считаете, что это реально? Ладно, цепочку людей, через которых прошел баг, мы отследим. Но кто виноват больше – программист, который неправильно написал, или тестировщик, который пропустил? Или начальники? Или преподаватель, который вел алгоритмы на первом курсе. Это абсолютно нереальная затея.
А что касается надежности… софт ненадежен по своей природе. Отследить миллионы ветвлений и поведение программы в любой ситуации невозможно.Поэтому тестируются наиболее вероятные. Причем часто при тестировании всего проекта подразумевается, что если он состоит из 2 частей и каждая из них работает, то вместе они тоже будут работать. А это не всегда так по разным причинам – например, неверная архитектура. Ой! Архитекторы, оказывается, тоже виноваты. Значит, в белом на фирме остались только уборщицы… пока не залезут шваброй в сервер ;)
Може не по темі але погодьтесь актуально. Читаю і серце крається((( Порівнювати нас із заходом це смішно. У нас середня зарплата програміста рази у два менша чим середня зарплата некваліфікованого західного працівника це по країні, а у моєму регіоні зарплата будівельника в межах 100-200% зарплати програміста в середньо або високо розвинутих фірмах. Так справа навіть не в тому … якість освіти взагалі ніяка – мало закладів дають дійсно якісну і практичну освіту. Більшість людей з вищою технічною освітою це заплати гроші і розпишись що диплом отримав. На фірму де я колись працював прийшов хлопчина на співбесіду – вакантна посада “прикладний програміст” так от диплом університету “Х” написано що даний випускник оволодів професією “прикладний програміст” і отримав наступні знання: користування ОС windows 98-vista, офіс (word, exel, …), ICQ, робота в інтернеті, написання процедур мовою pascal. І це за 4 роки. Шкода було хлопчину. Але такі реалії. І університетів які пропонують таку освіту безліч. Ось я прочтав цікаву статтю “http://local.joelonsoftware.com/wiki/Опасности_обучения_на_Java” з автором я погодився так дійсно С і С++ це те на чому варто вчити наступні покоління програмістів і неоминати ASSEMBLER. І головне практика – далеко не кожен може ефективно застосувати отримані знання. А помилки в коді були і будуть а це вже хліб тестувальників…