ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 25.10.2023

Просмотров: 355

Скачиваний: 11

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

Профессионализм
77
z
Водить машину .
z
Подать страховую претензию .
z
Регулировать температуру в помещении .
z
Смотреть телевизор .
Но дела обстоят еще хуже . Сейчас в цивилизованном обществе буквально ничего значительного нельзя сделать без работы с про- граммным обеспечением . Не получится рассмотреть, принять или привести в действие никакой закон . Правительство не сможет вы- нести на обсуждение ни один политический вопрос .
Самолеты не смогут летать . Машины не смогут ездить . Не полу- чится запустить ракеты . Корабли не смогут ходить . На дороги ста- нет невозможно нанести покрытие, не получится собрать урожай, остановится производство на сталелитейных заводах, автозаводы не смогут производить автомобили, кондитерские фабрики не про- изведут сладостей, прекратятся торги на биржах . . .
Без программного обеспечения наше общество сейчас как ноль без палочки . Каждое мгновение, когда мы не спим, мы сталкиваемся с программами . А многие даже во сне с ними сталкиваются — от- слеживают фазы сна .
Куда без нас, программистов?
Наше общество сейчас целиком и полностью зависит от программ- ного обеспечения . Оно стало играть роль крови, текущей в жилах нашего общества . Без него блага цивилизации, которыми мы сей- час наслаждаемся, были бы невозможны .
И кто пишет все программное обеспечение? Такие, как мы . Куда обществу без нас, программистов?

1   2   3   4   5   6   7   8   9   ...   20

Глава 2. Почему же Agile?
78
Другие думают, что их вклад в цивилизацию наиболее важен . Но они передают плоды своих трудов нам, а мы, в свою очередь, пишем алгоритмы, по которым работает различная техника, позволяющая отслеживать и задавать тон буквально всей деятельности в совре- менном мире .
Получается, что без нас, программистов, никто не может и пальцем пошевелить .
Но в целом мы работаем плохо .
Как думаете, какая доля ПО, которое присутствует почти везде, протестирована должным образом? Сколько программистов могут сказать, что у них есть тестовый набор, который подтверждает с вы- сокой долей вероятности, что программы, которые они написали, работают?
Работают ли сотни миллионов строк кода, из которого состоит ПО вашего автомобиля? Вы находили какие-нибудь ошибки в них?
Я находил . А что скажете насчет кода, под управлением которого работают тормоза, газ и рулевой механизм? Там есть ошибки? Суще- ствует ли тестовый набор, который можно запустить в любое время и который подтвердит с высокой вероятностью, что когда ваша нога нажмет на педаль тормоза, машина действительно остановится?
Сколько людей погибло из-за того, что программное обеспечение в их автомобилях не смогло правильно отреагировать на давление ноги водителя на педаль тормоза? Точно сказать нельзя, но много .
В 2013 году «Тойота» потерпела миллионные убытки, поскольку
ПО содержало «возможное инвертирование разрядов, смертельные задачи, влекущие нарушение отказоустойчивости, повреждение содержимого оперативной памяти, одиночные неисправности элементов, влекущие за собой отказ всей системы, несовершенство

Профессионализм
79
защиты от переполнения стека и буфера, одиночные неисправно- сти отказоустойчивых систем и тысячи глобальных переменных», а сам код был запутан, как «спагетти»
1
Программы, написанные нами, приводят к гибели людей . Что я, что другие наверняка становятся программистами не для того, чтобы кого-то убивать . Многие из нас постигли искусство программи- рования, потому что, еще будучи детьми, мы писали бесконечные циклы, которые выводили наши имена на экран, и нам это казалось невероятно крутым . Но сейчас от наших действий зависят жизни и судьбы . И с каждым днем появляется все больше кода, который ставит на кон жизни и судьбы все большего количества людей .
Катастрофа
Однажды наступит день, если еще не наступил, когда какой-нибудь несчастный программист по небрежности натворит глупостей, ко- торые приведут к гибели десятка тысяч людей за раз . Задумайтесь об этом на минутку . Несложно представить себе несколько вероят- ных сценариев . И если так случится, то политики всего мира под- нимутся в праведном гневе (как и полагается) и недвусмысленно укажут пальцем на нас .
Должно быть, вы подумаете, что пальцем покажут на наше началь- ство или руководство наших компаний, но мы отлично помним, что было, когда пальцем показали на исполнительного директора североамериканского подразделения «Фольксваген», и он предстал
1
Safety Research & Strategies Inc ., Toyota unintended acceleration and the big bowl of «spaghetti» code [blog post] . 7 ноября 2013 г . URL: https://
www.safetyresearch.net/blog/articles/toyota-unintended-acceleration-and-big-bowl-
%E2%80%9Cspaghetti%E2%80%9D-code.


