Литмир - Электронная Библиотека
A
A

В комнате повисла пауза.

– Но тогда почему первичное определение встречается чаще остальных? – робко спросил Армигер.

– Мой юный друг, стремящийся к знаниям, попробуй взглянуть на это с точки зрения эффектов «Ошибка приоритизации гипотез» [3] и «Знаний задним числом». И выдели на изучение этих когнитивных искажений хотя бы пару часов – Выдержав паузу, Чеширский Кот подвел итог перерыву: – По коням друзья. Заказчик еще не верит, что качество нашей системы достойно их серверов.

PS. Вместо послесловия. Через несколько дней Армигер обнаружил в почте ссылку на статью об экспертах http://u-96.livejournal.com/2507992.html

[1] Искаженная цитата из второй главы первого тома лекций Фейнмана по физике

[2] Смотри вторую главу из первого тома лекций Фейнмана по физике

[3] Цитата:

Не знаю, как называется эта ошибка – даже не уверен, что у неё есть официальное название, – но, если бы поименовать её довелось мне, я бы назвал её «ошибкой пиритизации гипотез». Как бы подоступнее объяснить? Ну… представьте себе, что у вас миллион коробков, и только в одном из них алмаз. И у вас целый ящик детекторов алмазов, каждый из которых всегда срабатывает в присутствии алмаза, но к тому же срабатывает и на половине пустых коробков. Если использовать двадцать детекторов, то в конце концов останется, в среднем, один истинный и один ложный кандидат. И после этого достаточно использовать один-два последних детектора, чтобы определить настоящее местоположение алмаза. Смысл этой метафоры в том, что, когда перед вами множество гипотез, большая часть времени уходит на поиск самых правдоподобных. А уж выбрать из них одну намного проще. Так что сразу начать рассматривать некую гипотезу, не имея в её пользу никаких свидетельств, значит пропустить основной этап работы. Как если живёшь в городе с миллионом человек, в котором произошло убийство, и детектив говорит: «У нас нет никаких улик, так что давайте рассмотрим вероятность того, что убийца Мортимер Снодграс»

Байка для оруженосца 5. Использование вариантов использования

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

На кухне собралась обычная компания, только Королевы не было. На вопрос об ее отсутствии ответил Чеширский Кот:

– Сейчас она проект толкает. Вообще, у хорошего руководителя проекта основная работа приходится до старта проекта, на старт проекта, перед финишем и после финиша.

– А в середине проекта можно и в отпуск сходить – с завистью заметил Мартовский Заяц.

– Или журналы почитать – добавил Безумный.

– Как Быков в «Стажерах»? – догадался Армигер.

– Как Быков – согласился Чеширский – Быков, он хороший руководитель. Очень хороший. И хорошо, что он термин «менеджер» не слышал. Но довольно, молодой человек, об этом. Если есть время, его нужно использовать. Чем вы сейчас занимаетесь?

– Требованиями. Ревизией и выбором формата, – отрапортовал Армигер.

– Хорошее дело. И как обычно, есть несколько «но». – Чеширский помолчал и спросил: – что вас беспокоит, мой друг? И давайте на сегодня ограничимся одним вопросом. Что сейчас вас беспокоит сильнее всего?

– Юзкейсы – понурился Армигер.

– Если беспокоит – не чеши. Лучше маслом помажь, – порекомендовал Заяц.

– Погоди, – вмешался Чеширский, – не путай его. Давайте я выдвину несколько гипотез – и, после того, как Армигер кивнул, продолжил, – вероятно, вас смущает, что их часто рекомендуют, но редко пишут; что есть юзкейсы, а есть диаграмма юзкейсов, что если есть BPML и IDEF, то зачем нужен текстовый формат?

– И если их так настойчиво рекомендуют, то они должны иметь массу преимуществ.

– Главное преимущество вариантов использования, это то, что они варианты использования, – отрезал Шляпник и демонстративно посмотрел на свою коллекцию часов.

– А разве это не одно и то же? – робко возразил Армигер.

– Так ты еще, чего доброго, скажешь, что «разработка требований» и «требования к разработке», – одно и то же, – вмешался Заяц.

– Так ты еще скажешь, – проговорила, не открывая глаз, Соня, – будто «тестирование производительности» и «производительность тестирования», – одно и то же.

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

– И что?!

– А вот это интересный момент, – подключился Шляпник, – смотри. Приходит на собеседование программист. SQL знает, базы данных проектировал. Даем задание: «База данных должна содержать историю курсов валют Центробанка. Спроектируйте необходимые таблицы». Обычно рисуют что-то вроде такого.

Поля:

идентификатор записи;

код валюты;

курс по отношению к базовой валюте;

начало действия курса.

Заметим, выдвинутым требованиям разрабатываемая система отвечает. История курсов хранится. Вот только есть проблема. Программист не думал, что систему будут использовать. Запросы на выборку из этой таблицы оказываются достаточно сложны. Какой курс действовал первого апреля? А какой сейчас? И далее претенденты начинают городить сложные SELECT-конструкции. В условиях стресса на собеседовании это приводит к любопытным результатам. Некоторые исписывают пару листов. А всего то нужно добавить в таблицу одно поле «Дата окончания действия» и для выборки будет достаточно простого запроса с тривиальным:

where <дата на которую производится выборка> between <Начало действия курса> and <Окончание действия курса>

Бывают и более интересные прецеденты.

Шляпник повернулся к Зайцу:

– Помнишь программиста, который предлагал в одной таблице хранить актуальные данные, а во вспомогательной сделать архив?

– А то! – откликнулся его напарник.

– А тут-то что не так? – спросил Армигер.

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

Заяц будто вспомнил о чем-то, выудил из-под стола бубен и принялся скакать вокруг Сони, мужественно заснувшей мордочкой на клавиатуре ноутбука.

Далее слово взял Чеширский Кот:

– Описание использования системы позволяет избежать множества проблем. Возьмем ту же JRA-1330. Серьезнейшая ошибка, «критикал». Сколько клиентов просило ее исправить! Но исправить ее невозможно. Об этом довольно неплохо написал Максим Крамаренко. А избежать ее было очень просто. Достаточно было описать, как эта трекинговая система будет использоваться. Например, как она будет использоваться для взаимодействия между заказчиком и исполнителем. И тогда бы всплыло, что менеджмент-исполнитель захочет скрыть сумму контракта на доработку от простого исполнителя, а потраченные часы скрыть от заказчика. Всего-навсего – описать способ использования системы.

Ладно, коллеги, на сегодня разминка окончена, прошу к рабочим столам.

Кот встал, потянулся и начал исчезать. Армигер вздохнул, глядя на повисшую в воздухе улыбку, и пошел на рабочее место.

Байка для оруженосца 6. Куб Неккера

– Скоро, скоро зацветет сирень – мечтательно протянул, глядя в окно и прихлебывая «Спринг Мелоди», Чеширский Кот. Он с интересом следил за крадущимися к Оруженосцу Зайцем и Шляпником.

– У, какая знакомая табличка, – вдруг заявил Мартовский.

4
{"b":"807224","o":1}