Глава 2. Почему же Agile?
80
перед Конгрессом . Политики поинтересовались, зачем «Фольсква- ген» устанавливал в свои автомобили программное обеспечение, которое целенаправленно обманывало оборудование для испы- таний на количество и качество выбросов, которое применяется в Калифорнии . Он ответил: «Это не решение компании, насколько я знаю, менеджеры не имеют к этому отношения . Это сделала пара программистов, исходя из каких-то своих целей»
1
Получается, в итоге крайними выставят нас . И это правильно .
Потому что именно наши пальцы стучали по клавиатуре, набирая код, наша дисциплина хромала на обе ноги, а самой первопричиной послужила наша беспечность .
Именно это отдавалось эхом в моей голове, когда я возлагал боль- шие надежды на Agile . Тогда, как и сейчас, я надеялся, что дисци- плина, обретенная благодаря Agile, станет первым шагом навстречу тому, чтобы сделать профессию программиста по-настоящему почетной .
РАЗУМНЫЕ ОЖИДАНИЯ
Далее приведен вполне разумный список того, чего ожидают от нас руководство, пользователи и клиенты . Обратите внимание, что по мере прочтения списка, с одной стороны, вы согласны, что все эти ожидания вполне обоснованны . А с другой стороны, если в вас заговорит программист, будет страшновато . С точки зрения программиста сложно представить, как можно оправдать такие ожидания .
1
O’Cane S . Volkswagen America’s CEO blames software engineers for emissions cheating scandal // The Verge . 8 октября 2015 г . URL: https://www.theverge.
com/2015/10/8/9481651/volkswagen-congressional-hearing-diesel-scandal-fault.

Разумные ожидания
81
Соответствие этим ожиданиям — это одна из основных целей
Agile .
Принципы и методы Agile напрямую затрагивают большую часть ожиданий из этого списка . Подобное отношение к работе требует от своего коллектива любой хороший технический директор . Что- бы понять эту точку зрения, представьте, что я и есть ваш техниче- ский директор . И вот что я от вас ожидаю .
Фирма веников не вяжет!
Неприятно, что в нашей сфере вообще приходится упоминать о том, что код нужно писать качественно . А что поделать? Я уве- рен, дорогие читатели, что многим из вас довелось хотя бы раз не оправдать это ожидание . Мне доводилось .
Чтобы понять всю глубину проблемы, рассмотрим отключение сети управления движением воздушного транспорта над Лос-
Анджелесом из-за сброса даты 32-битных часов . Или отключение всех двигателей на борту самолета Boeing 787 по той же причине .
Или сотни жертв крушения Boeing737 Max из-за сбоя системы
MCAS .
А как насчет моего собственного опыта с сайтом healthcare.gov на заре его существования? После первого входа, как и на многих со- временных сайтах, в целях защиты от взлома мне нужно было от- ветить на ряд вопросов . Одним из вопросов был «запоминающаяся дата» . Я ввел:
21.07.73
. Сайт мне выдал, что я ввел неправильное значение .
Я программист . И знаю образ мышления программистов . В итоге я попробовал ввести дату в разных форматах:
21/07/73
,
21-07-1973
,
21
July
1973
,
21071973
и тому подобное . Результат был одинаков .


Глава 2. Почему же Agile?
82
Неправильное значение . Я расстроился . Что за приколы? Какой формат вам еще нужен?
Потом меня осенило . Программист, написавший код для сайта, не знал, какие вопросы будут задаваться . Он просто выдергивал вопросы из базы данных и сохранял ответы . Этот программист, вероятно, не предусмотрел поддержку нестандартных символов и чисел для ответов . Так что я набрал «годовщина свадьбы» . На- конец, получилось .
Думаю, что вполне справедливо сказать, что любая система, ко- торая требует от пользователя мышления программиста, чтобы ввести какие-либо данные, — дрянь .
В этом разделе я мог бы рассказать массу историй об отстойном программном обеспечении . Но другие уже сделали это намно- го лучше . Если вам хочется ближе ознакомиться с масштабами этой проблемы, советую почитать книгу Гойко Аджича Humans vs
Computers
1
и книгу Мэтта Паркера Humble Pi
2
Вполне разумно, что боссы, клиенты и пользователи ждут от нас программ высокого качества с наименьшими недочетами . Никому не нужна ерунда, особенно если заплачены приличные деньги .
Обратите внимание, что упор Agile на тестирование, рефакторинг, простоту проектирования и обратную связь с заказчиком — это очевидное лекарство от низкого качества кода .
1
Adzic G . Humans vs Computers . London: Neuri Consulting LLP, 2017 . URL: http://humansvscomputers.com.
2
Parker M . Humble Pi: A Comedy of Maths Errors . London: Penguin Random
House UK, 2019 . URL: https://mathsgear.co.uk/products/humble-pi-a-comedy-of- maths-errors.

Разумные ожидания
83
Всегда готовы
Самое последнее, чего от нас ожидают клиенты и руководство — что мы, программисты, будем как ненормальные переносить сроки поставки программного обеспечения . Но такие опоздания в мире разработки происходят сплошь и рядом . Причина таких задержек часто в том, что разработчики пытаются оснастить программу сразу всем функционалом, а не делать в первую очередь наиболее важные функции . Покуда есть функции, которые реализованы, протестированы или документированы лишь наполовину, про- граммой пользоваться нельзя .
Другая причина переноса сроков — это доводка программ до ста- бильного состояния . Разработчики зачастую не принимают в рас- чет непрерывное тестирование, когда они наблюдают за тем, чтобы не было сбоев . Если в течение какого-то времени не обнаружено никаких сбоев, разработчики могут смело рекомендовать про- граммное обеспечение к развертыванию .
Agile помогает решить эти проблемы с помощью простого прави- ла, которое гласит, что программа должна быть технически готова к развертыванию в конце каждой итерации . «Технически готова» означает, что с точки зрения разработчиков продукт достаточно стабилен в техническом плане для развертывания . Код написан чисто, а тесты успешно пройдены .
Это значит, что работа, проделанная в течение итерации, включает в себя написание всего кода, прохождение всех тестов, написание всей документации и доводку до стабильного состояния всех исто- рий, реализованных во время этой итерации .
Если в конце каждой итерации программа технически готова к раз- вертыванию, то само развертывание производится по решению


Глава 2. Почему же Agile?
84
клиента, а не из технических соображений . Клиент может посчитать, что для развертывания не хватает функционала, или может отло- жить развертывание по причинам, связанным с условиями рынка или обучением пользователей . В любом случае ПО соответствует необходимому качеству и технически готово к развертыванию .
Возможно ли такое, что программа технически готова к разверты- ванию в конце каждой недели или двух?
Конечно, да! Просто команде не нужно браться за непосильное количество историй, чтобы успеть выполнить все задачи и обеспе- чить развертываемость программы до окончания итерации . Также разработчикам стоит автоматизировать большую часть работ по тестированию .
Как и с точки зрения бизнеса, так и с точки зрения клиентов ожи- дание постоянной технической готовности продукта вполне есте- ственно . Когда клиент видит, что функция работает, он думает, что работа над ней завершена . Он никак не ожидает того, что нужно подождать еще пару месяцев, чтобы обеспечить гарантию качества и стабильности . Ему не понять того, что функция заработала лишь потому, что программисты для демонстрации возможностей пошли в обход нерабочего кода .
Стабильная производительность
Вы, наверное, заметили, что зачастую команды программистов про- двигаются очень быстро первые несколько месяцев, пока проект еще нов . Когда не существует основного кода, который замедляет работу, можно написать много рабочего кода за короткое время .
К сожалению, через некоторое временя в коде появляется бардак .
Если в коде не поддерживать порядок, то он будет тянуть команду

Разумные ожидания
85
назад и замедлять ход проекта . Больше бардака — меньше скорость работы команды . Чем меньше скорость, тем сильнее поджимают сроки, а следовательно, больше спешки, приводящей к еще боль- шему беспорядку . Принцип снежного кома приводит к тому, что команда практически впадает в ступор .
Руководители, озадаченные медленной работой, могут принять решение добавить специалистов в команду и увеличить производи- тельность . Но, как мы уже знаем, расширение команды замедляет работу еще на несколько недель .
Есть надежда, что по прошествии нескольких недель новички вый- дут на требуемый уровень производительности и проект пойдет быстрее . Только вот кому придется их обучать? Тем, кто и сотворил бардак . Новички, конечно, вберут от своих учителей не только самое лучшее .
Что еще хуже, они будут равняться на имеющийся код . Они посмо- трят на уже написанный код и сделают вывод, как нужно работать в этой команде . А затем будут точно так же «бардачить» . Именно поэтому производительность неуклонно падает, несмотря на под- ключение новых специалистов .
Менеджеры могут повторить эти действия еще несколько раз, ведь делать одно и то же и ждать иного результата — это показатель вме- няемости руководства в некоторых организациях . В конечном ито- ге боссы узнают правду, но будет уже поздно . Уже ничто не сможет остановить неотвратимое погружение в бездну медлительности .
Отчаявшись, менеджеры спросят разработчиков, что можно сде- лать для повышения производительности . У разработчиков уже готов ответ . Уж они-то понимают, что делать . Они только и ждут того, чтобы их спросили .