Байки для оруженосца
Благодарности
Спасибо всем, кто меня поддерживал. Давал новые идеи для статей, присылал забавные и не очень случаи из жизни. Сообщал об ошибках в тексте. Иногда присылал готовые куски текста.
Особая благодарность Вере Даниловой за рисунки. Может они не самые красивые, зато они соответствую духу баек.
Спасибо всем.
Пролог. Некоторая информация о персонажах
- Править нужно сидя лицом к югу.
- А почему к югу?
- Важно, не то, что к югу, важно, что сидя.
Аримигер (Оруженосец) – недавний участник группы разработки. По уровню группы находится между стажером и начинающим. По уровню запросов рынка вышел за запросы рынка. Молодой парень, который совсем недавно попал в цепкие руки Королевы. До этого считал, что, отлично разбирается в своей специальности и в том, как работать в команде и над проектом. Теперь ему все чаще кажется, что он вообще ничего не знает. Глупо загадывать заранее, но, возможно, это та самая пешка, которая однажды дойдет до конца поля.
Королева. До сих пор не знаю, то ли она Красная, то ли Белая, то ли Черная. (По английской традиции в шахматах два цвета: белый и красный.) Руководитель разработки. Характер… Многие в соседних отделах считают Королеву грубой, но команда в ней души не чает. Руководитель команды. Потрясающая женщина. Страшная женщина. Железная женщина. Нет, кроме шуток. У нее стальные нервы, железная хватка, титановые яичники и чугунная задница. Поговаривают, что единственное, что у Королевы сделано не из металла - это сердце. Потому что оно каменное. Несмотря на все вышеперечисленное, обожает свою команду, и та отвечает ей тем же. Почти никто не может понять, как Королеве удалось собрать такую дрим-тим, ведь у большинства этих хмырей уважающий себя менеджер по работе с персоналом даже резюме смотреть не стал бы. А вот поди ж ты. Команда Королевы справляется с любыми заданиями, разгребает любые факапы, и если бы дело было в СССР, то вымпел «Передовики производства» поселился в их комнате навеки. Королева знает свое дело от и до и никогда не отказывается поделиться опытом с молодежью - чай, корона не свалится.
Все знают, что в фирме может смениться даже руководство, но Королева никуда не денется. А если захочет уйти, то с ней уйдет и вся команда. И их с радостью примут - хоть в НАСА, хоть в НАТО. На худой конец и «Микрософт» сойдет.
Соня. Судя по всему, тестировщик. Хотя в свете последних событий я в этом сильно не уверен. Милая девушка, пришла в команду до Оруженосца, но, в отличие от него, своей карьерой особо не интересуется. Нет, когда начальству взбредает в голову отправить ее на какой-нибудь семинар и повысить ее квалификацию, она добросовестно ездит и даже получает свои законные сертификаты и дипломы. Которые потом складывает в верхний ящик стола - их там уже целая пачка. Короче, крепкий, надежный тыл. Для Сони главное, чтобы зарплаты хватало на жизнь и на хобби - в свободное от работы время она ездит по туристическим тропам.
Безумный Шляпник - один из мастодонтов. На его кресле висит свитер, в котором, как утверждает сам Шляпник, он написал свою первую программу, на ЭВМ с ферритовыми сердечниками памяти. Этот свитер до чертиков пугает новичков - может, потому что он в неприятную красно-зеленую полоску, навевающую ассоциации с «Кошмаром на улице Вязов» и мальчиком, которого съела кровать. Впрочем, Шляпник и сам кого хочешь сожрет, без всякой кровати. Но если не испугаться свитера и спросить Шляпника о чем-нибудь по предмету, можно узнать кучу всего интересного.
Мартовский Заяц - тоже один из тех, кто переносил «Страну багровых туч» на восьмидюймовых дискетах и помнит времена, когда компьютеры были большими. Славен тем, что, когда вся команда бьется над участком кода и не может сладить, молча приходит, садится и пишет код, больше похожий на бессмысленный набор символов, который при этом, что удивительно, работает как часы. Главное - не лезть в него и не пытаться ничего менять.
Чеширский Кот - наглая, беспринципная, циничная сволочь с очень злым чувством юмора, граничащим с сарказмом. Иногда кажется, что он умеет быть сразу в нескольких местах одновременно. За рабочий день успевает пофлиртовать с девушками на ресепшене, попить чаю с тортиком с бухгалтерами и сыграть с гендиром пару раундов в «Need For Speed». Однако, когда злопыхатели пытаются уличить его в лености и невыполнении служебных обязанностей, выясняется, что у Чешира всегда все готово. Просто он умеет распоряжаться своим временем. Злые языки утверждают, что у него был роман с Королевой, но это совершенно не их дело.
А да, еще. Дисклаймер.
Я не несу ответственности за слова героев данных рассказов. И не несу ответственности за вред, который вы можете нанести себе чтением или применением советов из этих рассказов.Уровень сложности не «Матан», но и не «Кэп». Берегите мозг.Российский вариант «Алисы» не соответствует английской. У нас другой культурный контекст, плюс переводчики «Алисы» изменили гендерную идентификацию. Если случайно кто-то будет переводить на английский, знайте, что англичане перевода могут не понять. В «Байках» не Кэрролловские герои, а какие-то другие. Подробнее об изменении характера героев можно прочитать в статье «Багира сказала…» http://magazines.russ.ru/voplit/2009/2/eli12.html Рекомендую.PS. Этюды для тестировщиков. В этом тексте есть интересная фича не относящаяся к теме обсуждения, которая кажется серьезной багой. Багу найти легко. Описать фичу - сильно сложнее. Welcome.
Байка для оруженосца 1. Немного о «вреде» тестирования
A. Тестировщики тормозят процесс разработки по Agile?
Q. Вопрос сформулирован неверно. Agile, не Agile - это перпендикулярное измерение. В малых проектах выделенный тестировщик тормозит процесс.
A. А в больших?
Q. Слишком часто тоже тормозит. Но по другой причине. В малых проектах имеет место эффект «чем больше команда, тем дольше делаем проект». В больших же имеем эффект «ограничение системы перенесено на самый дешевый участок».
A. Тестировщики необходимы.
Q. Не то чтобы необходимы, но иногда полезны. Иногда и только после того, как внедрены другие процессы.
A. Тестировщики нужны всегда!
Q. Меня берет сомнение, что уровень процесса тестирования может быть выше уровня процесса версионного контроля. Если версионный контроль на нуле, то надобность в выделенных тестировщиках вызывает сомнение.
A. Но ведь появление тестировщиков в индустрии принесло огромную пользу.
Q. В том виде, в котором происходило это внедрение - это скорее огромный вред. Модель разделения ролей «РУТ» (разработка, управление, тестирование) глубоко порочна.
A. Но без тестировщиков нельзя сделать сложный проект.
Q. Странно. Но делали же. Видимо, пацаны «не знали».
A. Тестирование позволяет лучше удовлетворить заказчика.
Q. Учитывая, что большая часть дефектов вносится в систему до кодирования, мне кажется, в высшей мере странным ставить ОТК только после кодирования. Контроль до кодирования принес бы куда больше пользы.
Байка для оруженосца 2. Управление работами не «пинание всех»
Было время вечернего чаепития, и оруженосец (armiger) пошел на запах кофе. В кухне с удобством расположилась Белая Королева (queen).
Я хочу стать руководителем проекта (далее РП). Что мне для этого делать?Q. А зачем оно тебе? Работа скучная и неблагодарная. Если проект успешен, то это успех команды, а если не успешен, то это провал РП.???Q. Есть всего несколько вещей, которые РП должен делать. Одна из самых неприятных - это управление потоком работ.Что же в этом неприятного и сложного? Ходи да пинай всехQ. Управление работами вовсе не «пинание всех», - королева вздохнула - Ладно слушай.
РП пишет план.План пишется РП.Если некто не пишет план, то он не РП.По-другому иногда бывает, но сейчас этим можно пренебречь.Не РП тоже может писать план. Это нормально.
Продолжительность программного проекта - вариативная величина.И сильно вариативная. Коэффициент от 1 до 16, при среднем 4.Продолжительность работы в рамках программного проекта тоже вариативная величина.Продолжительность работы имеет больший разброс, нежели продолжительность проекта.Выдающиеся специалисты по качеству (Шухарт, Деминг, Голдратт) имели выдающиеся знания по теорверу и статам.Выдающиеся теории управления: TQM, TOC, 6 сигм, … - построены на теорвере и статах.Не знающий центральной предельной теоремы и прочего теорвера со статами будет планировать плохо.
Диаграмма Ганта не подходит для планирования программного проекта.Диаграмму Ганта можно использовать для создания календарного графика, но не плана.Диаграмму Ганта не стоит использовать для планирования программного проекта.Использование диаграммы Ганта для планирования программного проекта ведет к увеличению срока проекта.Для ускорения хода проекта откажись от диаграммы Ганта. В крайнем случае используй ее после других инструментов планирования.Как составить план без диаграммы Ганта? - не мои проблемы. Ты умный, у тебя высшее образование.
Программные проекты сложным образом зависят от величины команды.Для проектов порядка 1000 функциональных точек (60KLOC на С) команда из 5 человек работает быстрее, чем команда из 10 человек, а команда из 10 быстрее, чем команда из 20.«Шестой лишний» - хочешь ускорить небольшой проект - отстрани от него шестого и более участника.Если это неправда, то в твоем проекте очень серьезные проблемы. Просто ты о них не знаешь.А может и нет.
Время выполнения операции зависит от исполнителя.Время выполнения операции сильно зависит от исполнителя.Время выполнения операции очень сильно зависит от исполнителя.Трудоемкость операции без исполнителя - это профанация.Нужна трудоемкость без исполнителя? Измеряй в попугаях.Считаешь, что измерение в попугаях - это детский сад? Измеряй в слонах.«Я не боюсь показаться смешным. Немногие могут себе это позволить.»
План состоит из описания результатов, а не описания действий.Поставить готовиться мясо - это плохой пункт плана, мясо приготовлено – хороший.
РП, нацеленный на результат, пишет план в терминах результатов.Хороший РП пишет хороший план в терминах результатов.РП, нацеленный на процесс, пишет план в терминах действий.Плохой РП пишет плохой план в терминах действий.По-другому тоже бывает. Но это вряд ли твой случай.
Пункт плана не может иметь исполнителя.Пункт плана может иметь ответственного.Пункт плана не имеет трудоемкости.Это не совсем так, но в целом верно.
Пункт плана не имеет срока завершения.Пункт плана может иметь временные зависимости/ограничения.Не пытайся понять это сразу, просто вернись к этому через какое-то время.
Для ускорения хода проекта планируй неполную загрузку сотрудника.Полная загрузка всех сотрудников на проекте, как правило, приводит к параличу проекта.Вряд ли у тебя получится рассчитать запас по мощности точно. Не сможешь рассчитать - используй эмпирические 25%.
A. Но это какая бессмыслица!
Q. Не обязательно бессмыслица то, что противоречит общепринятым практикам. Если бы Генри Форд делал автомобили так, как принято, мы до сих пор бы ездили в каретах.
A. Нельзя поверить в невозможное!
Q. Просто у тебя мало опыта. В твоем возрасте я уделяла вере в невозможное полчаса каждый день! В иные дни я успевала поверить в десяток невозможностей до завтрака!
Но тут время чаепития закончилось, и Королева отправилась заниматься одним из самых неприятных дел руководителя проекта. Планированием.
Байка для оруженосца 3. Пятница тринадцатое или прикладное неестествознание в старый новый год
В первую пятницу вечером на кухне было шумно. Пятница тринадцатое, старый новый год и первая пятница в новом году давали немало поводов для рассказов, обсуждений и сплетен. На кухне был даже Чеширский Кот, редкий гость в офисе. Обычно он мотался по командировкам чему немало способствовала его способность к перемещениям. Но в январе был мертвый сезон и кот откровенно предавался отдыху.
Легкой походкой на кухню влетела Королева.
CC. Ваше Величество, вы светитесь, как будто вы Ваша Светлость. Нет, даже как Ваше Сиятельство.
Q. О, да, мой вечно исчезающий друг. На этой неделе мне удалось прибить две дюжины вампиров!
CC. Отличный результат! На прикладе вашего плюсомета скоро не останется места для новых отметок.
A. Какие вампиры?
CC. Вампиры, молодой человек - это такие создания, которые пьют кровь или жизненные силы.
A. Спасибо, кэп. Но все-таки?
Q. Не все проекты, которые делаются в фирме, одинаково полезны. Рано или поздно в фирме заводятся проекты-вампиры. Они бесполезны или относительно малополезны. Они пьют жизненные силы организации. Когда их заводится слишком много, организация хиреет и даже может умереть. Но к счастью, еще много миллионов проваленных проектов назад, шаманы, из трибы бизнес аналитиков разработали амулет, отпугивающий проекты-вампиры. Использовать силу этого амулета легко. Достаточно твердо придерживаться двух правил: «Не запускать проект, если нет напечатанной карточки проекта», - и королева направилась наливать чай, всем своим видам показывая, что разговор окончен.
A. А второе?
Q. Как?! Ты прослушал?! Ты прослушал «Второе правило»?! Тогда слушай внимательно еще раз и не говори, что не слышал. Молодежь попробует вести эти карточки в вики, трекстудии или в праймовере. Это само по себе не плохо. Но только настоящие, посвященные шаманы знают, что отпугивающим эффектом обладает лишь бумажная карточка, которая лежит в папке Сумера в тумбочке Галант с наклеенным цветным стикером резолюции.
A. Почему «Сумера»?!
H. Потому что коза - Зойка. В этом деле мелочей не бывает - раздалось с углового стола.
Королева неодобрительно покосилась в угол
Q. - Потому что править нужно сидя лицом к югу. - и продолжила -
Подобный амулет начального уровня неплохо отгоняет бесполезные проекты-вампиры.
A. Вы сказали бесполезные? А что бывают вредные?
Q. Сколько угодно.
A. Против них этот амулет действует?
Q. Нет. Против вредных проектов нужно более сильное колдунство. Кроме того, есть еще проекты-зомби. Их также сложно отпугнуть этим амулетом.
A. Мадам, а не могли бы вы показать пример карточки?
Q. Нет. - Отрезала королева. - Все запасы амулетов были израсходованы в ходе похода против нежити. -Подумав, королева добавила - И нечисти.
На самом деле Королеве отчаянно хотелось чаю, а этот несносный мальчишка никак от нее не отставал.
CC. К счастью у меня завалялась парочка. - Чеширский кот с видом фокусника достал шляпу, отданную ему Шляпников в обмен на услугу. - Вуаля! - и он вручил оруженосцу листок формата A4.
Мартовский Заяц и Шляпник вскочили и в панике забегали по кухне.
H&MH. Карточка! Карточка! Караул, карточка!
Q. Фигляры, - неодобрительно бросила королева. Впрочем, строгость была напускная. Королева прекрасно знала силу этого тандема. Эта парочка аналитик-программист давала фору команде из двух десятков человек. Хотя получать лулзы от их закидонов умели далеко не все. Королева умела. За что ее особенно ценило руководство. Ходили слухи, что руководитель департамента разработки бросил пить после того, как королева забрала этот тандем к себе. И отменил еженедельные отчеты. Чем поверг всю организацию в ступор. Ну, отчеты ладно, с кем не бывает. Но бросить пить!
Армигер начал внимательно рассматривать листок, а Чеширский кот в это время комментировал.
CC. Оформление делается шрифтами Verdana или Tahoma, 12-ым кеглем. В исключительных случаях для проектов с высоким коэффициентом полезности допускается 11-й кегль.
A. Но здесь же катастрофически мало места! Почему бы не расширить на две-три страницы?
CC. Если карточка проекта будет оформлена на двух страницах, то она немедленно отправится в корзину.
A. А почему здесь нет больших проектов?
CC. Большому проекту - большую торпеду. A3.
MH. Убил. - немедленно откликнулся Безумный Мартовский Заяц.
A. А если полезность будет на границе, то значит можно считать не целое число, а 0.1, 1.5
CC. Не стоит.
A. Почему?
Q. Ты соврал в резюме, что учился в институте? - спросила королева ледяным тоном.
A. Э-э-э…
CC. Королева намекает, что еще на первом курсе вашего института студенты изучают правила расчета погрешностей. Не использовать эти знания на практике довольно глупо. Не находишь?
Армигер смутился.
A. А вот здесь ошибка. Коэффициент полезности должен вычисляться, как одно делить на другое. А здесь минус…
Q. Я уже сказала: «Головы с плеч»? - глядя в пространство спросила королева.
H&MH. Нет, моя госпожа - синхронно ответили Шляпник и Заяц и также синхронно втянули головы в плечи изображая крайний испуг.
CC. Ну же, мон шер - Чеширский Кот был сама любезность, - вы же учили математику.
A. Да - смущенно признался Армигер - Матан, Теорвер, ТФКП, …
CC. Вздор - прервал его Кот, - здесь вполне хватит школьной программы.
Армигер застыл посредине комнаты. По его лицу было понятно, что он напряженно думает.
MH. Чу! Слышу! У него скрипят шестеренки!
H. Их необходимо срочно смазать.
Со зверским выражениям лица шляпник выхватил нож и подхватил масленку. Мартовский заяц протянул ему кусок батона. В два движения шляпник нанес масло на бутерброд, а заяц навалил сверху красной икры. Вдвоем они подбежали к оруженосцу, вручили бутерброд и кружку краснодарского чая и потащили к себе за стол.
MH. Королева сегодня сурова.
H. Что ты, королева - добрая душа. Я помню, три дня назад тут поймали японского шпиона…
Дружный хохот наполнил кухню. Новый год в команде начинался нормально.
Байка для оруженосца 4. Основной продукт процесса тестирования программного обеспечения
За окном цвели каштаны, а в столовой в самом разгаре было очередное безумное чаепитие. И в очередной раз оно из простого чаепития превращалось в заточку пилы.
– Опять тестирование, опять релиз на две недели позже, – Мартовский Заяц был как всегда нетерпелив.
– Но как же без тестирования? – удивился Армигер.
– Знаете, коллега, я в чем-то согласен с Мартовским. Выхлоп, в смысле числа обнаруженных багов, практически нулевой. Так что в данном случае паникеры и перестраховщики мешают бизнесу, – поддержал Зайца Безумный Шляпник. Это был обычный дружеский троллинг.
– Так мы проводим тестирование не для того, чтобы выявить дефекты, а для того, чтобы получить информацию о качестве. – И оруженосец с чувством процитировал: – Тестирование программного обеспечения - процесс исследования программного обеспечения (ПО) с целью получения информации о качестве продукта.
– Ты имеешь в ввиду статью в википедии. Да там ошибок больше, чем изюминок в праздничном кексе! – подключилась Королева – Кстати, в википедии могли бы и указать автора сего дивного заблуждения.
– Но это же кто-то из экспертов!
– Ну и что? Сам великий эксперт Аристотель заблуждался относительно характера движения тел, падающих на землю. – И Королева начала свой монолог.
– Как это ни печально, но люди, пишущие техническую литературу о разработке ПО, очень редко используют научный метод мышления. Они порой много говорят о вещах, совершенно необходимых нашей индустрии; и это всегда, как можно в том убедиться, весьма наивно и, по всей видимости, ошибочно. [1]
Производственные процессы могут производить как основные артефакты, так и вспомогательные. Например, в ходе процесса создания программного обеспечения может быть произведен такой артефакт, как стандарт кодирования. Этот самый стандарт кодирования вполне может быть самостоятельным продуктом поставки, и иногда за него можно получить с заказчика дополнительные деньги. Но мало кто будет утверждать, что основным артефактом процесса разработки является производство стандартов. Боюсь, владельцы софтверных компаний с этим утверждением будут не слишком согласны.
Теперь возьмем утверждение, что основным артефакт процесса тестирования является информация о качестве. Первый шаг, который должен сделать человек, мыслящий рационально, – это преобразовать утверждение в гипотезу. Гипотеза: «основным артефакт процесса тестирования является информация о качестве».
До тех пор, пока гипотеза не проходит критерий Поппера, она остается ненаучной. Здесь важно не путать научность и правильность. Гипотеза вполне может быть научной и ложной, научной и правильной, ненаучной и ложной, ненаучной и правильной.
Если мы стараемся мыслить рационально, то необходимо перевести гипотезу в разряд научной. А для этого нужно придумать фальсифицирующий эксперимент. Например, «Если, имея информацию о качестве, проект нельзя успешно завершить, то гипотеза признается ложной».
Далее мы переходим к экспериментам. Наблюдение, размышление и эксперимент - вот что составляет так называемый научный метод. [2]
В одном королевстве жила-была фирма, поставлявшая решения в сфере финансовых транзакций. Однажды фирма решила выпустить новый продукт – «пластиковую дуальную смарткарту». Надо сказать, что ошибки в продуктах для финансовых транзакций обходятся довольно дорого. Достаточно вспомнить ошибку с авизо.
Логично, что крупные финансовые структуры подходят к проверке качества достаточно серьезно. Для того чтобы выйти на рынок, необходимо пройти довольно серьезную проверку сертифицирующего центра. Для первичной проверки карты необходимо всего лишь заплатить двадцать тысяч. Не рублей.
После этого можно один раз скормить карту терминалу. А терминал выдает бинарный ответ «Карта подходит для дальнейших проверок» или «Карта не удовлетворяет требованиям». Отличная, точная информация о качестве.
С первого раза пройти проверку не получилось. Со второго тоже. С третьего тоже. Через несколько лет у руководства компании зародилось подозрение, что что-то здесь не так, и нужно что-то делать. Был выстроен процесс тестирования, и всего через год карта прошла первое испытание.
Несмотря на наличие информации о качестве, проект невозможно было завершить успешно. Несмотря на наличие информации о качестве, пришлось создать процесс тестирования. Таким образом, изначальная гипотеза не прошла экспериментальную проверку.
Но если, несмотря на очень дешевый способ получения информации о качестве (всего двадцать тысяч евро за один раз), необходимо было создать процесс тестирования, то что же было основным артефактом этого процесса?
И здесь мы можем выдвинуть новую гипотезу: «Основным артефактом тестирования, проводимого заказчиком, может быть информация о качестве. Также заказчик может не передавать исполнителю и никак в дальнейшем не использовать побочный для заказчика артефакт, такой, как информации о расхождении. Но для процесса тестирования, проводимого исполнителем, информация о расхождении между поведением системы и ожиданием заинтересованных лиц является основным производимым артефактом»
В комнате повисла пауза.
– Но тогда почему первичное определение встречается чаще остальных? – робко спросил Армигер.
– Мой юный друг, стремящийся к знаниям, попробуй взглянуть на это с точки зрения эффектов «Ошибка приоритизации гипотез» [3] и «Знаний задним числом». И выдели на изучение этих когнитивных искажений хотя бы пару часов – Выдержав паузу, Чеширский Кот подвел итог перерыву: – По коням друзья. Заказчик еще не верит, что качество нашей системы достойно их серверов.
PS. Вместо послесловия. Через несколько дней Армигер обнаружил в почте ссылку на статью об экспертах http://u-96.livejournal.com/2507992.html
[1] Искаженная цитата из второй главы первого тома лекций Фейнмана по физике
[2] смотри вторую главу из первого тома лекций Фейнмана по физике
[3] Цитата:
Не знаю, как называется эта ошибка - даже не уверен, что у неё есть официальное название, - но, если бы поименовать её довелось мне, я бы назвал её «ошибкой пиритизации гипотез». Как бы подоступнее объяснить? Ну… представьте себе, что у вас миллион коробков, и только в одном из них алмаз. И у вас целый ящик детекторов алмазов, каждый из которых всегда срабатывает в присутствии алмаза, но к тому же срабатывает и на половине пустых коробков. Если использовать двадцать детекторов, то в конце концов останется, в среднем, один истинный и один ложный кандидат. И после этого достаточно использовать один-два последних детектора, чтобы определить настоящее местоположение алмаза. Смысл этой метафоры в том, что, когда перед вами множество гипотез, большая часть времени уходит на поиск самых правдоподобных. А уж выбрать из них одну намного проще. Так что сразу начать рассматривать некую гипотезу, не имея в её пользу никаких свидетельств, значит пропустить основной этап работы. Как если живёшь в городе с миллионом человек, в котором произошло убийство, и детектив говорит: «У нас нет никаких улик, так что давайте рассмотрим вероятность того, что убийца Мортимер Снодграс»
Байка для оруженосца 5. Использование вариантов использования
В ходе идущего проекта случилась очередная пауза. Так часто бывает в начальной фазе. У заказчика не выделили людей, ответственных за взаимодействие, админы не сделали площадки под стенды, отдел снабжения не закупил лицензии на средства разработки, да мало ли существует причин для паузы проекта.
На кухне собралась обычная компания, только Королевы не было. На вопрос об ее отсутствии ответил Чеширский Кот:
- Сейчас она проект толкает. Вообще, у хорошего руководителя проекта основная работа приходится до старта проекта, на старт проекта, перед финишем и после финиша.
- А в середине проекта можно и в отпуск сходить – с завистью заметил Мартовский Заяц.
- Или журналы почитать – добавил Безумный.
- Как Быков в «Стажерах»? - догадался Армигер.
- Как Быков – согласился Чеширский – Быков, он хороший руководитель. Очень хороший. И хорошо, что он термин «менеджер» не слышал. Но довольно, молодой человек, об этом. Если есть время, его нужно использовать. Чем вы сейчас занимаетесь?
- Требованиями. Ревизией и выбором формата, – отрапортовал Армигер.
- Хорошее дело. И как обычно, есть несколько «но». – Чеширский помолчал и спросил: – что вас беспокоит, мой друг? И давайте на сегодня ограничимся одним вопросом. Что сейчас вас беспокоит сильнее всего?
- Юзкейсы – понурился Армигер.
- Если беспокоит – не чеши. Лучше маслом помажь, – порекомендовал Заяц.
- Погоди, - вмешался Чеширский, - не путай его. Давайте я выдвину несколько гипотез - и, после того, как Армигер кивнул, продолжил, – вероятно, вас смущает, что их часто рекомендуют, но редко пишут; что есть юзкейсы, а есть диаграмма юзкейсов, что если есть BPML и IDEF, то зачем нужен текстовый формат?
- И если их так настойчиво рекомендуют, то они должны иметь массу преимуществ.
- Главное преимущество вариантов использования, это то, что они варианты использования, – отрезал Шляпник и демонстративно посмотрел на свою коллекцию часов.
- А разве это не одно и то же? - робко возразил Армигер.
- Так ты еще, чего доброго, скажешь, что «разработка требований» и «требования к разработке», - одно и то же, - вмешался Заяц.
- Так ты еще скажешь, - проговорила, не открывая глаз, Соня, - будто «тестирование производительности» и «производительность тестирования», - одно и то же.
- Придержите коней, коллеги, - остановил их Кот, - наш шляпных дел мастер хочет сказать, что варианты использования, в отличие от многих других форм записи требований, не столько говорят, какими качествами должна обладать система, сколько постулируют, как она используется.
- И что?!
- А вот это интересный момент, – подключился Шляпник, – смотри. Приходит на собеседование программист. SQL знает, базы данных проектировал. Даем задание: «База данных должна содержать историю курсов валют Центробанка. Спроектируйте необходимые таблицы». Обычно рисуют что-то вроде такого:
Поля:
идентификатор записи;код валюты;курс по отношению к базовой валюте;начало действия курса.Заметим, выдвинутым требованиям разрабатываемая система отвечает. История курсов хранится. Вот только есть проблема. Программист не думал, что систему будут использовать. Запросы на выборку из этой таблицы оказываются достаточно сложны. Какой курс действовал первого апреля? А какой сейчас? И далее претенденты начинают городить сложные SELECT-конструкции. В условиях стресса на собеседовании это приводит к любопытным результатам. Некоторые исписывают пару листов. А всего то нужно добавить в таблицу одно поле «Дата окончания действия» и для выборки будет достаточно простого запроса с тривиальным:
where <дата на которую производится выборка> between <Начало действия курса> and <Окончание действия курса>
Бывают и более интересные прецеденты.
Шляпник повернулся к Зайцу:
- Помнишь программиста, который предлагал в одной таблице хранить актуальные данные, а во вспомогательной сделать архив?
- А то! – откликнулся его напарник.
- А тут-то что не так? – спросил Армигер.
- Да вроде и ничего, даже выигрыш по производительности небольшой должен быть, – принял эстафету Заяц. – Все бы ничего. Ровно до тех пор, пока во время эксплуатации не потребуется ввести данные будущим периодом. Вот здесь и начинаются танцы с бубнами.
Заяц будто вспомнил о чем-то, выудил из-под стола бубен и принялся скакать вокруг Сони, мужественно заснувшей мордочкой на клавиатуре ноутбука.
Далее слово взял Чеширский Кот:
- Описание использования системы позволяет избежать множества проблем. Возьмем ту же JRA-1330. Серьезнейшая ошибка, «критикал». Сколько клиентов просило ее исправить! Но исправить ее невозможно. Об этом довольно неплохо написал Максим Крамаренко. А избежать ее было очень просто. Достаточно было описать, как эта трекинговая система будет использоваться. Например, как она будет использоваться для взаимодействия между заказчиком и исполнителем. И тогда бы всплыло, что менеджмент-исполнитель захочет скрыть сумму контракта на доработку от простого исполнителя, а потраченные часы скрыть от заказчика. Всего-навсего – описать способ использования системы.
Ладно, коллеги, на сегодня разминка окончена, прошу к рабочим столам.
Кот встал, потянулся и начал исчезать. Армигер вздохнул, глядя на повисшую в воздухе улыбку, и пошел на рабочее место.
Байка для оруженосца 6. Куб Неккера
– Скоро, скоро зацветет сирень – мечтательно протянул, глядя в окно и прихлебывая «Спринг Мелоди», Чеширский Кот. Он с интересом следил за крадущимися к Оруженосцу Зайцем и Шляпником.
– У, какая знакомая табличка, – вдруг заявил Мартовский.
Армигер чуть не подавился чаем и, кажется, с трудом сдержал порыв прикрыть листочки рукой:
– Да откопал тут в недрах интернета таблицу сочетаемости проектных ролей. Изучаю.
– Насколько, я тебя знаю, ты достаточно неглуп и достаточно настырен, чтобы не остановиться на одном варианте. – Шляпник поставил на стол круглую коробочку. – А потому переходи к нам, на темную сторону.
– У нас есть печеньки, – пропели в унисон Шляпник и Заяц и зловеще захохотали. Потом так же хором добавили: – сейчас мы эти таблицы анализировать будем.
– Перехожу, перехожу, – кивком головы выразив благодарность, Оруженосец взял печенье. – Действительно, я откопал несколько разных таблиц. Более-менее соответствующих друг другу, но отличающихся в деталях.
– И что, роль программиста везде не может сочетаться с остальными?
– Не везде. Как минимум с проектированием архитектуры сочетаться может. Хотя бы в одной из моделей, – присоединилась к беседе Соня. Из Сониного угла не было видно полдюжины листков, разложенных Оруженосцем на столе. Но благодаря дурному влиянию коллектива, Соня давно научилась думать на несколько ходов вперед и выдвигать высоковероятные гипотезы.
– Замечательно, – повернулся от окна Кот – Следующий ход?
– Поискать общее, – внесла предложение Соня.
За столом зашелестели бумажками.
– Че вы там шуршите. Я вам и так скажу. Во всех вариантах не рекомендуется сочетание ролей тестировщика и программиста, – прервала их, вставая, Соня.
Быстро проглядев листки, троица подтвердила вывод Сони.
– Иии? – просил с нажимом Заяц, и команда синхронно повернулась и выжидательно уставились на Оруженосца. Только Королева не стала отвлекаться от медитации над своим пауэром.
Но оруженосец уже довольно долго посещал тренировки на мышление в условиях стресса и не сплоховал:
– Модель MSF предлагает создавать минимальные коллективы не менее чем из трех человек. Не анализируя глубоко остальные модели, мы на основании несочетаемости ролей тестировщика и программиста можем выдвинуть гипотезу о том, что минимальный коллектив для создания относительно сложного ПО во всех моделях должен состоять минимум из двух сотрудников. Но это противоречит тем фактам, что: а) множество сложных больших продуктов создавались людьми в одиночку, б) в команде XP тестировщиков нет, что не мешает им быть успешными.
– Неплохо, – резюмировал Шляпник.
– Растешь, – хлопнул по плечу Заяц.
Соня одобрительно хмыкнула и мгновенным движением ухватила печенюшку.
– Но, вообще говоря, этого недостаточно, – начал анализ Чеширский. – Можно возразить, что XP-шники используют свою модель для уменьшения потерь на вариациях. Или что в проектах на полсотни инженеров разделение будет выгодно. Или, что если уже есть разделение на программистов и тестировщиков, то выгоднее запретить изменять роль в рамках проекта, чем не запретить. Для проверки последней гипотезы было бы очень удобно взять несколько параллельных вселенных с одинаковыми командами и одним разрешить, другим запретить. С параллельными вселенными у нас сегодня не получится, поэтому попробуем придумать эксперимент попроще. У нас есть тестировщик Соня. Она регулярно пишет сложные SQL-скрипты. Часто у нее уходит на это полчаса, хотя камрады справились бы с этим за пару минут. А недавно она написала модуль импорта отчетов в Excel. Вполне нормально написала. А еще у нас есть программисты. Которые регулярно пишут тестовые наборы и тестируют по ним. Вы зачем это делаете?
Заяц с Шляпником пожали плечами. Для них вопрос не имел смысла, так как ответ был очевиден.
– Так можно сделать проект быстрее, – ответил Заяц и обратился к Соне: – Ты ведь модуль тоже писала, потому что так быстрее?
– Ну да, – ответила Соня.
– Заметим, наши коллеги в рамках одного проекта регулярно переключаются из одного ролевого кластера в другой. И все отмечают, что это переключение позволяет сделать проект быстрее. Замечу также, что у Сони это переключение происходит несколько легче, чем у остальных. – Увидев непонимающие взгляды, Чеширский пояснил: – Как программисты, да и как тестировщики вы посильнее Сони будете, но вот переключение между ролями для нее менее болезненно.
Участники безумного чаепития согласно кивнули.
– А теперь! – и жестом фокусника Кот достал из шляпы лист бумаги и протянул компании.
– Что это?
– Это куб Неккера, иллюстрирующий любопытный феномен. Вы может увидеть, что серая грань находится сзади?
Коллеги кивнули.
– Вы можете увидеть, что серая грань находится спереди?
Еще кивки.
– Но довольно трудно видеть и то и другое одновременно. Вероятно, с написанием кода и тестированием ситуация схожая. Довольно трудно мыслить в разных контекстах одновременно. Но можно, зная об этой особенности мышления, сознательно переключать контекст. – Помолчав, Чеширский добавил: – И снять ограничения на совмещения ролей.
– Полагаю, это не единственное ограничение, которое вам встретится в разработке ПО. Очень вероятно, что стоит явно разделять написание плана в терминах результатов, английское planning, и написание другого документа в терминах действий, английское scheduling. Попытка думать одновременно в двух контекстах, как правило, приводит к появлению забавных…
– Уродцев, – закончила Королева. – И хватит на сегодня. У нас еще релиз не выпущен.
Байка для оруженосца 7. Два вида списков задач
С самого начала рабочего дня Армигер скучал в чаепительной. За окном цвели яблони, а ему было нечего делать, и он составлял кроссворд на основании терминологии ISTQB. Кроме оруженосца в кухне был Чеширский, но он изучал какие-то документы. Но вот кухню омыла волна программистов во главе с Шляпником и Мартовским Зайцем.
- Хай.
- Привет.
- Доброе!
- Кому доброе, а кому и… - проворчал Оруженосец.
- Ничего. Придет время, и под твоей клавой навернется релиз-кандидат.
К чайникам выстроилась очередь. Программисты бурно обсуждали проблемы мержа.
В кухню вошел Черепах Квази. Шум стих.
- Представляете, захожу я сейчас в 42-ю, а там никого нет. Только Соня книгу читает, - сказал Квази, ни к кому конкретно не обращаясь.
- И что? - возмутился Шляпник. - Рекса Блэка надо читать.
- И больше там никого нет. Это все потому, что у вас таймшитов нет.
- Ну да, а у вас есть. Только на наши релизы заказчик не ругается. Напомнить, что сказал ваш заказчик на ваш последний релиз?
Квази гордо вышел из кухни. Присутствующим в комнате история была памятна. Чтобы выслужиться, Квази выпустил релиз почти вовремя. Почти. В пятницу вечером. В пятницу вечером 29 апреля. Сырой релиз положил промышленный сервер. Промышленный сервер розничной сети садовых магазинов. Промышленный сервер розничной сети садовых магазинов в начале дачного сезона.
Заказчик, в прошлом бандит, с сожалением констатировал, что времена изменились и что сейчас другие методы работы с организаторами подобных эксцессов. Но команду разработчиков попросил заменить. Во избежание.
На тушение пожара выдернули команду Королевы. В майские праздники. Вроде бы откат сделать не проблема. Но не проблема, только если инженеры соблюдают культуру разработки. Как говорится, тяжело править код за программистами, путающими бранч и транк. Да и релиз в пятницу вечером перед большими праздниками нарушал все мыслимые нормы безопасности. За два безумных дня команда Королевы много говорила о своих коллегах. Как подытожила Соня: «Если бы стены могли проявлять впитанные слова, то в первый же день они бы стали похожи на подъезд в Нижнем Тагиле, а на второй почернели бы полностью.»
- Но в чем-то он прав, - сказал Оруженосец. - Я с утра не слишком загружен.
Заяц и Шляпник переглянулись.
- Я сделаю сенчу. - Шляпник отправился к шкафам, а Заяц подсел за стол оруженосца.
- Сейчас я тебе объясню одну из ключевых концепций современной теории управления. Для начала разберем совершенно тривиальную производственную цепочку из одного рабочего центра. Проще уже некуда.
- Разработчики работают по списку задач. И этот список может быть одного из двух типов. С недостатком задач или с избытком. Для первой линии техподдержки, админов и т.д. предпочтительным является список с недостачей. Для программистов, как правило, предпочтительным является список с избытком, но иногда применяют и список с недостачей. Например, если программист дежурит на техподдержке. Применение списка с недостачей означает, что разработчики обязаны часть времени простаивать. Обязаны! Если не простаивают - надо вызывать на ковер менеджера. Список с избытком означает, что часть задач обязана быть не сделана. Если делаются все задачи, опять же, нужно разбираться в проблемах управления. Представь, что мощность отдела программистов 100 единиц продукции в неделю. Для списка с недостачей рекомендуется, чтобы входящий поток заказов был в 70-80 единиц. Т.е. разработчики должны простаивать порядка 25% времени. Если используется список с избытком, то входящий поток должен быть отрегулирован на 130 - 200 единиц. Примерно вот так:
Светлые зоны - это хорошо настроенный поток. А темная - плохо.
- А если все-таки сделать сбалансированный поток?
- Если его попробовать сделать, то будет как у Квази. К счастью, сбалансированные цепочки встречаются редко.
- Сложно настроить?
- Нет, - подключился Кот, - настоящая причина того, что сбалансированные цепочки встречаются редко, намного более фундаментальна. Дело в том, что чем ближе ты к состоянию идеального баланса, тем ближе ты к банкротству.
- Хорошо, предположим. В дальнейшем я хотел бы увидеть модель, но сейчас я поверю опыту Чеширского Кота. - согласился Оруженосец. - И как настроено у нас?
- У нас список с избытком. Ты ведь знаешь, что часть задач закрывается триггером по истечении срока давности.
- Да, согласен. Но почему мы с Соней сегодня простаиваем?
- Потому что в производственной цепочке должно быть не более одного рабочего центра с избыточным списком задач. Этот рабочий центр называют ограничением системы. В нашей команде ограничением системы является группа программирования. И это правильно. Все остальные рабочие центры, такие как: менеджмент, тестирование, продажи, анализ - обязаны простаивать. Обязаны! Данный факт не согласуется с нашим представлением о мире и приводит к психологическому дискомфорту. Любой хороший список задач, что с недостачей, что с избытком, приводит к психологическому дискомфорту.
- Ага, - Шляпник поставил чайник с сенчей на стол, - среднестатистический менеджер приходит в истерику, услышав о современных методах управления. У него пропадает аппетит, начинается изжога, и в общении он становится крайне неприятен.
- Все верно, коллеги. - К их столу подошел Чеширский Кот. - А тебе, юноша, необходимо как можно быстрее ознакомиться с современными методами управления и перестать комплексовать по поводу своих простоев. А то так и до нервного срыва недалеко.
- Ладно, камрады, по коням. К вечеру сделаем финальный мердж и отдадим билд на тестирование. А ты пока кроссворд закончи.
- А с таймшитами то что?
- А про них в следующий раз.
- А матмодель?
- А матмодель сбалансированной цепочки посмотри в блоге Макса Крамаренко.
Байка для оруженосца 8. Жизненный цикл задачи на изменение кода
Сегодня в кухоньке были все свои. Чеширский, Заяц с Шляпником, Соня и, конечно, Королева. Небольшой «чай-брейк» после релиза. Команда всегда делала небольшие паузы между большими блоками задач. Только Армигера не было. Его послали в небольшую командировку. Порулить в несложном проекте с чужой командой.
Соня, как всегда, дремала, лениво перелистывая очередную статью по тестированию, Шляпник с Зайцем азартно вели один из вечных споров типа «Пробелы-Табуляции», иногда скатываясь к проблемам генерации идентификаторов, а Королева с Чеширским просто пили чай. 15 минут это немного. Но и не мало.
- Я не опоздал? - с порога спросил Армигер.
- Заходи, заходи. Пока чай льдом не покрылся. Сегодня мы пьем какой-то редкий сорт, который Чеширский привез из Китая. - И Шляпник наклонил чайник над кружкой с эмблемой какой-то конференции.
- Позавчера сам собирал. На плантации старого приятеля. Цените. - Поистине, связям Чеширского Кота оставалось только позавидовать.
Армигер порывался что-то сказать, но на него цыкнули. Все синхронно подняли чашки, сделали по глотку, и на лицах отразилась гамма чувств.
- Ладно, давай, выкладывай, а то тебя разорвет.
Армигер вытащил листочки с распечатанными жизненными циклами задач (воркфлоу).
- Вот. Глядите, как можно все тщательно настроить в Jira, - начал Армигер. - Вот по этой схеме мы всегда знаем, в каком состоянии находится доработка.
Шляпник взял в руки листок с безумной паутиной статусов и переходов. Покачал головой и показал листок Зайцу. Зайца перекосило. Он в сердцах помянул 21-е прерывание и барабанный принтер со снятым кожухом.
- Около двух дюжин статусов. Про переходы просто молчу, - пробормотал Шляпник - Вот что я тебе скажу. Выкинь бяку. Шизофрения, маниакально-депрессивный психоз, паранойя - это по моей части. Не надо тебе этого. Надеюсь, это не в твоем проекте.
- Нет, но мы собираемся так настроить. Парень новенький принес.
- Соня! - гаркнул Заяц.
Соня вышла из медитации и начала говорить речитативом:
- Давние, давние, давние исследования юзабилити показали, что добавление лишнего статуса воркфлоу приводит к ухудшению понимания не на какое-то значение, а в разы. Умножение там происходит. Непонимания.
- Насколько? - голос Шляпника походил на голос ласкового дознавателя в подвалах Веселой башни.
- Не помню. Гуглить надо. 1.2-1.3 раза. Плюс примерно квадратично растет число переходов. А это тот же коэффициент.
- Грубо возьмем, что добавление трех статусов приводит к проблемам с пониманием в два раза. Увеличивая число статусов задачи с пяти до двадцати трех, мы увеличиваем проблемы с восприятием в 60 раз. 60 раз, Карл!
- Иначе говоря, когда ты добавляешь хотя бы один статус к жизненному циклу задачи, ты крадешь у фирмы тысячу долларов в год, - прокомментировал Заяц.
- Ну, не надо так резко, - вмешался Кот.
- Так много? - удивился Армигер.
- С учетом прогрессии, озвученной Соней, сумма еще больше, - вздохнул Кот, - Гораздо, гораздо больше. Просто 1000 долларов ты еще можешь себе представить, а истинные суммы потерь - нет. И дело даже не в том, что на перевод из статуса в статус тратится время. Переключение из контекста в контекст - это гораздо большие потери.
- А потери на управляемости так вообще зашкаливают, - добавила Королева. - Чем меньше статусов у задачи, тем быстрее идет проект. Но всегда есть «но».
- Наименьшее число статусов задачи… - Соня сделала паузу.
- Два. Естественно, два, - синхронно ответили Заяц с Шляпником.
- Но! Но! - Соня проснулась и была в ударе. - Это отлично работает для волка-одиночки. А скажи мне, родной, как мне проверить выполнение какой-то задачи? Как я узнаю об этом? Я тестировщик! Кстати, меня за это уважают… Как я узнаю, что какую-то из решенных задач… - Соня провела глазами по комнате, и Заяц с Шляпником прижали уши.
- Не стесняйся. Мы знаем, что делаем ошибки. Ты ищешь их быстрее, чем мы. Нам нравится работать с тобой в паре. - Было непонятно, кто это сказал, но все всё поняли.
- Так вот. Какую из задач мне тестировать? Нужен новый статус, - продолжила Соня. - И этот статус мне нужен! Нужен мне!
- Очевидно, - резюмировал Шляпник.
- Без вариантов, - отрезал Заяц.
- Ладно. Три минимально. Хорошо, я понял, что много - это много. У нас именно эти пять. Почему? - спросил Оруженосец.
- Есть давление снизу и сверху, - Кот сделал глоток чая, - мы должны использовать минимально необходимое. Н-да… Коллеги, расскажите, что вы об этом думаете.
Королева взяла слово:
- Каждый лишний статус - это потери. Большие потери. И нужно понимать, почему вы на эти потери идете. Мы идем. Со статусами «New» и «Closed» - все понятно. Они просто нужны. Соне нужен статус «Resolved» как информация о необходимости тестирования. Кстати, мне этот статус тоже совершенно необходим, для отслеживания загрузки рабочих центров. Если в среднем в этом статусе больше 20 задач на пять тестировщиков - очень вероятно, что у нас проблемы с тестированием. Очень серьезные. И с проектом в целом тоже. Показатель числа задач в этом статусе - это как температура. Если на градуснике 38,5, то что-то надо делать. Например, сменить градусник. Теперь «Assigned». Этот статус показывает, что задача назначена в релиз. Можно еще указывать конкретного исполнителя, но в этом смысла нет. Сами разберутся. В конце концов, у нас работают взрослые люди. Это позволяет делать легкую фильтрацию задач, на которые менеджеру продукта уже не надо обращать внимание. Менеджер работает со статусом «New». Это его зона ответственности. Не разработчика.
- А «Open» (примечание: иногда называют «In work»)?
- А этот статус нужен, когда над кодом работает не один программист. И когда программисту не нужна нянька, чтобы отобрать задачу из релизного пула. А те, кому нянька нужна - у меня не работают. Мой час стоит довольно дорого, чтобы работать простым диспетчером.
Это была правда. Кроме чисто менеджерской нагрузки Королева еще ухитрялась писать спецификацию требований для десятка программистов. К счастью, в последнее время ей начала помогать Соня. Да и Шляпник с Зайцем иногда писали постановки.
- Перед тем как уйти в бранч, программист обязан перевести задачу в «Open». Это сигнал всем остальным программистам - не трогай, работаю! Или по-другому: этому больному лекарство уже дали. Не надо второй дозы.
- А если не переведет статус - бить. Больно. Ногами, - добавил Заяц.
- Угу, - сказал Шляпник, - меня как-то пригласили помочь с кодом в один из проектов. У них одну и туже фичу реализовали три разных программиста. Тремя разными способами. И спокойно залили это в транк. Потом туда заливали еще три недели. Тестирование у них было ограничением системы, и эту фичу протестировать не успели. И в один замечательный солнечный день промышленный сервер сплясал джигу-дрыгу. Да так качественно сплясал, что заказчика валерьянкой отпаивали. А программистов спасло только то, что пока заказчик ходил за «Сайгой» на стоянку, программистов успели спрятать в серверной за железной дверью. Лихие 90-е, что ж вы хотите.
- И этих статусов вполне достаточно, - закончила Королева.
- Ага. «Assigned» общий буфер для программистов, и именно общий - для снижения вариаций. Именно поэтому программист назначает на себя задачу сам. - Оруженосец по памяти перерисовывал ЖЦ команды на листок, делая пометки. - А почему для тестировщиков так не сделать? Тоже общий буфер.
- Смысла нет. Если случайно один и тот же код протестируют три тестировщика, то транку от этого хуже не будет. Иногда такие эксперименты даже нужно делать. Для замера качества тестового покрытия и снижения вариаций в описании дефектов. Тем более что в правильно выстроенном производстве у тестировщиков должен быть запас по мощности.
- Но, может быть, все-таки добавить статус «Отложено»?
Тут Заяц выдал фразу, которую в приличном обществе не произносят.
- Родной, - Королева была на удивление вежлива, - тебе же уже рассказывали о двух видах списков задач? - в конце фразы голос Королевы начал походить на шипение змеи.
- Э-э-э… да.
В разговор вмешался Шляпник:
- Если у нас список с недостачей, то…
- То у задачи нет вариантов быть отложенной, - Соня опять ушла в медитацию, но была в курсе всего. Как и полагается настоящему тестировщику. - Просто нет. Ее или отвергнут, или сделают. Без вариантов. А если список с избытком, то мы все равно вынуждены не решать часть задач. И первый кандидат на это - то, что «отложили».
- Не закрыть задачу сразу - это как положить дохлую кошку в багажник, - вставил Заяц. - «Может Пригодиццо».
- А через пару лет выкинуть со словами «Нэт, нэ пригодилось».
Вставая, Заяц достал брегет.
- Эх, там еще много интересного, но над временем шутить не стоит. Иначе оно пошутит над тобой. Так что остальное в следующий раз.
Простой Жизненный Цикл:
Что сказал Заяц
Заяц не был вежливым Кроликом и не промолчал:
«Если тебе нечем заняться, свези дистрибутив заказчикам на восьмидюймовых дискетах! Там сейчас пара гигов всего-то.»
Байка для оруженосца 9. Чтобы больше сделать, нужно меньше делать
Оруженосец шел в переговорку, как вдруг за дверью кухни услышал знакомые голоса
- А я тебе говорю, Load! - горячился Заяц.
- Сам знаю, что, Load! Но тут еще куча букв.
Армигер автоматически свернул в знакомую дверь. В конце концов, до совещания целых 20 минут, чашка отличного чая не повредит недавно назначенному руководителю проекта, и нужно понять, почему Заяц с Шляпником разгадывают его кроссворд в неурочное время. Сейчас самое начало рабочего дня, и до положенного времени чаепития еще очень далеко. А к Времени и Заяц, и Шляпник относились очень трепетно. Один раз они уже «пошутили». И Оруженосец решительно толкнул дверь. На кухне собрались все программисты, и только программисты.
- А вот и автор, - Заяц подвинул стул. - Нагрузочное тестирование это Load?
- Load, - подтвердил Оруженосец, - но у меня-то вопрос про тестирование производительности. Совершенно другой зверь. У нас в России термин не прижился. Нагрузочное тестирование звучит круче.
- А я тебе говорил, - и Шляпник вписал термин.
- А чего это вы тут кроссворды разгадываете? - поинтересовался Оруженосец, наливая чай. - У вас же список задач с избытком. Вы, по идее, постоянно загружены.
- У нас кодефриз. В прошлый четверг объявили фичефриз, и мы подчищали хвосты. А сегодня с утра объявили кодефриз. Завтра вторник - релиз.
- Функционал сложный, и проект с очень высокими требованиями к бездефектности. Давненько у нас таких зашкаливающих требований не было. Ну и проект чужой, с высокой связностью кода, - пояснил Шляпник - Сам-то как на месте рулевого? Хорошо рулится? По должности инженера не скучаешь?
Оруженосец вздохнул. Вот уже несколько недель он руководил небольшим проектом.
- Здесь было комфортнее, - честно признался он. - Скоро закончу и сюда попрошусь.
- Только одного не понимаю, - заговорил Додо, способный парень, попавший в команду относительно недавно, - кодефриз, кодефризом, но можно было другой проект поделать.
- Даже не думай. Ты загрузишь в оперативку своего мозга другой проект и, когда Королева отдаст приказ править найденные баги, либо потратишь колоссальное время на переключение, либо сделаешь наведенный дефект. Это стандартная техника увеличения производительности программистов. ЕМНИП (Если Мне Не Изменяет Память) называлась «нуль дефектов». Программист не должен переключаться на другой проект или модуль, пока текущий не будет отлажен. Нет дефектов - сиди на стуле ровно, пока тестировщики полностью тестирование не проведут.
- Да, уж. - подключился Заяц, - техника была весьма популярна. Но в начале 2000-х о ней начали забывать. А потом таймшиты ее окончательно похоронили. «Чтобы сделать больше, иногда нужно делать меньше.»
- Потому что активация ресурса и его использование не одно и то же, - на кухне материализовался Чеширский Кот. - И напоминаю: Королева лично расстреляет из реактивного огнемета того, кто прикоснется к клавиатуре до ее отмашки. И да, она не шутит.
- И насколько эта техника эффективна?
- Черт его знает, мерить надо. Процентов 20 - 50 по ощущениям.
- Скорее, больше, - энциклопедическая память Кота хранила множество интереснейших фактов. - Вот, например, результат эксперимента. - И Кот распахнул свой ноутбук. - Правда, эксперимент «полицейские проекты» (http://www.toc-center.ru/politseiskie_proekty.html) ставился не в нашей области, но тоже в области интеллектуальной деятельности. Уменьшение переключений не только привело к простоям следователей, но и кардинально увеличило производительность. Заметим, что следователи были ограничением системы, это важно. Они стали делать меньше, но в итоге сделали больше. «Чтобы результаты были лучше, надо работать… меньше!» И еще момент, - Чеширский развернулся к Додо. - Как правильно заметил Шляпных дел мастер, нужно измерять. Управление проектами, как и хирургия, изготовление взрывчатки и множество других занимательных областей, это то, где не стоит доверять ощущениям. И «Здравым смыслом» тоже нужно пользоваться с осторожностью. Поэтому эксперимент, эксперимент и еще раз эксперимент.
- Я тебе так скажу, - доверительно произнес Заяц. - Я по молодости поэкспериментировал. Мне не понравилось. Поэтому сейчас мы экспериментируем только на учебных проектах. И на всякий случай я доступ к репозиторию отключил. Физически. Кабель в серверной выдернул. В пятницу, - Заяц сделал выжидательную паузу.
-Так вот почему я в субботу не достучался… - Додо заткнулся, но было поздно.
- Молись. Молись, чтобы Соня не узнала. Королева тебя просто публично линчует, а вот Соня… У-у-у…
Предостережение Зайца запоздало. Дверь открылась тихо. Соня умела держать себя в руках. Но вот текстолитовый меч… Соня начала обходить Додо. Коллеги посторонились и оставили его один на один с угрозой. Додо стремительно бледнел. Разъяренная тестировщица с запасом компенсировала разницу в весе в 30 кг. Плюс умение фехтовать.
- Королева баг нашла, - безразлично начала Соня, - поправить надо. Просила позвать автора кода и ревьювера. Функция - <скрыто из-за НДА>. Ну и чай принести. А я, перед тем как пойти, дай, думаю, в логи гляну. А там… А там какой-то…
- Соня, опусти его происхождение.
- Знаешь, - Соня глядела в глаза Армигера, - это еще до тебя было. Некий… не слишком хороший программист во время кодефриза в транк залил исправление пустяковой ошибки. Без разрешения Королевы. Я тогда на игру в Скандинавии не попала. Сотка евро - не вопрос, мне компенсировали. Но там была очень интересная игра… Знаешь, у меня дядя на корабле на Волге работал. Выращивал крысиных королей на продажу. Поеду к нему - куплю. Черт с ней, с премией. Заплачу. Потом засуну крысу в ведро, а ведро привяжу на живот этому, сегодняшнему деятелю. А может, у папы надфили возьму и начну стачивать ему зубы.
Армигера передернуло. На Додо было страшно смотреть.
- Пойдем, Соня. Королева ждет. Я не ревьювил этот код, но я его знаю. - И Шляпник, взяв еще пару программистов и чайник с чашками, вывел Соню за дверь.
- Она правда так сделает? - Зубы Додо стучали по чашке.
- Мы не знаем. Предпочитаем не пробовать узнавать - ответил Заяц.
- Но ходят легенды, - Чеширский Кот наполнил опустевшую чашку Додо, - что как-то Соня возвращалась с тренировки по фехтованию, и у нее попросили мобилу позвонить… Нокию 3310 она достала. А клинок не стала. Телефон она все равно собиралась менять. Но разве эту модель разобьешь? Разбилась не Нокия.
- Так что сиди, пей чай. И не вздумай даже глядеть в сторону клавиатуры. Кстати, всех касается.
- А почему Королева тестирует? Она же руководитель проектов?
- Потому что у нее корона не падает, - пояснил Заяц.
PS. Фичефриз и кодефриз. - Не уверен, но похоже эти техники «немного» забыты. Ссылки:
http://ain.ua/2015/04/07/574124
Фичефриз - запрет на коммит в транк (а иногда и на разработку в фичебранче) новых фич, дабы уменьшить риски от проблем с наведенными ошибками и недотестированным кодом.
Кодефриз - еще более жесткий запрет. В транк заливаются только те исправления ошибок, которые одобрило лицо, наделенное властью.
Королева ответственность за все косяки релизов, естественно, брала на себя. За это ее уважал Время и отчаянно любила команда. Старожилы команды за нарушения фичефриза и кодефриза вполне могли порвать. Как Тузик грелку. Потому что, если Королева берет на себя ответственность, то она и имеет право командовать. И наоборот. Командует - ее ответственность. И никак одно без другого.
Байка для оруженосца-10. Военные маневры
Армигер маялся в кухне. Он пришел слишком рано, но ему было невмоготу. Наконец пришли Шляпник и Заяц. Пришли так же неожиданно рано.
- У тебя вид, как будто собираешься на первое свидание и не знаешь, какой букет выбрать.
- Примерно так. Мне завтра программистов собеседовать. А я ж тестировщик.
Шляпник вздохнул, открыл окно, сорвал с растущей рядом липы полною горсть липового цвета и занялся завариванием чая.
- Не умеешь проводить собеседования - не проводи их. У тебя что, времени как у дурака махорки? - Заяц, как всегда, был в своем репертуаре.
- Кстати, ты в курсе, что корреляция между умением проходить интервью и умением работать отсутствует? - поддержал Мартовского Безумный коллега.
- Э-э-э…
- Ладно. Завариваем чай и ждем. Не наливаем. Просто ждем.
Через пару минут дверь отворилась, и вошло около дюжины незнакомых Оруженосцу людей во главе с Соней.
- Привет, Храбрый Мыш. На рекорд идешь? Какой ты раз? Пятый? - спросил Шляпник у одного из вошедших.
- Пятый, пятый. Пока до минус двенадцати не дойду - не успокоюсь.
Рипичип водрузил в центр стола огромную коробку и открыл ее. По кухне разнесся восхитительный запах свежеиспеченных плюшек с маком.
- Угощайтесь.
- Так, коллеги. Берем кружки, берем плюшки, пьем чай, - скомандовала Соня, - а Заяц тем временем все объяснит.
Когда все расселись за огромным столом и сделали по глотку, Заяц приступил к вводной части.
- Первое. Ваши резюме мы не читали. В нашей команде предпочитают добротную фантастику. Кэрролла, например. И да, у нас есть отдел кадрового учета, но нет отдела персонала. Так что ваши резюме вообще никто не читал.
Кто-то за столом закашлялся.
- Как нет отдела персонала?!
Заяц задумался.
- Как-то так. Надо у Чеширского спросить. Тебе надо, ты и спросишь. Продолжим. Собеседования у нас тоже нет. Ибо нефиг.
- Кстати, наличие и собеседования, и испытательного срока противоречит Трудовому Кодексу, - вставил реплику Шляпник.
- Для простоты мы просто берем на работу по краткосрочному контракту на две недели. По итогам двух недель делаем предложение. Или не делаем. Потом идет стандартное трудоустройство с трудовой и прочим. Иногда испытательный срок сокращается до недели.
- А как же три месяца?
- Зачем? - удивился Заяц. Если менеджер за две недели ничего не понял…
- То эти менеджеры работают в других командах, - прервал его Шляпник, - в отличных, замечательных командах. Но других. Не у Королевы.
- О чем это я? Ах, да. Но мы понимаем, что прийти сразу на две недели не для всех удобно. Поэтому мы регулярно проводим «Военные маневры». Никаких задач про люки и мух. Никаких инвертирований списка и сортировок.
- Понимаете, нам с Зайцем за последнею дюжину лет ни разу не приходилось писать сортировку. В реальных проектах.
- Точно. На этой работе вам в основном придется читать и править чужой код. Поэтому если вы умеете инвертировать список, но не способны читать чужой код, вам лучше попробовать свои силы в другой команде.
- Отличной, замечательной команде. Но другой.
- Несколько лет назад мы сохранили копию одного проекта. Все как полагается. Репозиторий, трекер, вики и прочая, и прочая.
- А репозиторий какой?
- Ты текст вакансии читал? Там все написано. Заметим, мы не требуем знания и опыта работы с этими средствами коллективной работы. Мы говорим, что в проекте придется работать с ними. Это не требования, как у некоторых, - и Заяц скосил глаз на соседний корпус. - Не требования, а условия работы. Так вот, на основании этого реального проекта у вас по четыре задачи трех разных типов. Все задачи делать не нужно, делайте шесть. Но нужно сделать минимум по одной задаче каждого типа. Исправить ошибку, сделать рефакторинг чужого кода и реализовать небольшую новую фичу. Рабочие места у вас оборудованы, но интернета нет. Телефон в бункере не ловит. Сделали задачи, залили в транк - свободны. Вечером пришлем ваш результат. На основании этого результата мы не принимаем. Эта оценка - ваш ориентир, на что вы можете рассчитывать. Мы берем и ведущих, и обычных, и начинающих. Стажеров тоже берем. Но мы рассчитываем, что ведущий программист наберет не более полудюжины минусов. И найти ведущего - большая редкость. Сделанная вами работа проходит юнит тесты, ревью кода. А потом начинается самое страшное. Ваш код начинают проверять тестировщики. И это самая точная оценка качества вашего кода.
- Вопросы есть? - скомандовала Соня. - Если нет, хватаем кружки, хватаем плюшки, идем в бункер.
Группу отправляющихся в бункер возглавила Соня, а в арьергарде пристроился Заяц.
- А ты тормозни, - придержал Оруженосца Мартовский. - В бункер успеешь.
Когда все вышли, Шляпник продолжил:
- Тебе, наверное, интересно, как идет оценка?
Оруженосец кивнул и налил новую чашку чая.
- Идеальная работа оценивается в ноль баллов. Это ровно шесть задач, с выдержанным стилем кодирования, прошедшие не только юнит тесты, но и тесты Сони. Такой результат встречается исключительно редко. Если точнее - встретился один раз за последние три года. Соня нашла, правда, одну ошибку, но сама признала, что для равновесия по Паретто это неизбежность.
- А кто это?
- К сожалению, он к нам не пошел. Живет в другом городе, а к нам просто зарулил на огонек. Продолжим. За каждый косяк идет от одного до дюжины минусов. Сделал меньше шести задач - минусы. Сделал больше - минусы. Вышел за час - минус. Не смог сделать по одной задаче каждого типа - минусы. Пренебрег кодестайлом - минусы. Использовал неправильную венгерскую нотацию - минус. Мы рассчитываем, что ведущий программист знает разницу между правильной и неправильной венгерской нотацией. Завалил юнит тесты - много минусов. Ошибку нашла Соня - меньше минусов. Не запустил юнит тесты после сборки - сразу дюжина минусов. Принципиально не уходит в фичебранч… За это надо бить ногами, но мы просто минусуем. При коммите не указал номер задачи из трекера - минусы. Не перевел задачу в «Open» при бранче - минус. Не перевел при мерже в транк - полная обойма из минусомета. Не оставил комментарий - ладно, есть номер задачи. Оставил бессмысленный комментарий - четыре минуса. За каждый бессмысленный комментарий. И т.д. Вот полный список.
И Шляпник протянул брошюру.
- Большая часть проверок автоматизирована.
- А если минусов больше шести, то не берем на работу?
- Почему не берем? Берем. Еще как берем. И даже если минусов больше сотни, тоже берем. И даже при полном бите минусов тоже берем. Просто будет не ведущий. Но, по-любому, это решается после двухнедельного испытательного срока.
- А почему Храброго Мыша не взяли?
- Мы бы его взяли, да он директор одной из софтверных компаний. К нам ходит из любви к искусству. Как сам говорит, что, если бы платил за каждый сеанс по штуке баксов - его фирма все равно была бы в огромном плюсе. И он с удовольствием берет тех, кто к нам не пошел, но показал высокий результат. Набрал не более 128 минусов.
Помолчав, Шляпник добавил:
- У него сейчас великолепный результат. За полгода и четыре сеанса он поднял свой уровень очень сильно. Ну все, тронулись. Смени Зайца в бункере.
[1] Рипичип, он же Храбрый Мыш - герой романа «Покоритель Зари, или Плавание на край света» из цикла «Хроники Нарнии».
Байка для оруженосца 11. Ложная слепота и задача трех тел
В кухне Шляпник предавался воспоминаниям и травил безумные истории.
- Разрабатывала как-то одна фирма мегасофт. И, как полагается мегасофту, багов там тоже было как термитов в термитнике. Заказчики выли в голос. В какой-то момент руководство узнало о такой профессии, как тестировщик. Круто. Организовали отдел, наняли кучу народа. И процесс пошел. Все как надо: выделенные тестовые стенды, трекер, чеклисты. Да-да процесс поставили как по-взрослому. С маджонгом и гейшами. Но почему-то заказчики выть не переставали. Примерно через полгода руководство робко поинтересовалось: а в чем собственно дело? Слова были немного другие, но смысл такой. И тут выяснилось, что забыли поставить процесс исправления ошибок. Трекер был полон багов в состоянии «New».
В комнате раздались смешки, но быстро стихли. История выходила совсем невеселая.
- Угу. Это потому что большинство мэтров странно определяют цель тестирования. Практически все рассматривают тестирование изолировано от разработки. И ничего не говорят в цели, про то, что ошибки исправлять надо. А когда цель определена или интерпретирована неверно, то результаты получаются все страньше и страньше. Годратта надо читать.
- И то верно, - дослушав историю, Армигер налил сенчи и подошел к книжным стеллажам.
Стеллажи были библиотекой команды. Библиотекой с необычными правилами. Любой сотрудник мог взять книгу без регистрации выдачи. Достаточно было вытащить из книги канбан [1] и поместить его в соответствующий кармашек календаря. В кармашек, соответствующий сегодняшнему дню. Не позднее чем через две недели нужно было принять решение. Если книга сотруднику нравилась, он оставлял ее себе. Если не нравилась - он ставил ее обратно на полку, предварительно вложив внутрь канбан. После прочтения сотрудник делал доклад по любой теме из книги под перекрестным допросом участников безумного чаепития. Это было тяжелое испытание, но так знания прочнее закреплялись. Те карточки, которые оставались в календаре дольше двух недель, собирались дежурным, после чего формировали заказ на новую партию книг. Классика японской безкомпьютерной автоматизации управления.
Однажды Квазичерепах заявил Королеве, что это безумное расточительство - так разбрасываться книгами. Королева холодно посмотрела на него и ответила, что несколько сотен долларов в год на сотрудника это смешные расходы за возможность иметь в команде образованных людей. И добавила: «А необразованные пусть работают в других командах. Где экономят на образовании». Квазичерепах не знал, что еще много лет назад Королева согласовала расходы на обучение сотрудников. Расходы в год должны были быть не менее средней месячной зарплаты ее сотрудников. Больше могли быть. Меньше - нет. [2] Именно поэтому Соня складывала сертификаты с конференций и тренингов в стол. На стене давно бы не осталось свободного места.
- Ищешь, что почитать? - спросил Заяц. - Недавно крупная партия новых изданий пришла. Есть интересные экземпляры.
- Да в отпуск на недельку собираюсь.
- Тогда возьми «Задачу трех тел» Лю Цысиня
- О, «Как тестируют в Google»! - и Оруженосец выдернул книгу с полки.
- Брось бяку, - не открывая глаз, твердо сказала Соня. - Брось, брось.
- Но это же…
- Что, это? Такое впечатление, что весь опыт мировой индустрии по разработке ПО прошел мимо сотрудников Google. - И, помолчав, Соня добавила: - По крайней мере, мимо тех, кто писал книгу.
- А как же отзывы? У этой книги куча отличных отзывов.
- Чтобы отличить макулатуру от литературы, нужно иметь довольно много опыта в отсеивании хлама. Еще немного прокачаешься на хороших книгах и сможешь искать ошибки в халтуре. А пока читай хорошие книги.
- «Гибкое тестирование». Тоже не читал.
- Халтура. Вообще, с большой опаской относись к книгам, докладам, тренингам, в которых есть слова «Ajile» или «гибкий». Это классический маркер для эффекта «щелк, зажужжало» из книги «Психологии влияния» Чалдини. У большинства людей после этого отключается мозг, чем шарлатаны и пользуются. Нет, хорошие книги с такими названиями тоже есть, но, сам понимаешь, шарлатаны этим пользуются очень активно. Мозг начинает неправильно обрабатывать информацию. Один из вариантов ложной слепоты. Кстати, а возьми-ка ты действительно «Ложную слепоту» Питера Уотса.
- Это же фантастика!
- В одной главе этой «фантастики» информации для руководителя проекта больше, чем в большинстве книг по управлению проектами. Эту книгу писал ученый. И рецензировалась она учеными. Учеными-практиками. В этой книге очень много написано об особенностях работы мозга. Она прекрасно дополняет книгу Чалдини. Психология. А психология, как ты помнишь…
- Помню, помню… Один из видов глубинных знаний, совершенно необходимых руководителю, - процитировал Оруженосец.
- Беру. А «Задача трех тел»?
- А в этой книге очень понятно рассказывается о теории познании, - пожал плечами Заяц. – «Что ты знаешь и почему ты думаешь, что ты это знаешь?» [3] Полезной информации больше у Уотса, но книга Лю Цисиня гораздо легче читается. Для отпуска, самое то.
- Беру обе. - И, сунув книги в рюкзак, Оруженосец отправился руководить очередным совещанием.
[1] - В переводе с японского «карточка заказа». Это не процесс. Не методология. Просто карточка. И если следовать производственной системе Тойота, то на «канбан доске» карточка должна двигаться в обратном направлении. От тестирования к программистам.
[2] - Это обычная практика многих японских компаний. Менеджер не имеет права потратить на обучение и образование сотрудника менее определенной суммы в заданный период времени. Больше можно. Меньше нет.
[3] - Помимо фундаментального вопроса рациональности - «Что ты знаешь и почему ты думаешь, что ты это знаешь?», существует также и смертный грех - когда ты думаешь прямо противоположным образом. Например, как это делали древнегреческие философы. Они понятия не имели, как всё вокруг устроено, и потому просто говорили: «Всё есть вода» или «Всё есть огонь», и никогда не задавали себе вопрос: «Стоп, даже если всё в самом деле - вода, то как я об этом узнал?» И не спрашивали себя, есть ли у них свидетельства, которые позволяют считать, что эта теория предпочтительнее всех остальных. Свидетельства, которые они не смогли бы наблюдать, если их теория неверна… (цитата из http://hpmor.ru/book/1/38)
Байка для оруженосца 12. Китайская комната
В этот раз друзья решили нанести визит вежливости и отправились на чай к Оруженосцу, который все еще был в краткосрочной командировке. В гости отправились вчетвером: Соня, Шляпник, Заяц и новая сотрудница Синица.
Компания ввалилась на кухню, и Шляпник представил нового коллегу:
- Знакомьтесь, это Синица, наша новая тестировщица, а это Оруженосец Королевы. Ну, или будет им.
- Приятно познакомиться.
- Взаимно.
- Чего такой смурной? Приемо-Сдаточные Испытания завалил? Из командировки не отпускают?
- Нет, с испытаниями все отлично. Заказчик был в восхищении и никак не мог поверить, что это не муляж, а готовый к эксплуатации софт. Кстати, спасибо, что натаскали писать программу и методику испытаний. До сих пор в шоке от того, насколько ГОСТ 34.603 позволяет хорошо и быстро сделать софт.
- Дело не в ГОСТе, - нравоучительно сказал Заяц, - а в умении мыть руки перед употреблением бубликов и перед тем, как садишься за клавиатуру.
- Просто умение пользоваться ГОСТами осталось в 90-х. Ладно, колись. Чего случилось? - надавил Шляпник.
- Пришел ко мне на собеседование парень. Претендовал на ведущего тестировщика. Отличные знания. Термины как от зубов отлетают. И про то рассказал, и про это. А как дошло до задач - полный ноль. Ошибку идентифицировать не смог. Ладно, показал ему, в чем проблема. Начал он заносить дефект в трекер… классика из классик…
- «Программа работает некорректно»?
- Типа того. Про дизайн тестов лучше промолчу.
На несколько мгновений в кухне повисла тишина.
- Бразильская система.
- Разум и интеллект.
- Китайская комната.
- Какая такая «китайская комната»? - удивился Оруженосец.
За объяснения взялась Соня. Она регулярно читала статьи по рациональному мышлению и посещала «Кочергу» [1].
- Китайская комната – это мысленный эксперимент. Представь себе, что Некто находится в комнате, где есть китайские иероглифы, карточки с португальскими словами и правила преобразования одного в другое. При этом Некто не знает ни португальского, ни китайского. И вот ему подсовывают под дверь листки с текстом на португальском, а он переводит их на китайский. Создается иллюзия, что человек в комнате знает и китайский, и португальский. При этом он не знает ничего. Вообще ничего. И ничего не понимает. Просто вызубрил правила перевода. Без понимания. Вот это и есть «Китайская комната».
- Но у него же опыта семь лет!
- Не опыта, а стажа. Иногда годы приходят одни. – Помолчав Шляпник спросил: - У него, наверное, в резюме в основном стаж руководителя тестирования?
- Не знаю, как ты догадался, но да. Руководитель группы тестирования.
- И много-много человек в подчинении. Классический случай. Ему как-то удалось попасть на руководящую должность. Как Гигантюку. А дальше все просто. Проводи собеседования, просто спрашивая термины. И руководи. В смысле разводи руками. Главное - никого ничему не учить и не работать самому. Может не получиться. Твой парень, он слишком рано стал руководителем. Теперь это почти невозможно исправить.
- Похоже на то, - согласился Армигер.
- Понимаешь, лучше всех экзамен ISTQB сдаст Google или Yandex. Жаль, что ни Google, ни Yandex на работу тестировщиками взять нельзя. ISTQB - это экзамен по терминологии. В знании терминологии нет ничего плохого, - вздохнул Шляпник. - Но знание терминологии не дает навыков. И создает иллюзию знаний - как у кандидата, так и у собеседующего.
- А что такое «Бразильская система»? - робко спросила Синица. - Это как в «Ералаше»?
- О нет. Это отдельная тема. Если бы это было как в «Ералаше», то было бы проще.
- Бразильскую систему образования описал Фейнман в своих мемуарах. Это очень прикольная штука. Это способ тиражировать «китайские комнаты» в промышленных масштабах. Как выяснилось, никто из получавших образование в бразильских институтах в пятидесятых годах не был инженером. И не был ученым. Они могли повторять определения, но больше ничего не могли. Совсем.
- Нашлось несколько бразильских ученых, которые что-то могли. Один учился сам по книжкам, и еще двое получили образование за границей. Те, кто могли, не учились в бразильских ВУЗах. Остальные ничего не могли как инженеры. «Китайская комната». Вроде бы все определения знают, но ничего не могут.
- Повторять чужие глупости несложно, - заметил Шляпник.
- А вот придумать собственную глупость, тут нужен талант. – подключился Заяц. – Синица, ты знаешь за позитивное и негативное тестирование?
- Да, читала.
- Если есть позитивное и негативное, значит, в середине должно быть нормальное. Правильно? Вот смотри, - и Заяц нарисовал:
«Negative -- Normal -- Positive»
Синица впала в ступор.
- Э-э-э… Ну, нормальное тестирование - это когда программа выполняется нормально, – наконец выдавила из себя Синица.
Армигер восхищенно покрутил головой.
- А если есть нормальное, то все, что им не является, автоматически получается ненормальное. Т.е. позитивное и негативное – это ненормальное тестирование, – продолжил Заяц. - Оруженосец, у нас в группе есть нормальное тестирование?
- Никак нет, – отчеканил Оруженосец.
- Так что, Синичка, будешь ты заниматься исключительно ненормальным тестированием.
- Зачем это я буду заниматься ненормальным тестированием? Лучше я не буду.
- Видишь ли, этого не избежать, – промурлыкал неожиданно материализовавшийся на кухне Кот
- Почему?
- Потому что ты тут. Тут все ненормальные. Я ненормальный, Заяц ненормальный, Соня ненормальная, про Шляпника просто молчу. Оруженосец, кажется, был нормальным, но это удалось исправить, и теперь ненормальный тестировщик руководит проектом и выдает ненормально отличное качество софта и получает ненормально довольного заказчика. – И Кот исчез.
- Ну и что?
- Ну и все. Теперь до следующего чаепития.
Армигер хлопал в ладоши стоя. Он аплодировал Зайцу и Чеширскому. Через некоторое время к нему присоединились Соня и, поразмыслив, Синица. Не каждый день удается придумать очередную глупость. Свою глупость. Без повторов. Именно свою.
[1] «Кочерга» - антикафе, место регулярных встреч рационалистов
Байка для оруженосца 13. Стратегия тестирования «Синдром стажера»
- Чего звали? - ввалился в кухню Армигер.
- Естественно, чайку попить. У вас же небось чай из пакетиков. - Заяц был само гостеприимство. - Садись, вот, лимончика отрежь. Или черничного варенья положи.
- Ага, черничное варенье самое то. У, как вкусно!
- Как у тебя с проектом? - перешел к делу Шляпник.
- Все отлично. Запускаем в промышленную эксплуатацию. Вот сегодня справочники залили.
- Справочники? Серьезно? В этом малюсеньком проекте? - Сарказм Зайца явно превышал температуру за окном.
- Ну да. ОКАТО, ОКПО…
- А тебя не смутило, что вторая буква «К», а не «С»? Почему не ОСАТО? Не ОСПО? - Шляпник, как всегда, был доброжелателен.
- Так, стоп. - И Армигер открыл крышку своего ноута. - Сейчас я посмотрю.
Пока Оруженосец яндексил, все наслаждались изысканным букетом чая с Шри-Ланки.
- Да, я понял. Классификаторы, а не справочники.
- Тот, кто будет системным аналитиком, должен знать между разницу между справочниками и классификаторами.
- А если я не буду аналитиком?
- Смеешься? Руководитель проектов, который не пишет требования? Да ну? Не, конечно такие встречаются. В других, отличных фирмах, - сделав глоток чая, ответил Шляпник.
- И ключевое слово здесь «отличных», - встрял Заяц. - И «отличный» не в значении хороший. А в значении «отличающийся». Что же касается карьеры тестировщика, то ведущий обязан иметь смежную специальность. И для тестировщика совершенно логично расти через изучение техник системного анализа.
- Не хочешь расти - не изучай системный анализ, - подытожила Соня.
- Короче. - Зайцу не терпелось перейти к сути разговора. - Ты помнишь, почему Синичка занимается ненормальным тестированием?
- Естественно. Потому что она тут.
- Вот и ты будешь системный изучать анализ, потому что ты тут.
- Соня в отпуск уходит, - взял разговор в свои руки Шляпник.
- Куда?
- На Байкал. Без обратного билета. Недели на две-три, или как пойдет, - ответила Соня.
- Так как у тебя с загрузкой, Армигер?
- Куча свободного времени, как ни странно.
- Угу. Соответственно, в отсутствие Сони будешь курировать Синичку. Она сейчас использует стратегию тестирования под условным названием «Синдром стажера».
- Это как? - Оруженосец был заинтригован.
- Помнишь основную цель тестирования?
- Как говорил великий Канер, цель тестирования - поиск ошибок.
- Не просто ошибок, а ошибок, которые надо исправить. Первая проблема в том, что Синичка гоняет тесты. Тесты, которые не находят ошибок. Но это неважно. Гораздо хуже, что она гоняет тесты, которые находят ошибки, которые не нужно править. И она их заносит в трекер.
- У нее есть запас по мощности.
- Не до такой степени. Но проблема не в этом. Она ест время Королевы на управление ошибками. И наше время. Но даже это не самое серьезное. На занесение ошибок тратится очень много времени. И получается, что Синичка занесет все ошибки, которые надо править не через три дня, как Соня, а через три недели. Если еще найдет. А для заказчика такое увеличение жизненного цикла обработки фичи неприемлемо. Заказчик ориентируется на речь Грефа, и три недели только на тестирование - это беспредел. Соня уже начала рассказывать Синичке про другие стратегии, а ты закончишь. Также каждый день будешь проверять все занесенные Синичкой дефекты и, естественно, верифицировать чеклисты. Обычное кураторство. Загрузка около часа в день.
- И еще, - встрял Заяц. - Кураторство - это способ быстро расти. Посмотреть на себя со стороны, вспомнить, какие ошибки ты допускал сам, каким был иди… Короче, это крайне полезно. Вопросы?
Армигер прокрутил разговор назад.
- Если руководитель проекта обязан выполнять аналитическую работу, то как я-то попал в руководители проекта?
- «Программа и Методика Испытаний» является одним из главных документов аналитика. Необходимым, а часто и достаточным. Если аналитик не может написать ПМИ, он вряд ли хороший аналитик. И как раз с ПМИ у тебя проблем не возникло.
- Не завалить бы свой проект.
- Без шансов. Заказчику софт нужен ко Дню учителя, а сейчас лето. Даже если что-то пойдет не так - буфер огромный. И да, уже можно. Заяц, расскажи.
- Этот проект делают три команды из разных дочек холдинга. С немного разными установками. Установки на усмотрение шефа РП. У тебя установка - идеальное качество за неделю до того, как дети пойдут в школу.
- И что, заказчик согласился? Ему же приходится взаимодействовать с кучей народа.
- Заказчику объяснили, что для нас это учебный проект. А он за те же деньги очень существенно снижает риски. А в конце он сможет выбрать из трех версий лучшую. И, учитывая, что он собирается работать с нами и дальше, то это его шанс выбрать команду. На маленьком пилотном проекте.
- Предложение мафии.
- Точно, он просто не смог отказаться.
- Значит, мою версию могут и не взять.
- Не. У твоих соперников просто нет шансов. Во-первых, у них команды больше. Во второй в три раза, в третьей в пять раз.
- Как же так, у них же больше людей, - удивился Армигер.
- На проекте такого размера оптимальна твоя команда. При увеличении команды в три-пять раз происходит увеличение времени проекта процентов на двадцать.
- Бред какой-то.
- Не бред, а обычное измерение. Не надо пользоваться здравым смыслом в управлении проектами. Особенно если можно поставить эксперимент. - И Шляпник продолжил: - Во-вторых, они узкие специалисты. Например, руководитель у них только руководит.
- Вернее, разводит руками, - буркнул Заяц. - Как можно руководить проектом, не управляя полноценно реестром требований и багов?
- У них что, нет трекера? - удивился Оруженосец.
- Да есть у них трекер. Есть.
- «Средства-то у нас есть», - процитировал Заяц и постучал себя по лбу, - «у нас ума не хватает».
- Пользоваться они им не умеют. Большая часть дефектов в трекере не фиксируется. А из тех, что фиксируются, - больше половины относятся к «синдрому стажера». И поскольку полного реестра нет, то они не только заносят ошибки «синдрома стажера», но еще и правят их.
- Упс.
- В-третьих, они пытались внедрить SCRUM. Для сложных производственных цепочек. Но об этом потом. Нет у них шансов выиграть. Успеть шанс есть. Выиграть - нет.
- Хорошо. Но если кураторство - это способ быстро расти, почему мне ранее не давали кураторство?
- А вот это тема для отдельного чаепития. Когда получишь от Королевы праздничный пирог за отлично выполненный проект, тогда и расскажем.
- А Синичка обещала земляничное варение за изучение других стратегий тестирования. Других, отличных стратегий. И вот здесь как раз отличных в значении хороших.
Байка для оруженосца 14. Сбалансированная производственная цепочка
Сегодня очередное безумное чаепитие проходило на природе. Когда не было особой запарки с проектами, команда выезжала за город. Позади были картинг, пейнтбол, стрельба из лука. Впереди - волейбол и рыбная ловля. Вечером ожидались шашлыки десятка разных сортов, но до них было еще далеко.
Так что за огромным столом был традиционный для команды «five o’clock». Но и на нем не обошлось без игр. Играли в игру из романа «Слишком много поваров» Рекса Стаута. Чеширский отобрал множество ингредиентов для заварки. Чабрец, липовый цвет, листья земляники … Всего дюжину добавок. И заварил пять огромных пузатых чайников. Но в каждый положил только десять компонентов. И теперь надо было угадать в каком чайнике чего не хватает. Организовалось две команды. Одной верховодила вернувшаяся с Байкала Соня, другой Шляпник. Королева и почтивший чаепитие свои вниманием Время были простыми участниками.
- Итак, чего не хватает в третьем чайнике? - огласил задачу, участвовавший в качестве рефери Заяц.
- Малина, - ответила за команду Сони Синичка.
- Малина, - подтвердил Додо. И обе команды выложили стикеры с надписью «малина» к четвертому чайнику.
В центр скамьи плюхнулся припозднившийся Оруженосец.
- Будешь чай без малины?
- Если в каждом чайнике чай без чего-то, то чтобы устранить вариации, нужно налить из всех, - и Армигер принялся наливать из всех чайников.
- Ну, полностью ты их не устранишь.
- Согласен. В отделе тестирования из 5 человек, где в аналогичной ситуации требуется 12 навыков от отдела, но каждый тестировщик не владеет двумя навыками, получается, что 2 навыками владеют все 5 человек, а остальными 10 навыками владеют только по четыре человека. Несбалансированный рабочий центр. Но и вариации минимальны. То, что надо.
- Следующий отсутствующий ингредиент?
- Мы решили, что шиповник.
- Нет, - возразила Соня, - саган-дайля.
- Кстати, а что это за травка? - поинтересовался Время.
- Крайне популярный в Бурятии чайный напиток. Соня из отпуска привезла, - ответил Чеширский.
- Протестую! - воскликнул Шляпник - Она единственная, кто его пробовал.
- Протест отклонен. Я тоже пробовал, - хладнокровно парировал Заяц. И проворчал: - Вот о памяти на ферритовых сердечниках он знает все, а в траве не разбирается. Переходим к следующему чайнику.
- Кстати, я новое определение «нормального тестирования» узнал, - поделился Армигер. - «Нормальное тестирование» - это тестирование, которое подчиняется центральной предельной теореме, то есть соответствует нормальному распределению.
Не вовремя он это сказал. Шляпник поперхнулся чаем и зашелся в Безумном кашле. Заяц с размаху хлопнул его по спине и восхищенно протянул:
- Круто. Пожалуй, это еще более крутая глупость, чем «ненормальное тестирование». Но ты в курсе, что термины «позитивные» и «негативные» тесты тоже не блещут разумностью?
Теперь чаем поперхнулся Оруженосец.
- Но как, Холмс? Как? - наконец выдавил он.
- Это же элементарно, Карл! Негативный тест - это тот, который ошибки не нашел. А позитивный - тот, который нашел. И негативные тесты потому так и называются, что негативно сказываются на производительности работы отдела. Выполнение негативных тестов резко уменьшает производительность.
- Точно, - кивнула Соня, - а то, что ошибочно называют «позитив-негатив», это прием проектирования функциональных тестов, основанный на технике юзкейсов. Позитивные сценарии это на самом деле сценарии, в которых достигаются цели пользователя, а негативные - где цели не достигаются, но выполняются минимальные гарантии. Кстати, тестировщик, желающий покинуть уровень начинающего, этими техниками должен владеть. Но, как тестировщик, замечу, что выполнение негативных тестов, не находящих дефектов, снижает производительность не так уж резко. Фиксация багов занимает очень много времени.
- Более важно другое, - вмешалась Королева - повышение производительности это по классификатору действий операционного менеджера всего лишь четвертый пункт по важности. Последний. С огромным отрывом от него лидирует второй пункт - уменьшение вариаций. - И задумчиво протянула: - Все-таки зверобой или матрешка?
- И часто мы приносим производительность отдельного рабочего центра в жертву, - добавила Соня.
- Во-во, - сказал, подходя, Квазичерепах. Ему нужно было «зарисоваться» у Времени. - Для этого и нужны менеджеры. Чтобы контролировать работу сотрудников. Чтобы никто не сидел без дела.
- Как же никто не будет сидеть без дела, если у кучи РЦ есть запас по мощности? - удивился Армигер.
- А загружать работой надо. И балансировать команду.
- Но… - но тут Заяц сильно наступил Армигеру на ногу, и тот заткнулся.
- Мне показалось, что управлять сбалансированной цепочкой довольно сложно. Но, может, у меня просто не хватает опыта? - начал сольную партию Заяц. - Вот смотри, как-то мне показали такую игру… - И Заяц начал рассказывать правила.
Правила игры.
Играют двое: банкир и игрок. Банкир просто осуществляет денежные операции, не делая ходов, а игрок каждый ход решает, сколько заказов брать в производство. Производство состоит из пяти рабочих центров, и заказ последовательно проходит через них. Каждый рабочий центр за ход может обработать от 1до 6 заказов. Это решается игральным кубиком D6. Первые пять ходов игрок наполняет рабочую цепочку. Это предварительная стадия. После пяти ходов происходит первая продажа. С этого момента начинается собственно игра.
За каждую единицу продукции, вышедшей с конвейера, банкир выплачивает игроку 5 у. е. денег. Обслуживание производственной цепочки стоит 10 у. е. в ход. Считая, что средняя пропускная способность каждого узла 3,5 единицы, в максимуме цепочка в среднем генерирует в ход 17.5 у. е. Что довольно выгодно.
Но есть одно «но». За задержку заказа на один ход игрок платит 1 у. е. Это может быть различный тип потерь: заказчик разозлился и ушел; штрафные санкции за опоздание; но, как правило, в индустрии разработки программного обеспечения заказчик вынуждает исполнителя сделать что-то бесплатно. В любом случае - это потери. Потери небольшие. Всего одна единица за один ход опоздания. Поскольку множество менеджеров очень медлительны в принятии управленческих решений, то для ускорения игры на принятие решения о том, сколько взять заказов в производство, игроку отводится 15 секунд. Если игрок не успел принять решение - ход делает банкир и запускает в производство о 0 до 6 единиц заказов на свой выбор.
- И что, ты не можешь справиться с этой простейшей задачей? Тут прекрасная маржинальность. Квазичерепах любил умные слова с тренингов по эффективности.
- Так я ж программист. У меня опыта управления меньше, чем ничего. - Заяц разливался соловьем. - Но я бы взял несколько уроков.
- Я собираюсь еще турнир по волейболу посмотреть.
- Да я не бесплатно. Скажем по 100 рублей за условную единицу. Зарплата у меня небольшая, но за образование я исправно плачу.
- Тут еще надо посмотреть, - попытался отвертеться Квазичерепах.
- Тебе что-то не нравится в игре? Может, цепочка не сбалансирована?
- Сбалансирована. - Квазичерепах все больше запутывался в расставленной Зайцем ловушке.
- Может быть, производство невыгодно? Или у тебя, как и у меня, не хватает опыта справиться с управлением?
- Вот почему мне нравится работать с американскими менеджерами, так это потому, что у них принято не только следить за базаром, но и отвечать за базар. У них есть прекрасная поговорка: «Покажи мне деньги или заткнись», - вступил Чеширский Кот, глядя честными глазами в глаза Времени.
- Вернее, делай ставку или засунь свой язык в задницу, - поправила Соня.
- Что вы, - продолжал петь Заяц, - Квазичерепах привык отвечать за свои слова.
На самом деле Черепах отвечать за свои слова терпеть не мог. И именно по этой причине панически боялся трекеров, с неумолимой жестокостью хранивших историю распоряжений руководителей.
Квазичерепах огляделся. Терять лицо в присутствии Времени было совершенно невозможно. Да и выигрыш манил. И он пошел ва-банк:
- Хорошо, но на кон ты поставишь часы с олимпиады-80.
- Упс, - смутился Заяц, достал часы-луковицу из кармана жилетки, положил на стол и накрыл лапой. Дрожащим голосом он произнес: - Они дорогие и дороги мне.
- Как знаешь.
- Ладно, - решился Заяц, - играем, пока я не проиграю часы, но не более. Или до пятидесяти ходов. Но, слушай, если я все равно проигрываю одну и ту же сумму, а шашлыки уже скоро, может, увеличим ставку? Пусть мое расставание с часами не будет как визит к стоматологу. Болезненным и бесконечно длинным. По двести?
- Да хоть по триста.
- Пусть будет по 250, - решил Заяц, организовывая игровое поле. - А остальных прошу выявить недостающие ингредиенты в четвертом чайнике.
- Коллеги, прошу меня извинить, но мне надо посетить и другие столики, - сказал, вставая, Время. - Мой уход команду не ослабит. У вас гораздо больший опыт в дегустации чаев. Я уже пять раз из шести не угадал.
- Я тоже пойду, - извинился Оруженосец. - Последние посиделки с моей командой. На следующей неделе я покидаю проект, в который меня послали, и возвращаюсь к вам.
Отойдя за пределы слышимости, Армигер произнес:
- Беспокоюсь я за Зайца. Конечно, эти часы совсем не его серебряный брегет девятнадцатого века, но к любым часам из коллекции он относится крайне трепетно.
- Я бы на твоем месте беспокоился, чтобы у Квазичерепаха нервного срыва не было. Исходя из здравого смысла, цепочка кажется прибыльной, но наше моделирование в квартете «Заяц, Шляпник, Соня и я» не позволило найти выигрышную стратегию за игрока за приемлемое время. Может, она и есть, но найти ее за столом невозможно. Я давно не верю в здравый смысл. Я верю экспериментам.
Это еще что. Как-то на одной пафосной конференции топ-менеджеров, Заяц развел какого-то топа. У того портфель ломился от сертификатов: MBA, PMI, ISO, CMMI, факультет управления престижнейшего вуза и т. д. Пробу ставить некуда. А Заяц, мотивируя, что у него совсем нет денег, предложил сыграть по скромной ставке в 100 евро за условную единицу. Не знаю, что там было дальше, но в следующем месяце Заяц пристроил к загородному домику уменьшенную реплику Биг Бена. Восемь метров кирпичной кладки в высоту, четыре циферблата по ярду каждый. И механическая музыка, с отдельной мелодией на каждый день недели. Это тебе не mp3. Это настоящая механика!
- А почему вы от Квазичерепаха не избавитесь?
- На «ты», мон шер, на «ты». Потому что иногда мне нужно избавляться от невменяемых заказчиков. Невменяемый заказчик с кучей денег - это неплохо, но чаще они просят сделать проект за пять процентов от себестоимости. И вот такие заказчики с Квазичерепахом находят друг друга. Как два одиночества. Пока ни один такой заказчик не обратился к нам во второй раз. Но какова Соня! Чеширский ладно - наглая беспринципная сволочь. Но Соня так ловко продолжила развод! Как будто репетировала. Кстати. Я нашел конкурента, которому подарю Квазичерепаха. Вот только сделаем ему идеальное резюме. А может, и сертификат по управлению какой-то поможем получить. Ты же напишешь ему прекрасную рекомендацию?
Постскриптум.
На шашлыках Оруженосец шепотом спросил Зайца:
- Часы при тебе?
- При мне, - Заяц хлопнул по карману и так же шепотом продолжил: - И тирольскими пирогами мы теперь обеспечены минимум на месяц. - И хлопнул по другому карману. - Ведь это была сбалансированная производственная цепочка!
Байка для оруженосца 15. Четвертое правило воронки
Fais ce que dois, advienne, que pourra -
Делай, что должно, и будь, что будет.
В этот раз собрались не в офисе и не в рабочий день, а арендовали коттедж в загородном доме отдыха в воскресенье. И не от фирмы, а просто от себя. Такие вот IT-шашлыки [1]. Шашлыков, правда, не предвиделось. Приехала команда Королевы и хорошие ребята из других команд. Отмечали день тестировщика и день программиста. И заодно возвращение Оруженосца.
На первое был грибной суп. За день до этого Королева выгнала команду в тверские леса, и теперь инженеры наслаждались изумительным бульоном из белых и подосиновиков. Оруженосец порывался что-то сказать, но на него цыкнули. Мол, еще второе не подали, а он разговоры говорить собирается. И Оруженосец заткнулся. А на второе внесли… нет, втащили грибной пирог. Не пирог, а пирожище. Прикинув размер, Додо с удивлением спросил:
- Он же ни в одну духовку не лезет.
- В русской печи пекли, - ответила Соня. - Королева пекла. По старинному семейному рецепту.
- Э-э-э…
- Сначала воздадим должное кулинарному искусству. Это вам не код писать.
За поеданием пирога завязался неспешный разговор.
- У тебя, я так понял, все с проектом? - спросил Заяц Армигера.
- Ага. Можно еще несколько фич прикрутить. Но в целом все сделано.
- Забудь. Прикручивание необдуманного количества фич - верный способ убить продукт и получить на выходе монстра, - встрял Шляпник.
- Не это важно, - вмешался Время, - те фичи, которые ты хочешь прикрутить сейчас, не улучшат поток заказчика. - Поймав недоуменный взгляд Оруженосца, Время продолжил: - Да, я наблюдал за проектом и обсуждал с заказчиком реестр фич. Сейчас ни одна из оставшихся не увеличит проход. И не сократит связанный капитал. По классификатору типов целей проекта [2] они не прошли, и заказчик с этим согласился. А реализация этих фич увеличит время внедрения.
- А со временем шутить не стоит, - добавила Королева. - Совсем не стоит. Как со временем разработки, так и с временем обучения операторов. И почитай-ка на досуге «Психбольницу в руках пациентов».
- Но…
- Не «но». Больше фич - хуже продукт. По крайней мере, по критериям «Поддерживаемость» и «Эффективность (юзабилити)» из ГОСТ 25010. «Цель-3″ перечитай. Голдратт плохого не посоветует.
- Но конкурирующие команды еще несколько недель пилить будут. Выиграют.
- Дался тебе этот выигрыш. И, кроме того…
- Ты просто на демо в конце августа не был. Надо было видеть, как эти две команды рассказывали какое Щаздье, с большой буквы «Щ» будет после реализации ненужных заказчику фич. Которые они реализуют, если разберутся, где находится кнопка «эникей.
- А потом Синичка, невинно хлопая ресницами, попросилась за пульт и при логгировании дропнула таблицу пользователей. У, что там было…
- Они что, не экранируют переменные? - потрясенно спросил Додо.
- А зачем? - удивился Шляпник. - Они «молодые и амбициозные». Об опыте предыдущих поколений ничего не знают. Поколение четвертого правила воронки. Зато у них Эджайл. Или скрам. Или еще что-то. И движняк. Короче, не парься. Заказчик сразу после этого хотел все закончить, но его уговорили продлить эксперимент.
- А Синичке респект. Фазинг был проведен в лучших традициях джедаев-тестировщиков.
- А теперь десерт.
И на стол лег тирольский пирог. Клюква и голубика с тверских болот, черника, малина и брусника из леса. Только малину пришлось брать в магазине. Ну нет в сентябре уже малины. Заяц выл и ругался, что пирог можно и в магазине купить, но Соня твердо сказала, что только ручной сбор, только хардкор. День тестировщика и День программиста с разницей в три дня бывает только раз в четыре года.
Разрезали пирог. Налив чаю, Время поднял первый тост:
- Чтобы винты не сыпались. А если сыплются, то чтобы бэкапы делались до падения базы, а не после.
Компания вступила в битву с ягодным пирогом. После пирога грибного это было нелегкое дело. Но кто умеет выдерживать начальный план проекта, задав проектный буфер критической цепи, тот оставляет буфер и для десерта.
- Я больше не могу…
- Кушай, касатик, - с тихой угрозой процедила сквозь зубы Бабуля Флэш. - Кушай, вон какой худенький… Голову двумя пальцами отвинтить можно, в ребра только ткни - они и сломаются…
Да, команда лихих бета-тестеров [3] тоже была в гостях. Праздник-то общий, а характером они были схожи с командой Королевы.
- Мне обещали за пирогом от Королевы рассказать о страшном четвертом правиле воронки.
- Да, пора. - Шляпник долил чаю и виновато осмотрев присутствующих, произнес: - Может, кто другой? Я сам пока не очень.
Слово взял Кот. Начал он издалека:
- Чтобы не показывать на себе, и чтобы нас не обвинили в домыслах, представим себе выдуманную вселенную с несколькими супердержавами. Например, из «Юбер аллес».
- Лучше из «Все способные держать оружие» Лазарчука. Обалденная книга. Но только для людей с хорошей памятью.
- Пусть будет Лазарчук. - Согласился Чеширский и продолжил: - Возьмем период начала раскрутки торнадо [4] в области персональных компьютеров. Еще пару лет назад считалось, «что никто не захочет иметь компьютер дома», но вот они появились и начали разлетаться как горячие пирожки. Дальновидные люди предположили, что рост продаж будет расти по экспоненте, пока ПК не заполнят офисы и дома обычных граждан. Сейчас софт разрабатывают большие команды для крупных корпораций. Но огромное количество ПК и вариантов его использования потребует огромного количества программного обеспечения, а значит, и огромного количества разработчиков. Уже сейчас понятно, что рынок игр огромен и их не может делать одиночка за пару месяцев. Учитывая дешевизну средств разработки, контролировать одиночек и мелкие фирмы невозможно. Вот-вот появится огромный рынок. Рынок высокоинтеллектуального труда. Супердержава, получившая большую часть этого рынка, надолго получит стратегическое преимущество.
Представим, что мы, как команда наглых, беспринципных сволочей, получили от правительства карт-бланш на разработку диверсии. Задача - остановить развитие отрасли разработки ПО в других супердержавах.
Каждая из полудюжины супердержав обладает многодесятилетним опытом в IT. Коллективы профессионалов, многие из которых имеют четверть века опыта объединены в крупные коллективы, где успешно обмениваются опытом. Да, их мало. Но в каждой супердержаве имеется прекрасная инженерная школа. Ежегодно выпускаются сотни тысяч физиков и математиков. И если эти выпускники придут на стажировку к профессионалам-разработчикам, то через 5-10 лет будет сложившийся, большой рынок профи-разработчиков ПО. Самое главное: рынок не кодеров, а людей, умеющих мыслить на разных уровнях абстракции. Получить кодера легко. 2 года колледжа после 8 лет в школе - и готово. Но супердержаве достаточно получить монополию в области низких уровней абстракции. Т.е. оставить за собой монополию в части архитектурных решений. Процессоры, протоколы обмена, движки БД и т. д.
- Предложения? - спросил Кот.
- Перекупать профессионалов, - предложила Синичка
- Не пойдет, - поморщился Шляпник - Во-первых, у них на родине все есть. Кафедры, лаборатории, квартиры. А там начинать с нуля. Уедут единицы. А те, кто уедет, получат чужой опыт. И когда вернутся - будет еще хуже. А оставшиеся 95% за это время подготовят массу разработчиков. Пока не профессионалов, но людей с прочным фундаментом в части мышления на низких уровнях абстракции.
- Физическое устранение тоже не подходит.
- Не подходит. Вместо этого, имея небольшое преимущество в этой области, мы начинаем использовать четвертое правило воронки [5] в варианте «Стажер учит стажера». Необходимо открыть некоторое количество совместных предприятий и поселить в мозгах стартаперов, что молодые и амбициозные вместе с новейшими технологиями - это наше все. Введем на наших предприятиях правило «до 30 лет». Этого почти достаточно. Существенная часть фирм скопирует.
- Молодые быстрее изучают новые технологии, - возразил Додо.
- Они быстрее копируют код сомнительного качества из стековерфлоу, - проворчал Заяц.
- А после внедрения заложенные грабли начинают больно бить. Семантика в идентификаторах, синхронная передача больших данных, - добавил Шляпник.
- Насколько больших? - Поинтересовался Оруженосец.
- Десяток отсканированных страниц документов. По каналу в один мегабит.
- Но это же… - Додо лихорадочно считал. - Несколько минут?
- При условии, что оператор в офисе один. А если отправку сделают почти одновременно трое-пятеро? Плюс, незапароленные промышленные БД. И верх цинизма. Захешировать пароль, но в логе хранить пароль в открытом виде.
- Гонишь.
- Чистая правда!
- И все эти звезды и не только эти сошлись на одном единственном проекте жертв четвертого правила воронки.
- Но даже при полном отсечении старой школы останутся талантливые самоучки, которые в дальнейшем вытянут, - подумав, возразил Оруженосец.
- Верно. Поэтому надо сделать систему самоподдерживающейся. Первое. Руководителями проектов и структурных подразделений нужно назначать людей без навыка, опыта и знаний. Но активных-преактивных. Молодежь. Лучше до 25 лет. Высоко взлетев так рано, они попадут под синдром «звездной болезни». «Раз меня назначили, значит, я умею». Потом они начнут учить остальных. И… И, главное. Главное не результат, а движуха. Работа по вечерам, выход в субботу, и т. д.
Но и этого недостаточно. Чтобы совсем добить индустрии конкурирующих держав, нужно поработать с кадровиками. Во всех странах-конкурентах есть хорошая школа кадровиков. Крайне важно ее отсечь. Для этого для начала нужно брать в кадровую службу IT-фирм специалистов после института, не проходивших стажировку у опытных сотрудников. И научить их задавать «правильные вопросы».
- Например?
- Например: «Сколько людей у вас было в подчинении?».
- Не понял? А что в этом вопросе не так?
- Все так. Этот вопрос - «бомба». Причем с многолетними последствиями. ДеМарко и Листер описывали ситуацию, что один и тот же проект за одно и то же время могли сделать или 6, или 24 человека. Или 6 профи, или 4 профи и 20 середнячков. Неважно, какова точность, важно, что многие исследователи говорят о принципиальной разнице в скорости работы как программистов, так и тестировщиков, так и аналитиков. С точки зрения фирмы, какая команда выгоднее?
- Естественно, из 6 инженеров.
- А с точки зрения дум менеджера о своей карьере?
За столом повисла тишина.
- А представляете, какого размера нужна команда, если ее формировать только из середнячков и начинающих? Стандартный вопрос кадровика просто вынуждает плохих руководителей выдавливать из своих команд профессионалов, заменяя их новичками. Под любым выдуманным предлогом.
- А руководители-профессионалы?
- А их выдавят с рынка кадровики. У профессиональных менеджеров мало людей в подчинении. И даже при том же уровне сотрудников хорошим менеджерам их нужно существенно меньше. А если тебе уже 32, то почему ты до сих пор не CIO? И все. Стажеры-инженеры учат стажеров-инженеров, стажеры-менеджеры учат стажеров-менеджеров, стажеры-кадровики учат стажеров-кадровиков. Система сколлапсировала, как черная дыра.
- Жуть. Пожалуй, четвертое правило воронки посильнее пулемета Внучки [6] будет, - потрясенно сказал Оруженосец. - Это правда?
- Нет, конечно. Применяй бритву Хайнлайна: «Не ищи злой умысел там, где глупости достаточно».
- Есть мнения, - вмешался Заяц - Первое мнение. Не мое. «В Москве чертовски сложно найти приличного программиста». Это говорят многие. Говорят последние лет пять. И ищут программистов где-то в других городах. Второе. В Москве история с «не старше 30″ началась на несколько лет раньше, чем в других городах. Может и совпадение. Но не может не настораживать. Третье мнение. Опять же не мое. Время выгорания IT-шника у нас - это десять лет. Потом многие уходят в другую индустрию. Кто-то открывает магазин, кто-то кадровое агентство. Десять лет - как-раз стать профи. А может и раньше выгорают. Кто говорит, что и за пару лет можно вполне себе в депрессию уйти. «Мы ищем высокооплачиваемую работу, чтобы хватало денег на психолога и лучшие антидепрессанты.» Интересно, сколько клиентов разработчиков у психологов из «Ясно» (сайт, где встречаются психологи и их клиенты)?
- Так же есть поговорка, - добавил Шляпник, - что рынок IT в России меньше рынка чаевых в США.
- Но есть и положительная сторона, - прервал тягостное молчание Время. - Вы в курсе нашего проекта Хилус?
Существенная часть присутствующих кивнула.
- Наш конкурент опережал нас на полгода. А это стратегический проект, сулящий огромные прибыли.
- Опередят, - вздохнул Заяц. - Я знаю там приличную группу разработчиков.
- Нет, не опередят, - торжествующе сказал Время. - Мне удалось подарить им Квазичерепаха в качестве руководителя всей разработки. Десяток менеджеров и множество инженеров в подчинении. Теперь, не умея разрабатывать, он будет учить разрабатывать и, не умея управлять, будет учить управлять. Четвертое правило в действии. В самом страшном варианте.
- Но там же есть куча приличных ребят, они проект вытянут! - воскликнул с болью Заяц.
- А их он выдавит из фирмы. И вот именно их-то я и жду в наш проект.
- Э-э-э… Для того, чтобы убить проект конкурентов, необходимо и достаточно подарить им одного менеджера!? - спросил Додо.
- Теперь я понимаю, что Черепах Квази делал в Хиусе, - протянул, глотнув чаю, Абсолем. - Он разваливал работу, рушил билды, доводил до истерики Синичку, бесил Соню и Зайца. Достал даже меня. А на самом деле он просто получал строчку в резюме. Абзац. В обоих смыслах. Абзац в резюме и абзац в смысле замысла. Теперь он «работал» с технологией, «руководил», «имеет знания в предметной области». Все в кавычках, но для кадровика четвертого правила - самое то.
- Кстати, именно поэтому твое кураторство над Синичкой было очень коротким. И проходило под кураторством Королевы.
Все замолчали.
- Я падаван и хочу стать джедаем, - поднялся Оруженосец. Положил в чашку земляничного варенья, принесенного Синичкой и продолжил: - Мне наплевать, что я больше нигде не найду работу так же, как Формен [7]. Но я буду учиться. И хочу работать там, где есть у кого учиться.
- К черту торпеды! - заорал Заяц, вставая. - Вперед! Полный ход! [8]
- Fais ce que dois, advienne, que pourra, - поднялся Кот.
- Но наша честь, но наша честь - от нас самих зависит! - промурлыкала Соня.
Присутствующие за столом встали, дружно подняли чашки, кивнули в знак согласия, выпили чая, сели и продолжили финальную битву с ягодным пирогом.
Ближе к концу битвы Оруженосца осенило:
- Стоп. Но если я плохой менеджер, а я плохой менеджер, то зачем мне дали руководить проектом?
- Шахерезада не рассказывает две сказки за ночь. Хватит о работе. Давайте пирог доедать, - подвела итог Королева.
Неподалеку заиграла песня, и компания подхватила мотив:
На нас глядят в бинокли, в трубы сотни глаз
И видят нас от дыма злых и серых,
Но никогда им не увидеть нас
Прикованными к веслам на галерах.
[1] IT-шашлыки - группа в фейсбуке. Шашлыки проводились почти десять лет.
[2] Существуют целых три типа целей проекта в зависимости от того, на какую метрику фирмы они воздействуют. Если вы не можете классифицировать цель - она написана плохо.
[3] Герои замечательного цикла Призрака «бета-тестеры» http://www.lki.ru/topic.php?id=Tales&order=&page=3
[4] Можно посоветовать две книги: «Внутри торнадо» и «Выживают только параноики». Обе они о резком изменении рынка. Гипер-изменении. И о том, как выжить в это время.
[5] Если грубо - это пытаясь сделать каждый предмет таким же, как предшествующий. Ознакомиться с этим правилом можно в книге Генри Нива «Пространство доктора Деминга» http://deming.ru/TeorUpr/Voron_I_mish.htm Это одна из лучших книг по менеджменту.
[6] Бета-тестеры Эпизод 13: Внучка наносит ответный удар http://www.lki.ru/text.php?id=1299
[7] Имеется в ввиду доктор Формен из сериала «Доктор Хаус». Став высококлассным врачом, он потерял возможность найти работу где-то еще, кроме клиники Кадди.
[8] Легендарная, ставшая крылатой фраза американского адмирала времен Гражданской войны Дэвида Глазго Фаррагута.
Байка для оруженосца 16. Не трогай трекер
- Че сопишь, а чай не пьёшь? – Заяц хлопнул по плечу Армигера.
- Да пытаюсь придумать, как перенастроить трекер. Смотри: девять полей «Sprint», на форме фиксации ошибки две дюжины обязательных полей, не считая необязательных, три дюжины состояний, с кучей запретов на переходы в зависимости от роли пользователя. Работать с этим невозможно. Это жуть.
- Не трогай, - ласково посоветовал Шляпник.
- Почему?
Соня взобралась на стол. Офисные кресла мало подходили, чтобы на них взбираться.
- Те, кто настраивает трекинговые системы, делятся на несколько категорий. Полярные категории – это товарищи с повышенным ЧСВ (чувством собственного величия) и четкие пацаны. Пожалуй, этими категориями можно и ограничиться. И ЧСВ-шники, и четкие пацаны вносят изменения в трекер. Но ЧСВ-шники вносят существенно больше изменений. Так сильно проще отчитаться перед начальством о не проделанной работе. Что же касается качества внесенных изменений, то, естественно, ЧСВ-шники почти всегда вносят в трекер хаос. Не, конечно нормальные пацаны тоже этим страдают, но в процентном отношении – меньше. А теперь, прикинь. У тебя есть квадрантр: по одной координате «ЧСВ-шник» и «четкий пацан», по другой «хаос» и «нормальная вешшш». Разберем процентное соотношение. ЧСВ-шники вносят процентов 90-98 изменений в настройки трекера. Из них более 95% - хаос. А из этой половины примерно половина абсолютный, гомерический бред. Но это неважно. Остается процентов пять на четкого пацана. Из этого он ошибается процентов в 20, а в остальном или прав, или это спорно. Попасть в ошибку четкого пацана у тебя 1%. Остальное или нормально, или хаос от ЧСВ-шника. Причем попасть в хаос от ЧСВ-шника, с учетом твоего умения отличать плохую работу от приличных улучшений, неприлично высокий процент. Примерно 146.
Армигер попробовал заикнуться, но Соня была сегодня в ударе.
- Молчи. Просто помолчи и выслушай грустную историю, про итальянского рыбака, уплывшего в море.
- И не вернувшегося, - и Заяц с Шляпником затянули, - Уно, уно, ун моменто…
- Ша, шаромыжники, - Соню было не остановить, как несущегося по бескрайней прерии бизона. – Будьте ласковы, закройте калитку с той стороны. А кто не согласен - то колхоз дело добровольное.
- Сонечка, а вы откуда такие слова знаете? Так даже на привозе не каждый день говорют?!
- А ничего. Эти шлимазлы первые начали. Так вот, если попробуешь поправить этих…
- Редисок, - попробовал вмешаться Шляпник.
- Редисок.
Шляпник с Зайцем заткнулись и уткнулись в чашки с прекрасным чаем.
- Так вот. Есть очень, очень малый процент, что ты критикуешь настройку четкого пацана, которую он внес ошибочно. Но с высочайшей вероятностью ты критикуешь работу ЧСВ-шника. Пойми, он работу работать не может и должен имитировать деятельность. Неся полный бред. Но, как правило, у него влияния в фирме больше. И ты замучаешься пыль глотать, когда скажешь, шо это кака. Выпилят тебя. Так что не надо все это трогать.
Соня спустилась на пол.
- Ну че, камрады? По коням? Во вторник релиз.
Компания потянулась к выходу. Синичка задержалась и застенчиво спросила Шляпника:
- А Соня она всегда такая?
- Нет, что, ты. Соня милейший человек. Очень выдержанный. Ну, когда ее не бесят. Вот был случай с Квази . Так она его чуть не…
Чуть не отправила в нокаут, - завершила Соня.
– Может и зря.
Байка для оруженосца 17. Декада не в счет, или «Совершенная и несовершенная форма управления»
Жизнь перед Новым Годом текла неторопливо. Подчищали старые хвосты, обновляли документацию, писали дополнительные скрипты для мониторинга промышленного стенда и т.д. Только код не писали. Кто ж выводит релиз в последнюю декаду? Нет, слухи о том, что это может окончиться благополучно, естественно, ходят. Многие любят рассказать о том, как они нарушали правила безопасности и все оканчивалось благополучно. К сожалению, альпинисты, которые нарушили правила и погибли, уже не могут поделиться опытом. Типичная «ошибка выжившего».
Потому занимались относительно безопасными видами работ. Заяц давно носился с идеей сделать мониторинг промышленной среды не как в девятнадцатом веке, а по-взрослому, с использованием карт Шухарта. И вот пришел Время и дал отмашку. Хороший мониторинг на каникулах - это не только спокойное дежурство саппорта, но и крепкий сон программистов. Для начала решили реализовать все критерии из «ГОСТ Р 50779.42-99. Статистические методы. Контрольные карты Шухарта.»
И, конечно, проходили митапы. Впрочем, троица из безумного чаепития упорно именовала их курсами повышения квалификации. Как обычно, собрались на кухне. И под малиновое и черничное варенье обсуждали дела текущие.
- Какой последний критерий прикрутили? - спросила Соня, лениво вращая ручки настольного футбола.
- Шесть и более непрерывно возрастающих или убывающих точек подряд для 27 показателей, - ответил Заяц, щелкнув по мячу.
- И как? - Соня задержала мяч.
- Как и ожидалось, немедленно нашли несколько проблем, которых раньше не замечали. Не таких серьезных, как после внедрения трехсигмового предела, но тем не менее. Прогресс налицо. А я говорил, говорил, что пора переводить SLA на современный уровень.
- Система мониторинга образца первой четверти прошлого века ныне считается современной… Куда катится мир, - лениво произнес Время.
- Ну, у остальных то вообще средневековье, - откликнулась Королева.
- Это точно. Четвертое правило воронки действует уже много лет. Что дает нам несомненное конкурентное преимущество. - вставил реплику Время.
- Исключая проблемы с подбором персонала, - проворчала Королева. - Кстати, Армигер, ты слышал, что в системе трех тел Альфа Центавры обнаружена планета земного типа?
- Упс. Да уж, после «Темного леса» известие пугающее. Но после фильма «Зеркала» мне ничего не страшно.
И тут в кухню ворвался Шляпник. Глаза его сияли. Он поставил на стул огромный рюкзак, раскрыл его и начал выкладывать книги.
- Они же все одинаковые. Зачем столько? - разочарованно протянул Армигер. – «Организация как система».
- Сколько смог взять, столько и купил. Больше в том магазине нет. Ну, хоть больше двух дюжин досталось.
Время подошел, побарабанил по твердому переплету и произнес:
- Отличная книга. Лучшая или одна из лучших книг по менеджменту. У меня таких две, - и отправился к угловому столику.
Пока сотрудники перелистывали страницы, в кухню вошел Червонный Валет, достойный преемник Квазичерепаха.
- Почему мои сотрудники не могут списать отработанное время? - грозно спросил он.
- Потому что мы не стали продлять лицензию на Темпо (плагин к Jira), - пожав плечами, ответил Заяц. - В нашей фирме этого никогда не было, а теперь нет и во всем холдинге.
- Я найду Время и буду жаловаться!
- Ты нашел Время. Жалуйся, - донеслось из-за углового столика.
Валет смутился и, бормоча что-то про беспредел и про то, что он найдет управу, вышел из комнаты.
- А действительно, зачем выключили «Темпо»? - поинтересовался Армигер. - Ведь так руководители знали, чем занимаются подчиненные.
- Видишь ли, есть в русском языке две формы глаголов. Совершенной и несовершенной формы.
- Э-э-э…
- У глаголов совершенного вида есть только две формы времени: прошедшее и будущее простое. Настоящее время отсутствует. Нет понятия «делаю». Есть «Буду делать» и «Сделал». Этому же соответствует совершенная и несовершенная форма управления. Если в управлении возникает форма «делаю», то с управлением проблемы. Таймшиты - это несовершенная форма. Они говорят «делаю», а не «сделал» или «буду делать».
- Как только у вас появились таймшиты, у вас появились проблемы в управлении, - зло добавил Заяц.
- Но как узнать, чем занимаются подчиненные?
- Для этого достаточно трекера. Там есть фиксация выполненных задач за период.
- А если они разного размера?
- Это проблема менеджера. Не умеет декомпозировать задачи до одинакового уровня - зачем мне нужен такой менеджер? Королева умеет. Соня, Заяц и Шляпник тоже. Вот примерно так, - устало ответил Время. - Я, надеюсь, тоже умею. Ты, судя по стажировке, тоже смог.
- Окей. А как быть с тем, что это информация для бизнеса о том, сколько стоит доработка?
- Информационный мусор, - откликнулся Заяц. - Смотри сюда. Вот есть простая задача. В неделю приходит 12 задач от бизнеса. В среднем. Двух типов: «А» и «Б». Выяснено, что сделать все не успеваем. Если делаем попеременно «А» и «Б», то делаем только половину. Шесть задач в неделю.
Не будем пока брать в расчет хрупкость кода и прочие атрибуты качества. Пусть каждая решенная задача дает нам в плюс 1000 у.е. Для простоты задачи. Есть три отдела. Верстальщики, кодировщики, тестировщики. У них есть некая мощность. Пусть зарплата у всех одинакова и в отделах следующее количество человек:
* верстальщики -2,
* кодировщики-20,
* тестировщики -7.
Предположим, что:
Для задачи «А» требуется:
* 2/9 человеконедели верстальщика, 2 человеконедели кодировщика, 1 человеконедели тестировщика
Для задачи «Б» требуется:
* 4/9 человеконедели верстальщика, 1 человеконедели кодировщика, 1/2 человеконедели
тестировщика.
- Какие задачи будем решать?
- С точки зрения списанных часов… Задачи «Б».
- Ты только что разорил фирму. Таймшиты - это ложь. Ложь для бизнеса.
Как только они появляются - это несовершенная форма управления. Один из трех самых распространенных способов выстрелить себе в ногу.
Байка для оруженосца 18. Периодическая система видов тестирования программного обеспечения
Очередное чаепитие, очередное подтрунивание друг над другом, очередная постановка мозгов.
Шляпник предложил:
– А давайте попробуем масалу по рецепту чайной «Дом белого журавля»?
– Что за чайная? – заинтересовался Заяц
– Шикарнейшее место с потрясающей атмосферой. Как раз для наших посиделок.
– А что такое масала?
– Чай на молоке с индийскими специями и имбирем.
– О! А мне как раз прислали высокогорный шен-пуэр, – как обычно внезапно появился Кот и принялся колдовать над огромным чайником. – А в «Дом белого Журавля» обязательно сходим.
Вошла Соня и прямиком направилась к Оруженосцу. Открыла рюкзак и выложила перед ним потертую книгу в твердом переплете.
– «Поиск решения», за авторством Балк и Балк, от 1983 года, – задумчиво протянул Армигер. Полистав книгу, спросил: – это ж математика?
– Отличная книга для тестировщика, – ответила Соня, – очень хорошо прочищает мозг и учит думать. И дает богатейшую пищу для проектирования тестов. Например, тест на симметричность – великолепная техника проектирования простых в исполнении тестов. Что характерно, не описана ни в одной книге по тестированию. Но книжка сложна. Действительно сложна. Проглотить ее залпом не получится.
– Окей, посмотрю, – и Оруженосец снова склонился над какой-то распечаткой.
– Что у тебя? – заинтересовалась Соня. – Опять глоссарий ISTQB?
– Типа того. – И Армигер забубнил дальше: – Ad-hoc тестирование, это тестирование…
– Сейчас ты напоминаешь древнеегипетского жреца, – заметил Заяц.
– Это почему?
– Потому что они занимались поиском и описанием всех прямоугольных треугольников, у которых длины сторон были целочисленными. Ну там 3-4-5, 5-12-13 и т.д.
– 1023-64-1025, – буркнул Безумный Шляпник.
– Зачем?! – С мукой в голосе спросил Армигер.
– Теоремы Пифагора не знали, – хладнокровно отрезал Заяц и добавил: – знание нескольких принципов заменяет знание огромной горы информационного мусора в виде фактов.
– Так, парень, давай-ка решим этот вопрос раз и навсегда, а то ты себе голову сломаешь, – вмешался Шляпник, – и превратишься в инженера типа тех студентов, которых описал Фейнман в своих мемуарах. Которые знали массу фактов, но совершенно не умели применять их на практике.
– Но сначала выпьем чаю. – Чеширский Кот вознес на стол поднос с чайником, чашками и блюдечками с сухофруктами и орехами.
– Божественно! Браво мастеру! – сделав глоток, воскликнул Шляпник, – пятилетняя ферментация?
– Ну, когда же вы научитесь разбираться в чае? Пятнадцать лет, коллеги.
Соня уважительно посмотрела на миниатюрную чашечку чая, содержимое которой стоило как хороший коньяк. Или больше.
– Может, стоило приберечь для особого дня?
– Каждый день может быть особенным, если этого захотеть. И что-то мне подсказывает, что сегодня именно такой день.
– Хорошо, поехали. Какие классификации видов тестирования программного обеспечения ты знаешь?
– ISTQB.
– Еще?
– Фаулер приводил в одной из своих книг классификацию. Но она какая-то небольшая.
– Ага. Функциональное, юнит, тестирование производительности, автоматизированное и что-то там еще. Как будто тестирование производительности не может быть ручным или автоматизированным. – Заяц скривился.
– Гораздо интереснее классификация, созданная в фирме «Рейшенал» в 90-х, – продолжил Чеширский.
– К сожалению, потом пришел аджайл, и классификации принялись создавать снова, – заметила вошедшая в кухню Королева. – Теперь у нас множество поименованных видов тестирования программного обеспечения, без всякой системы. Тебе нужно научиться нормальной, современной классификации. Чтобы ты мог разбирать или собирать виды тестирования.
– Как разбирают и собирают мотор в автосервисе, – добавил Чеширский.
– А как?
– Начнем с того, что классификация должна быть фасетной. Ты же знаешь, что такое фасетная классификация?
– Ну, не очень…
– Синичка? – задал вопрос Заяц.
Синичка испуганно посмотрела по сторонам.
– Нет, не знаю.
– Если грубо – это многокритериальная классификация. Впервые была предложена… дайте памяти… для книг. Теперь это можно увидеть, например, в Яндекс.Маркете киче интернет магазинов. У телевизора есть отдельно фасет разрешение и отдельно диагональ. И отдельно вес, потребляемая мощность и так далее.
– Но это не полное произведение. Не для всех разрешений есть все диагонали. И не все производители выпускают телевизоры со всеми разрешениями. Полной ортогональной матрицы нет. Большая часть этого многомерного произведения пуста.
Возникла пауза. Маленькие чашечки с чаем были осушены и наполнены вновь.
– Хорошо, и какие фасеты есть у тестирования?
– Первый и главный – критерий качества, который ты подвергаешь проверке. И еще. Перестань употреблять слово «тестирование». Под этим многие понимают прогон программы. Но для поиска ошибок гонять программу вовсе не обязательно. Перестань на время употреблять это слово. Давай назовем это процессом поиска ошибок в программном обеспечении.
– И, что характерно, целью процесса поиска ошибок является составление реестра описаний ошибок! В отличие от процесса подготовки отчета о качестве ПО, – заявил Заяц.
– Вернемся к критериям качества. Здесь тебе в помощь ГОСТ 25010 от 2015 года.
– ГОСТ?! – воскликнула Синичка.
– И что? Ну ГОСТ. Отличная штука. Ими вполне можно пользоваться. Если умеешь.
– 25010 – это в первую очередь классификатор атрибутов качества ПО. Которые надо проверить на соответствие ожиданиям заинтересованных лиц. Если грубо, то это: функциональная полнота, модифицируемость, защищенность, юзабилити. Условно – это группы. А атрибутов там сильно, сильно больше. Если за полгода разберешься – будет неплохо.
– А следующий фасет – это важность, – предположил Оруженосец.
– Нет, – мягко сказала Королева, – важность – это управленческий атрибут. Не описательный. Ты описываешь виды проверок ПО. Но ведь в каждом проекте они будут иметь разную важность, правда?
– Пожалуй…
– Значит, в описание видов тестирования «важность» входить не должна. Вот так. Всегда разделяй описание и управление.
– Помню, помню. Иначе получатся уродцы.
– Поехали дальше, – Заяц закусил фразу орешком и запил чаем.
– По уровню знания системы. Черный, белый, серый ящик, – вклинилась Синичка.
– Для начала пойдет, – согласился Заяц.
– По времени тестирования. Альфа, бета…
– Не-а. Это, скорее, на каком стенде проводят тестирование.
– А разве тестирование проводят не на стенде тестирования? – удивился Додо.
– Увы, мой друг, – улыбнулся Кот. – Тестирование проводят на разных стендах. На песочницах разработчиков, на стендах технических писателей, на стенде непрерывной интеграции, на промышленном стенде, на…
– На промышленном стенде?! – на лице Синички был ужас.
– Ну да, – ответила Королева, – совершенно стандартный способ тестирования. На промышленных стендах тестируют юзабилити, производительность, …
– Производительность?! – поперхнулся чаем Додо.
– Обычная практика хороших компаний. Так делает Яндекс, Баду, – проворчал Заяц, – а ты не знал?
– Как?!
– Да обычно. Делают сплит и потихоньку увеличивают процент пользователей. И смотрят, что с серверами творится. Об этом же еще Тимур Хайрулин говорил.
– Мой мир перевернулся, – потрясенно сказал Додо.
– Сейчас он перевернется еще больше. Давай-ка возьмем паузу и еще чайку дернем. А лучше закусим курагой и черносливом.
После очередной паузы Чеширский произнес:
– Похоже «Альфа» и «Бета» – это поименованные группы видов тестирования, включающие в себя очень много видов тестирования. Или видов поиска ошибок, что вернее.
– А классификация в википедии?
– А что там? Мы же должны выдвигать новые гипотезы. Если вы ученый, то должны признавать, что будете ошибаться в большинстве случаев. И признавать свои ошибки. И только в этом случае вы хороший исследователь.
– Хорошо, стенды. Дальше, видимо, кто тестирует?
– Ох, если бы все было так просто… Кто тестирует в A /B тестировании?
– Пользователь.
– А кто пишет ошибки?
– Тестировщик… Или аналитик.
– Или спец по проектированию интерфейсов. И мы получаем несколько фасетов. Тесты могут анализировать куча специальностей, тесты могут гонять – куча видов людей, тесты могут проектировать – куча сотрудников.
– Проектировать тесты? – Удивилась Синичка.
– Ну да. На прошлой работе тесты проектировали программисты для тестировщиков, – ответил Додо и сам удивился.
– А бывает, что тесты проектируют тестировщики, а потом их вручную гоняют программисты. Видел.
– Ну вы еще скажете, что проектируют тестовое покрытие пользователи, автоматизацию делают тестировщики, гоняют тесты программисты, а анализируют менеджеры проекта? И все это, например, по атрибутам безопасности? Да ну?
– А что, новый вид тестирования. Пока не имеет наименования. Давай, публикуй, Додо. Новый вид тестирования. Без шуток. Так и назовем этот вид тестирования: «Додо».
– А остальные фасеты в следующий раз, – сказал сидящий до этого в углу Время. – Их еще много. За одно чаепитие не расскажешь.
Байка для оруженосца 19. Система сменных командиров
Армигер сидел за чашечкой иван-чая и ругался. Будучи выдержанным инженером, он по примеру Федора Кузьмича заменял ненормативную лексику малоизвестными терминами. Но интонацию то не скроешь…
- Ангидрида, твою, сикатив! Никотинамидадениндинуклеотидфосфат. Цикло-пентадие-нилтри-карбонилгидрид-вольфрам.
- О как! – Заяц восхищенно покрутил головой. – Но ты полегче, тут все-таки де… Э-э-э… дамы.
- Ты кого тут детьми хотел назвать?! – грозно привстала Соня, автоматически хлопая правой рукой по левому бедру. К счастью, для Зайца, текстолитовый меч остался дома.
- Спокойно, спокойно. Я просто восхищаюсь. Такое выговорить сложнее, чем регулярное выражение для проверки корректности емейла написать.
- Чего ты там нашел? - включился Безумный Шляпник.
- А я сейчас тебе ссылку кину. Полюбуйся.
Шляпник получил ссылку и зашел на сайт. Компания придвинулась к монитору.
- Я окосеваю – сказал Заяц через пару минут. – Это ж надо. Пять модальных окон подряд, которые еще и не знаешь, как закрыть.
- И потом онлайн консультант на полэкрана и еще предложение сделать онлайн оповещение.
- А верх цинизма – предложение сделать стартовой страницей. Они что, Яндекс? - добавила Соня.
- А ты закрыть вкладку попробуй. – Предложил Оруженосец.
- Видали мы… Вида… Вида… Видали мы таких! – Наконец Шляпник прихлопнул сайт. – Однозначно в черный список.
Заяц уже что-то колотил на своем ноутбуке.
- Ты чего? –Спросила Синичка.
- Вношу в черный список на уровне сети фирмы. Что бы никто, никто, никто, никогда не зашел в этот интернет магазин. Хотя бы из нашей сети.
- Но зачем, зачем они так? – с мукой спросил Оруженосец.
- Потому что могут. – Ответил Время. И подумав, добавил. – Пока могут.
- Это другой способ мышления.
- Не поняла, - спросила Синичка.
- Синичка, Синичка, не моргай ресничками. – Заяц увидел недоумение на лице стажерки и добавил. - Ладно, давай без обид. Есть несколько разных миров. Например, миры UX и UI практически не пересекаются. Это разные люди, разные конференции, разные книги. Найти инженера, чтобы умел и то, и другое, это очень постараться надо.
- Погодь, погодь. – Вмешался Шляпник. – Так ты их еще больше запутаешь.
- Ладно, согласен. Давай по шагам.
- Если совсем издалека, то была война между постоянным и переменным током…
- Не настолько с основ, - вмешалась Королева, - Так вы еще с динозавров начнете. Или с ртутных ламп задержки.
Шляпник встал, налил чаю, глянул в окно и поморщился.
- Опять снег… Переживи три месяца зимы и получи три месяца совершенно бесплатно. Ладно. Попробуем. Есть разработчики… ну неважно кто они, программисты, тестировщики, аналитики, менеджеры… Они думают от функционала. От того, что может сделать пользователь, и какую пользу ему это принесет. А есть те, кто начинал с доткомов. Для них важны страницы, а не возможности. Вставить вот эти страницы – пара минут. Но заказчику выставляется счет по числу страниц сайта. Так больше денег вебстудии. И сильно хуже пользователю сайта.
- Совсем грубая аналогия, - вмешался Заяц – выбор обуви. – Допустим тебе нужно выкопать картошку на даче или пройти сотку километров в походе по горам. Тот, кто беспокоится о пользователе предложит, скажем, берцы или кирзовые сапоги. А тот, кто беспокоится о красоте, предложит открытые туфли на двенадцатисантиметровой шпильке.
Соню передернуло. Она регулярно ходила в походы и знала разницу между туфлями и сапогами. Впрочем, с завидной регулярностью, некоторые дамы ухитрялись выйти в лес на шпильках.
- Я не против красивых туфель. Я очень даже «за». Просто всему свое время и место. И чтобы сделать правильный выбор надо знать за разные виды обуви.
- Наука умеет много гитик.
- Плохо то, что они всегда разрабатывали вебсайты. И не разрабатывали бизнес-приложения. Хотя бы и на вебплатформе. Не меняя профессии очень сложно стать профессионалом.
- А чего так?
- Так сложилось. Не зная математики, сложно учить физику. Смежная профессия расширяет твои возможности. К сожалению, сейчас при приеме на работу думают не так. Как правило, «широкую профильность» у нас принято ассоциировать с бездарностью и скачками «галопом по Европам».
«От грамоты, от грамоты все идет, братья! Не в деньгах, мол, счастье мужик, мол, тоже человек, дальше - больше, оскорбительные стишки, а там и бунт…», «Всех их на кол, братья!.. Я бы делал что? Я бы прямо спрашивал: грамотный? На кол тебя! Стишки пишешь? На кол! Таблицы знаешь? На кол, слишком много знаешь!», «Бина, пышка, еще три кружечки и порцию тушеного кролика!» А по булыжной мостовой - грррум, грррум, грррум - стучат коваными сапогами коренастые, красномордые парни в серых рубахах, с тяжелыми топорами на правом плече.
- Опс.
- Угу. А требование к владению смежными специальностями для позиции ведущего тестировщика было предложено для стандарта тестировщика, но зарублено. На самом, типо, высоком уровне. Между тем, умение писать спецификации или умение программировать для навыков тестировщиков отличное дополнение.
- Впрочем, при прочих равных, я бы предпочел тестировщика знающего Excel, а не селениум.
- Ладно. Вернемся к ранее заданным вопросам, - вмешалась Королева. – Шахерезада не рассказывает две сказки за раз. Помнишь?
- Помню, - смутился Оруженосец, - Так почему меня отправили менеджерить?
- Это необходимый навык для любого хорошего инженера. Наверное. Используют этот подход по-разному. Например, этот велосипед был в очередной раз переизобретен и донесен до публики в виде докладов на SQADays-10: http://sqadays.com/ru/talk/11186 . Если покопаться, то можно найти что-то еще.
- Многие японские фирмы практикуют развитие сотрудников «По спирали». Сотрудник проходит много разных позиций и при этом растет в своей профессиональной области.
- Джоэл Спольски, создал трехгодичную программу подготовки менеджеров, в которой было обязательно просидеть полгода на первой линии.
- О, да, незабываемый опыт – тихо произнес Шляпник.
- Вы что, работали в первой линии?! Я думала, вы программисты, - спросила Синичка.
- Мы с Мартовским работали не просто на первой линии. Огромная корпорация, огромное здание… Множество компов. И вот когда главный бухгалтер тебе в лицо говорит, что баланс не сошелся… У-у-у… Ощущения те еще.
- Угу, - присоединился Заяц, - там суммы были такие, что мама не горюй. Да и времена были… нехорошие. А главное – за телефон не спрячешься, все в личном общении. Или делай хороший софт, или…
- Хватит воспоминаний. – Вмешался Время. – «Система сменных командиров» была разработана в СССР. В двадцатых. Опубликована в тридцатых, в книге «Педагогическая поэма» Макаренко. Впоследствии ее использовали многие. Очень интересный вариант предложили, если не ошибаюсь в IBM. Талантливого программиста назначали менеджером. Зарплату при этом не повышали.
- О, как, - крякнул Оруженосец.
- Да. Его гоняли по полной программе. Дерево Текущей Реальности, Дерево Будущей, План, График, … И через полгода предлагали перейти обратно в программисты. С повышением зарплаты. Но теперь он знал не только каково управлять разработкой, но и что нужно руководителю разработки. После перевода зарплата этого разработчика вполне могла быть выше, чем у руководителя проекта.
После паузы слово взяла Королева.
- Кстати. В СССР точно известен минимум один случай, когда инженер получал больше, чем директор крупного завода. И есть фильмы, где обыгрывается смена ролей. А также для газосварщика шестого разряда было вполне нормально иметь еще несколько профессий. Электрика, например. Ты как, Армигер?
Армигер вспомнил старый, старый фильм и ответил цитатой оттуда:
- «Теперь я понял, как вы нас пожалели тогда на пляже.»
- Вернее, не так. Теперь я понимаю, какие данные я должен выдавать РП. И теперь я понимаю, почему мне подняли зарплату после перевода из менеджеров в тестировщики. Спасибо.
Байка для оруженосца 20. IT шашлыки, или приорити против северити
В летний теплый денек выбрались на шашлыки. Чтобы было не скучно, устраивали конкурсы. Понятно, что центральный конкурс – конкурс шашлыков. Дюжина поваров и три дюжины зрителей. Условия конкурса были зверскими. Старт давался в 12:30. В это время можно было первый раз подойти к своей площадке. А в 13:55 нужно было снять готовый шашлык. Никто не имел права помогать повару в готовке. Разве что мангал и стол установить. На конкурс шашлыков каждый повар приносил пятилитровую кастрюлю собственноручно замаринованного мяса. Допускались: свинина, говядина, оленина, медвежатина, индейка, гусь, курица. Т.е. звери и птицы. Но не рыба и не ракообразные. Дюжина поваров, три дюжины участников, неторопливые рассказы баек, погожий день – что еще надо для отличного отдыха?
Заяц и Шляпник, ловя завистливые взгляды остальных поваров, быстро установили на своих площадках стационарные мангалы на высоких ножках, сваренные из четырехмиллиметрового железа. А между ними поставили общий разделочный стол. Шляпник вывалил в мангал кучу древесного угля, а Заяц разложил в мангале поленья.
Напевая:
… Время все расставит по местам,
Всех вождей - по весу и по росту.
Старые погосты залатав,
Мы построим новые по ГОСТ-у.
Заяц критически осмотрел конструкцию из поленьев и плюхнулся на скамейку.
- Тоже к нашему столу? – спросил Шляпник, приближающуюся к ним компанию.
- Да, вот нашел Время и решил присоединиться к вам. – ответил, ухмыляясь Чеширский.
Время, Кот, Синичка, Королева и Оруженосец чинно расселись за столом. Чеширский поставил в центр огромный чайник, а Синичка вывалила на тарелку пирожки.
- С капустой! – воскликнул Заяц, надкусив пирожок. – И явно от бабушки Флэш.
- Угу. Сегодня первое место в конкурсах «чая» и «к чаю» можно считать определившимися. – И Шляпник перевел разговор на производственную тему. – Прикиньте, что сделали эти наши субподрядчики. Они попросили нас заполнить анкету о «проделанной ими работе».
- Э… Вроде нормальная процедура, направленная на улучшения качества обслуживания. – Промолвил Оруженосец.
- Не-а. Это грязная манипуляция, в стиле китайских концлагерей.
- Описанная Чалдини в книге «Психология влияния».
- Если мне не изменяет память, - добавил Кот, - глава «Обязательство и последовательность».
- Мы решили немного копнуть для очистки совести. Спрашиваем – а вам зачем? Отвечают. Честно отвечают, что от этого премия их зависит. Спрашиваем дальше. А начальство в курсе ваших просьб поднять вам премию? В курсе. Начальство говорит, что если удалось наладить контакт с заказчиком, то проект успешен.
- Н-да, - протянул Время – Тут они и спалились. Цель анкеты не в том, чтобы улучшить качество обслуживания. Анкету можно вообще не читать. Смысл в том, чтобы заказчик ее написал. Именно за это премию проектной команде и дают. Не за хорошо выполненный проект, а за то, чтобы заказчик написал положительную рецензию.
- А для проектной команды у них это используется как KPI. А все, что можно использовать как KPI не проходит «быстрые проверки управленческих решений» и должно быть предано анафеме, - добавила Королева.
- Но рецензию то вы написали? – поинтересовалась Синичка.
- А то. Втроем писали. Заяц, Чеширский и я. Влепили им по единице по всем пунктам, предложили ознакомиться с рекомендациями по оформлению проектной документации. В частности, ГОСТ-ами второй серии. Ну, например, ГОСТ 2.105. Или книгой «Справочник издателя и автора» за авторством Аркадия Мильчина, Людмилы Чельцовой. Спросили, знакомы ли они с «перекрестными ссылками» и правилами подписи таблиц и рисунков. И что использование процессорного времени в линуксе считается немного по-другому, чем в винде.
- Потом Шляпник познакомил их с теорией систем, - перебил Шляпника Заяц, - и указал, что ограничение производительности системы не может быть одновременно в четырех местах: процессор, память, сеть и дисковая подсистема. А в одном, только одном. Т.е. весь их отчет стоит дешевле, чем бумага, на которой он напечатан.
- А Чеширский спросил, почему у них есть сертификат CMMI четвертого уровня, но при этом проектная команда пишет проектные документы отвратительного качества. Ведь шаблоны проектной документации и правила их использования внедряются при переходе на второй уровень.
- Да купленный у них сертификат, купленный, – констатировала Королева.
- Но самую большую подляну кинул Заяц. Он робко поинтересовался, имеет ли смысл публиковать отчет в корпоративном блоге на Хабре.
Оруженосец и Синичка синхронно поперхнулись чаем.
- Да не будем мы публиковать, не будем. Но аванс им придется вернуть. Т.к. результат работы полностью отрицательный.
- Нулевой?
- Нет, отрицательный. Мы же свое время тратили на них.
- Запомните, - подвел итог Чеширский, - если после проекта, или тренинга, или семинара, вас просят ответить «понравилось / не понравилось» - вами пытаются манипулировать.
- Слушайте, а чего вы сидите? Вон остальные у мангалов суетятся, уголь разжигают, мясо нанизывают.
- Потому что преждевременный старт проекта приносит фирме больше вреда, чем запоздалый, - ответила Королева. – Проект считают с конца. Шашлык из свинины должен готовиться восемнадцать с половиной минут.
- Ну, не с такой точностью, - поморщился Шляпник, - но в целом верно. Как говорилось в старом советском фильме ЕМНИЛ, «Мальчик со шпагой», «Держать шпагу нужно как птицу. Возьмешь сильно – задушишь. Возьмешь слабо – улетит.» Готовка шашлыка очень похожа на проект. Дашь мало времени и сильный жар – будет подгоревшая корочка, а в середине не сырое мясо. Дашь много времени и слабый жар – получишь сухое мясо. Снимешь поздно – оставишь зрителей голодными. Снимешь рано – остынет. Так что пока сидим, чаи гоняем.
- Мне казалось, что на шашлыках приняты другие напитки? – робко поинтересовалась Синичка.
- Кому как. По мне, так зеленый чай перед приемом тяжелой пищи очень даже хорошо.
- Или белый.
- Или красный.
- Или желтый.
- Или масала.
- А это что? – Недоуменно спросила Синичка, наливая густую, белую с желтизной жидкость из чайника.
- А это на масала. Это джомба. Один из вариантов калмыцкого чая, с кучей редких ингредиентов, - улыбнулся Чеширский. – Отличная штука, когда до основного блюда еще полтора часа.
- Ну и задачку ты им задал, - протянул Шляпник, отхлебнув чая и перевел стрелки разговора в деловое русло, - Армигер, а чего тебя не было видно в последние дни?
- Приоритеты для задач расставлял.
- Забудь ты это поганое слово, приоритет, - ввернул Заяц.
- А чего так? – удивился Оруженосец.
- Начнем с прошлого времени, - начал рассказ Время. - Была такая фирма, Rational. Сотрудники этой фирмы сделали чертовски много для развития науки разработки программного обеспечения. И многие их наработки до сих пор в разы круче всевозможных скрамов, канбанов и прочих эджайлов. В частности, они выпустили один из лучших или до сих пор лучший трекер ClearQuest. И там, в настройках по умолчанию было два фасета: «Важность и срочность». Сейчас их путают, а иногда просто оставляют один – «приоритет» или, другое название – «срочность». Использование только «срочности» приводит к тому, что задачу нужно делать «вчера, вчера, позавчера». Это плохое управление. Есть квадрант Эйзенхауэра. Сочетающий важность и срочность. Идея о том, что основное внимание руководителя должно быть сосредоточено на важных, но не срочных задачах довольно любопытна. Но от срочности лучше бы отказаться. Совсем. Большое количество срочных задач в разработке программного обеспечения, как правило, плохо.
- Угу, - проворчал Заяц, - Была у меня как-то работа… - Заяц поднял глаза к небу. – Там, если говорили: «Да через недельку доработку можно сделать», - то нужно было начинать делать после завершения очередной задачи, а если говорили: «Срочно, срочно», - то делать вообще было не нужно. Через час отменяли задачу. Важность важнее срочности. А разницу между ними прекрасно описал Александр Лобач много лет назад: http://alexlobach.ru/2009/07/severity-priority.html
- Ну так вот. – продолжил Время. – Есть множество отвратительных способов управления задачами. Среди них: кто громче крикнет, кто больший зануда и, кто получает наибольшую зарплату. Эффект эксперимента Милгрема привел к тому, что часто на совещаниях военных, первым высказывается младший по званию.
- Есть плохие методы. Срочность, или приоритет – плохой способ.
- А хорошие?
- Например, порядок исполнения. Очень хороший способ. Есть и другие. Разберем важность. Разберем на примере ошибок, пропущенных в промышленную эксплуатацию. Пусть за время тестирования релиза тестировщики нашли 85 дефектов, а после выпуска в промышленную эксплуатацию пользователи нашли еще 15 дефектов. Всего найдено 100 дефектов. Насколько плохой софт выпустили?
- 15% в эксплуатации это многовато, - сказал Оруженосец,- имело смысл задержать релиз на пару дней. Пожертвовать показателем time2market (срок вывода продукта на рынок) в пользу бездефектности.
- Верно. Бездефектность и time2market находятся в состоянии равновесия по Парето.
- Это которые 20 на 80? - Спросила Синичка.
- Не, не, не, - замахал руками Время, - не путай распределение Парето и равновесие Парето. Равновесие – это ситуация, когда ты не можешь улучшить одну характеристику, не ухудшив другую. Вернемся к теме. Вот две ситуации. Два проекта.
- И там, и там в прод пропущено 15% ошибок.
- Но ситуация кардинально различается, вставила реплику Королева. – Вопрос в том, насколько кардинально.
- Проект «А» - хорошее качество, проект «B» -плохое, - потер лоб Оруженосец.
- А насколько одно хуже другого? В этом то и есть вопрос.
У Зайца заиграл брегет.
- Ша. Пауза. - Заяц и Шляпник синхронно встали. Заяц зажег спичку и поднес к заранее сложенным дровам, а хитрый Шляпник просто включил строительный фен и положил его в угли. После чего приятели вернулись за стол.
- Существует несколько способов ранжирования. Разберем на примере конкурса шашлыков, проходящего сейчас. Двенадцать поваров. Худший получает ноль очков, следующий единичку, и потом очки идут по ряду Фибоначчи. Итого, оценки: 0, 1, 1, 2, 3, 5, 8,13, 21, 34, 55, 89. Максимум – 89. Точно так же можно привести соответствие «важности» дефекта или фичи. Например, 1, 2, 3, 5. И картина «несколько» меняется.
- Семь процентов и двадцать пять процентов – это две большие разницы.
- А вот отставание по времени подачи шашлыков измеряется по функции Тагути. Одна минута отставания – один штрафной балл. Две минуты – четыре штрафных балла. И далее квадратичная последовательность. Максимум разрешено опоздать на 7 минут, а это 49 баллов штрафа. В случае с дефектами получается еще одна картинка:
- А вот это уже похоже на правду, - протянул Оруженосец. – Разница между результатами проектов по бездефектности более чем в семь раз. И первый я бы выпустил, а второй зарезал.
- Но есть еще варианты. Есть квадрант «Важность / неопределенность». По нему можно определять порядок реализации фич и исправления дефектов. А можно оценивать чай на наших шашлыках. В случае с фичами: сначала делаем важные с высокой неопределенностью, затем важные с низкой неопределенностью. И, если время осталось, или Время разрешил, то далее делаем маловажные фичи с высокой определенностью. А потом с малой определенностью. Этот подход Влад Балин хорошо описал. У нас так ранжируется конкурс чая. «Хороший / обычный» и «Высокая / низкая сложность приготовления».
- А в баллах?
- А в баллах идет по степенной функции. Низшая оценка «Просто и обычно» - число «е» в нулевой степени. Итого – 1. Далее «е» в степени один, округленное до целого. Итого - 3. Высшую оценку, естественно, получит Чеширский - 20. За самый сложный и самый лучший чай.
- И что лучше использовать в проектах?
- А нет лучшего. Каждому проекту – свое. Закончил Время.
А Заяц и Шляпник пошли готовить шашлыки.
Байка для оруженосца 21. SCRUM, Kanban и все, все, все
– О, свежая черника и земляника! – В кухню влетели Заяц с Оруженосцем.
– А также голубика, костяника, шиповник и малина, – продолжил Чеширский
– Костяника? – заинтересовался Армигер.
– Ее еще называют северным гранатом за обилие витаминов.
– А в чайнике что? И откуда дровишки?
– В чайнике какие–то травки. А дровишки от Бабушки Флэш, – ответил Шляпник.
– Что вкусно, а главное – очень полезно, – напел Заяц, наливая полную пиалу.
Насладившись букетом, Армигер спросил:
– Коллеги, а почему мы девопс не внедряем? Или Канбан?
– А зачем? – удивился Заяц. – Сколько не говори канбан, эджальней от этого не станет. Ну назовем мы то, что у нас есть, канбаном. И зачем? От названия-то суть не меняется.
– Ну-у-у… – протянул Оруженосец.
– Зачем нам походить на остальных, которые страшно далеки от эджайла? – начал Кот, – Что XP, что SCRUM направлены на кардинальное уменьшение time2market за счет уменьшения времени ожидания в очередях. Для устранения времени ожидания один из самых действенных способов – уменьшение числа рабочих центров. Кстати, именно по этому пути пошла «Тойота». И за счет этого достигла огромных успехов. На смену рабочим с узкой специальностью в «Тойоту» пришли универсалы, обслуживающие несколько станков разного типа. Точно так же Эджайл предполагает сокращение числа РЦ. Достаточно радикальный метод – это вместо аналитиков, проектировщиков интерфейса, программистов, тестировщиков и т.д. оставить только разработчиков. Как ни странно, помимо уменьшения time2market это может при вести к снижению стоимости в расчете на единицу функциональности. Так получается, потому что в нормальной производственной цепочке все РЦ, кроме ограничения системы, должны простаивать порядка 25%. А в сбалансированной цепочке все РЦ будут простаивать 20-25%. XP пошло в универсализации еще дальше. Каждый кусок кода должны знать минимум два программиста. Вместо узкой специализации «Каждый знает свой модуль» получается «Желательно, чтобы все знали все». Это позволяет еще сильнее снизить потери на вариациях. А ведь именно борьбу с вариациями Деминг считал главнейшей задачей менеджмента. А вовсе не «мотивацию персонала».
– К сожалению, внедрению Эджайл-методологий в России мешают психология и корпоративная культура. Причем мешают настолько, что делает внедрение практически невозможным, – добавил Шляпник. И, помолчав, процитировал Деминга: – Мы сами всё разрушим своими же упорными стараниями.
– Это как? – заинтересовался Оруженосец.
– Смотри, – перехватил беседу Заяц. – На подготовку кодера нужно два года. Как выяснили Том ДеМарко с Тимоти Листером в ходе «Военных маневров», после двух лет изучения языка программирования разница в скорости и качестве кодирования на маленьких задачах практически незаметна. Зато после двух лет инженер может расти сначала как программист, потом как разработчик. Если брать пятиуровневую модель зрелости разработчика ([1] – стажер, [2] – начинающий, [3] – инженер, [4] – ведущий, [5] – маг), то для перехода со второго на третий уровень требуется порядка 10 000 часов. А это лет 6–7. Для перехода с третьего на четвертый, когда инженер начинает прилично разбираться в смежных дисциплинах (анализ, UX, контроль качества, написание руководства пользователя) и ряда предметных областей (логистика, бухгалтерия, …), пройдет еще несколько лет.
– А зачем все это? – спросила неслышно подкравшаяся Синичка. – И зачем руководство пользователя?!
– Не стоит брать на работу программистом тех, кто не в состоянии понятным образом излагать свою мысль на родном языке. Категорически. Эта работа им противопоказана. Если инженер не желает изучать ничего, кроме кодирования, то он так и останется кодером.
– А что же по этому поводу говорит наша корпоративная культура? – добавил интриги Кот.
– Что? – в унисон спросили Синичка и Оруженосец.
– А вот что, – и Чеширский вытащил из шляпы рисунок и пустил по кругу.
– Наша индустрия предпочитает «молодых и амбициозных» сотрудникам с большим опытом. Программист просто не успевает стать разработчиком. И уходит. В менеджмент. Или вообще в другую индустрию.
Что же касается девопса, то этим идеям много десятилетий. ISO 9001 прямо предлагает вместо цепочки «инженер -> руководитель группы -> руководитель отдела -> руководитель департамента -> биг босс -> руководитель департамента -> руководитель отдела -> руководитель группы -> инженер» использовать тривиальную цепочку «инженер -> инженер». К сожалению, из-за бессмысленной и беспощадной ротации у нашей индустрии память, как у аквариумной рыбки. Пока до соседней стенки доплывет, уже забудет, что было у предыдущей стенки. Вот и переизобретают велосипеды с шестиугольными колесами взамен велосипедов с круглыми колесами, которые делали много лет назад. Девопс, девопс сто лет в обед.
– Но ничего, – и Заяц достал еще один листок:
– С корпоративной культурой понятно. В типичной среде у кодера почти нет шансов стать разработчиком. Его просто «уйдут», – подытожил Оруженосец. – А психология?
– О! Там действует целая куча когнитивных искажений. Для примера рассмотрим «Открытие Земмельвейса».
– Что?
– Не что, а кто. Игнац Филипп Земмельвейс, врач-акушер. Придумал один из способов асептики и спас несколько сотен жизней. За что коллеги его травили, затем обманом заманили в психушку, где благополучно и убили через пару недель.
– Э–э–э… Я что–то не понял. Врачи убили врача за то, что он спасал жизни пациентов?!
– Угу. И за то, что предложил распространить метод на остальные клиники, с тем чтобы спасать не сотни, а десятки тысяч жизней в год. Что интересно, немецкий врач Густав Михаэлис, который одним из первых применил на практике идеи Земмельвейса и добился снижения смертности среди своих пациенток, покончил жизнь самоубийством из-за осознания собственной неспособности изменить общее мнение врачебного сообщества. Убийство и самоубийство врачей, пытавшихся спасти жизнь пациентов.
– Так что если инженер или менеджер вместо «прозрачности», «мотивации», «эджайле» и прочем «скраме» будет говорить об уменьшении связанного капитала, увеличении прохода и тому подобном за счет уменьшения вариаций и увеличении простоев рабочих центров, то есть о сути эджайла, то он очень рискует.
– Как говорил один известный Кот: «Мнэ–э не советую, молодой человек, не советую. Съедят.»
Синичка с Оруженосцем удивленно посмотрели на Чеширского.
– Не, не, – замахал руками Чеширский, – этот Кот герой совсем другой истории. Очень неплохой.
– А о чем та история?
– О настоящем Эджайле. Эджайле с большой буквы. По крайней мере, главный герой там программист. Она так и называется: «Сказка для научных работников младшего возраста». И Эджайлу тому уже полвека. – И Чеширский выразительно посмотрел на библиотечный шкаф.
– А может, все и не так, – задумчиво пробормотал Безумный Шляпник.
– Что-то вы меня совсем запутали.
– Ну, гипотезу мы тебе дали. Проверяй. – И хлопнув Оруженосца по плечу, Заяц отправился делать кодеревью.
Любой человек должен уметь менять пеленки, планировать вторжения, резать свиней, конструировать здания, управлять кораблями, писать сонеты, вести бухгалтерию, возводить стены, вправлять кости, облегчать смерть, исполнять приказы, отдавать приказы, сотрудничать, действовать самостоятельно, решать уравнения, анализировать новые проблемы, бросать навоз, программировать компьютеры, вкусно готовить, хорошо сражаться, достойно умирать. Специализация - удел насекомых.
(c) Хайнлайн
Байка для оруженосца 22. Реквием по надежде
Заяц стоял у книжного шкафа и ленивого перелистывал страницы какой-то книги. Со вздохом сказал:
- Реквием по надежде, - и начал ставить книгу на полку.
- Что там у тебя? - живо поинтересовался Оруженосец.
Заяц подошел к столу и положил книгу в центр.
- «Человеческий фактор. Успешные проекты и команды.». Знаю, читал, - сказал Оруженосец. – А почему реквием и почему по надежде?
- Потому что тридцать лет назад эта книга была надеждой, а сейчас это реквием.
- Вот скажи мне, дорогой друг про отличия между руководителями проектов по созданию программного обеспечения, – вмешался Шляпник, - кстати, Синичка, это и тебя касается.
Синичка пискнула и спряталась за чашку, а Оруженосец уточнил вопрос:
- Между хорошими и плохими руководителями?
- Ну, если хочешь, то между хорошими и плохими.
- Хорошие менеджеры выдают результат вовремя и в рамках бюджета, - неуверенно начал Оруженосец.
Мартовский Заяц закашлялся, поперхнувшись чаем. Шляпник, предусмотрительно отставивший чашку, парировал:
- Да ты гонишь.
- Это кто ж тебя так обманул? – откашлявшись, спросил Заяц.
- В статьях пишут. И в рекламе тренингов по менеджменту. Еще там пишут, что хороший руководитель умеет мотивировать персонал.
- Не надо перед завтраком читать такие статьи.
- Так других-то нет.
- Тогда никаких не читай.
- Существуют две категории руководителей, - включилась в разговор молчавшая до того Королева, - первые знают отличия общей причины вариации от особой, а ко второй категории относятся все остальные. Все остальные способы категоризации менеджеров относительно бесполезны.
Видя недоуменный взгляд Оруженосца, Чеширский смягчил высказывание Королевы:
- Это может быть так, может быть не совсем так, может быть совсем не так, может так, но не только так. Но как безумный вброс, позволяющий сдвинуть обсуждения с мертвой точки, эта гипотеза просто великолепна. Зря, что ли, у нас безумные чаепития? Неожиданный вброс – один из приемов мозгового штурма. И это одна из причин, по которой мозговые штурмы так непопулярны и в наше время практически бесполезны. Люди боятся ошибиться. Боятся признаться в своих ошибках. Классификация руководителей «боится/не боится высказать безумное предположение» могла бы стать альтернативным вбросом. Но гипотеза Королевы гораздо лучше подходит под стиль наших чаепитий.
- На то она и Королева, что не боится безумных гипотез, - пробормотал себе под нос Заяц.
- Ладно, вернемся к начальным гипотезам, - продолжил Кот. – Великий менеджер всех времен и народов Деминг прекрасно демонстрировал бессмысленность мотивации при плохой технологии.
Один из вариантов – эксперимент с шариками для пинг-понга. Сперва он просил участников семинара - а это были дядьки в галстуках, директора и топ-менеджеры, многие с дипломом MBA - перечислить все известные им способы мотивации. И честно записывал в столбик.
Потом приглашал человека из зала, завязывал ему глаза и давал ему миску с белыми и красными шариками для пинг-понга. И просил выбрать десять красных. Человек, понятное дело, не мог.
Тогда Деминг начинал идти по списку способов мотивации:
- Материальная мотивация! Я дам тебе 10 долларов, если ты выберешь только красные шарики!
- Отрицательная материальная мотивация! Я оштрафую тебя на 10 долларов, если ты выберешь хоть один белый шарик!
- Эмоциональная мотивация! Джонни, я верю в тебя, ты крутой парень! Я знаю, ты выберешь только красные шарики! Друзья, давайте хором: «Джонни! Джонни! Ты крутой! Ты справишься!»
- Карьерная мотивация! Я уговорю твоего начальника повысить тебя по службе, если ты выберешь только красные шарики!
- Мотивация отпуском! Я разрешу тебе уйти домой раньше, если ты выберешь только красные шарики!
Но, как ни удивительно, ни один из способов мотивации не помогал человеку выполнить задачу. И тогда Деминг объяснял залу, что, если нет четкой технологии для выполнения работы, мотивация в лучшем случае дает нестабильный результат, а чаще - помогает как мертвому припарки.
- А вообще, похоже, что лучший способ демотивировать сотрудника - это попытаться его мотивировать. О этом еще Марк Твен в «Томе Сойере» написал, – добавил Безумный Шляпник.
- Да, впоследствии на эту тему ставилось множество экспериментов. Часть из них описана в книге «Психология влияния» за авторством Чалдини. Дай бог памяти… Вроде у него была такая история. Мама-психолог, а может, и консультант по мотивации персонала, просит вынести мусор своего сына-школьника. И начинает издалека, чтобы его «замотивировать». На что сын в сердцах восклицает: «Да вынесу я мусор, вынесу! Только не надо меня мотивировать».
- Звучит убедительно, - подумав, ответил Оруженосец. - А с тем, чтобы точно в срок, чего не так?
- Помнишь проектирование диверсии с помощью четвертого правила воронки?
- Не то слово, - передернуло Оруженосца, - жуткая история.
- Какой там тип вариации?
- Общая.
- А что показывает сам эксперимент, со всеми четырьмя правилами?
- Что попытка компенсации вариации, вызванной общей причиной, приводит к ухудшению ситуации.
- Со всей неизбежностью, - добавил Заяц, – и ситуация с общей причиной вариации, как с гравитацией. Гравитация - совершенно бессердечная сволочь. Ей абсолютно все равно, веришь ты в нее или нет.
- Пока не понял, при чем тут «Точно в срок»?
- Разработка программного обеспечения - интеллектуальная деятельность, в отличие от штамповки на конвейере микроволновых печей. Для интеллектуальной деятельности характерны довольно приличные вариации. Часть вызвана общими, часть особыми причинами. Для примера, особая причина, которую скомпенсировать можно, описана в эксперименте «Ошибка планирования» аж от 1994 года. Но есть еще те, которые вызваны общими. И вот тут-то попытка компенсации «точно в срок» приводит к феерическим факапам. Что наглядно продемонстрировали в 1985 году Майкл Лоуренс и Росс Джеффри в ходе своего исследования. Сам факт наличия оценки проекта приводит к снижению производительности разработчиков в 1,5-2 раза. То есть берем десяток команд и даем им задачу выполнить один и тот же проект. Ну, помнишь свое соревнование. Допустим, в среднем будет три месяца. Какая-то команда сделает за полтора, какая-то за семь месяцев. А теперь возьмем другой десяток команд и дадим оценку. И, вуаля - среднее время увеличится в полтора-два раза.
- И все это ДеМарко с Листером описали тридцать лет назад, - вставил Заяц.
- Но вообще-то точно вовремя проект сделать можно. И для этого есть ажно несколько способов, - хитро прищурился Шляпник. – Способ первый. Ты не знаешь, что получится. Единственным обязательным конечным артефактом является аналитическая записка о результатах. А получится софт или не получится – никто не знает, да это и не требуется. Поставили срок – два месяца и пошли писать софт для искусственного интеллекта.
- Два месяца, - пискнула Синичка, - а это не маловато?
- Это реальный проект. Полувековой, что ли, давности. Нормальная НИР (научно-исследовательская работа). Два месяца прошло – проект закрыли. С результатом проекта: «Два месяца маловато». Если тебе все равно, сколько и какого качества функционала будет на выходе, то жесткий срок – нормальный выбор. Нормальный подход для олимпиад по программированию. Дали полдня, а сколько успеешь – столько и будет. Второй способ – забить на производительность и честно пойти на увеличение срока. Нормальный вариант, если нужна жесткая и жестокая синхронизация с другими производствами.
- Лет десять назад слышал я и третьем способе, – перехватил инициативу Заяц. – Жил-был «эффективный менеджер». Чтобы уложиться в срок, он давал команде обещание, что будут проектные премии и оплата сверхурочных. А после сдачи проекта, чтобы уложиться в бюджет, говорил, что бюджета нет.
- Какая скотина… - прошептала Синичка.
- Угу. Только вот на каждый новый проект команду ему нанимали заново. А учитывая стоимость замены разработчика, это вообще-то удваивало стоимость проекта. Такое вот печальное «вовремя и в рамках». Но исходя из твоего первого определения, он был «хорошим менеджером».
- Что делает мое первое определение не только фальсифицируемым, но и неверным, - медленно произнес Оруженосец.
- И если у тебя хорошая память, то ты помнишь, что тридцать лет назад ровно такая ситуация была описана в «Peopleware».
- Плохо, что люди книг по специальности не читают.
- Может, и читают, - вздохнул Кот. – Тут другая проблема. Ученый отличается тем, что выдвигает гипотезу, ставит эксперимент и принимает результаты, какими бы неприятными эти результаты не были. Людей, способных принять результаты эксперимента, мало. Ученый ошибается чаще, чем не ошибается. И это очень болезненно. Немногие способны выдержать этот стресс. Деминг был ученым, и он стал величайшим менеджером двадцатого столетия. «В срок и в рамках», а также сказки про мотивацию очень удобны. И люди будут продолжать за них цепляться, несмотря на опубликованные результаты и возможность эти результаты проверить. Когнитивное искажение «вера в убеждения» в действии…
- Вот поэтому я назвал эту книгу реквиемом по надежде. Три десятка лет назад была надежда изменить ситуацию. Но с тех пор стало только хуже. Теперь эта книга не надежда, а реквием по надежде, - сказал Заяц.
- А гипотеза Королевы прошла первичную проверку и, похоже, крайне близка к истине. Но, почти наверняка, классификация должна быть фасетной. Как это описано, например, в дидлайне и том же пиплваре - завершил Чеширский.
Чай допивали в гробовой тишине.
Байка для оруженосца 23. Вести недобрые гонец тестировщик принес
А я цельное лето, цельное лето: утром покос, вечером надои, то корова опоросится, то куры понеслись… А тут вишня взошла! Свекла заколосилась!.. Пашешь, как трактор… А ежели дождь во время усушки, а?
На столе сиял древний самовар. Самовар откопал Додо на чердаке в деревне. И привез. Чайная традиция пришлась ему по душе. Примерно, как самовар сиял Заяц и травил анекдоты.
– Сегодня в селе прошел стендап митинг. Вчера из города на побывку к родителям приехал трам–мастер Кеша. Станичники попросили его рассказать за Эджайл.
В четыре утра этот придурок залез на колокольню и начал долбить в пожарный рельс. Когда полуголые селяне выскочили на улицу, он важно произнес: «Мы с отцом за дровами, остальные свободны.» После чего каждый селянин рассказал, какие у него проблемы в проекте и что он собирается делать сегодня. Что интересно, в лес Кеша так и не поехал, т.к. у Кеши возник форс-мажор в связи необходимостью вести мониторинг окрестностей с высоты колокольни и полной невозможностью спуститься. Не оценили селяне эджайла. Что с них возьмешь – деревенщины.
– Наверное, мало собраний было. Эджайл покер оценки сложности задач не провёл, скажем. – задумчиво протянул Шляпник, вот слушай. И Шляпник начал рассказывать только что придуманную историю
– На следующий день Кеша решил сделать обход рабочих площадок. Начал с тенистого местечка, где колол дрова Митрич.
– За какое время дорубишь?
– Дык это как пойдет. Попадется сучкастое толстое да с перевитой древесиной, так с ним одним можно полчаса провозиться. Тут наперед не скажешь. Сколько будет, столько будет.
– Не, это не подход. Надо выбрать основное условное полено и от него сделать оценку. Это новейший метод планирования проектов. Планинг покер называется.
– Ишь ты, – заинтересованно сказал Митрич, отставляя в сторону здоровенный колун и присаживаясь на огромное полено. Митрич уже много лет играл по интернету и про покер знал все.
– Вот это полено оценим в один стори поинт, это в два, а это в пять. И если мы обрабатываем один сторипоинт за минуту, то на все про все у нас уйдет, – тут Кеш оглядел кучу дров, – двадцать пять минут.
– Ишь как точно, – удивился Митрич, – може полчаса? Аль час?
– Надо использовать современные методы оценки, – отрубил Кеша, – И использую современные фреймворки мы будем сдавать спринты точно в срок. – С этими словами Кеша снял с плеч рюкзачок и вытащил туристический топорик, весом в полтора фунта.
– Современная штука. Отличная сталь, прекрасная ручка, – то что надо. А вашему инструменту, наверное, с полвека будет?
– Може и поболе, – Митрич погладил рукоятку колуна неспешно налил домашнего кваса из бидона. – Еще мой дед им махал. А что до него было – не знаю. Тут цифири выбиты – 1887. Може это год, може еще чо.
– Ну, так. Устарелая технология. Это как Дельфи – которая давно умерла. Нам нужны современные технологии, – и Кеша начал бодро махать топориком.
Через десяток минут Кеша все также махал топориком, но пока ни одного полена не поколол. А к Митричу присоединился Семен.
– Слышь, Митрич. А он в курсе, что дрова не рубят, а колют?
– Не в курсе. Но у него Эджайл. Так сказать, молодой и амбициозный. Пусть помашет. Дров не будет, так хоть согреется. А может еще чего и про покер расскажет.
Соня прыснула. Она неоднократно видела туриков приходивших в лес с электрокипятильниками и очень живо представляла себе картину колки нормальных деревенских дров туристическим топориком.
– А чего плохого в стендап митинге? – спросил Армигер.
– Да ничего. Не бывает плохих приемов. Бывает неправильное или не вовремя их применение.
– Возьмем пример из книги Эрика Берна. – Продолжил Чеширский. – Рыцари круглого стола. Круглый стол – символ равенства. Но как только за столом появляется Король, то равенство мест исчезает. Так и на стендап митинге. Как только там появляется менеджер – все становится по-другому. Ну и еще несколько мелочей. Давай так. На следующее чаепитие ты сам предложишь за и против проведения этого самого стендап.
– Согласен. Пока сам не сделаешь – толку ноль.
– Заяц, а чего ты такой, как будто кринку сметаны с полки увел? – вкрадчиво спросила Королева.
– Так уволили нас с Оруженосцем. С проекта стороннего. Подчистую уволили. – Заяц глотнул чая. – Тьфу ты. Как Митрич заговорил.
– Быстро вас что–то, – заметил Чеширский.
– Дык мы это… Черт. Вот привязался этот Кеша… – И Заяц перешел на нормальный говор. – Пришли мы на проект и начали тестирование с архитектурных ошибок. Ну, тут и началось… Общего хранилища классификаторов у них нет.
– MDM
– Да хоть черта в ступе! Нет и нет. Общего хранилища аккаунтов пользователей нет. И еще много чего нет. Оруженосец, расскажешь дальше?
– Ну, там дальше совсем интересно было. У них передача данных из филиалов чуть не по модему. Мегабит – это все-таки маловато, а передают скриншоты. И вместо нормальной шины данных используют синхронную передачу данных. С очевидной потерей данных.
Заяц продолжил.
– Программист конечно налажал, только это не его ошибка, а это симптом глобальнейшей проблемы. И даже добавление сервера для отложенной передачи, это не решение а костыль.
Проблема в том, что при проектировании системы забыли про среду. А она не гомогенная, а гетерогенная. А это совершенно другой подход к решению проблем. Да даже если гомогенная, то гомогенная с ограничениями.
Я чему, вот это корневая проблема, которая корневой дефект, который потянул за собой все и все последующие метания. Может систему вообще надо было строить на других принципах, а не прикручивать костыль сбоку. Но, тут надо подняться на уровень абстракций, а к этому приходится идти долго, и обычно ценой ошибок.
– Ну, и? – надавила Королева.
– Ну, мы это и озвучили. И нам на дверь указали. Да ладно, все равно команда стремная была. Не вписывались мы туда.
– И все-таки я не понимаю, – добавив в чай земляничного варенья произнес Оруженосец. – ну вот зачем, зачем ты меня просил их код читать? Я ж как программист слаб, и большую часть кода я просто не понимал?
Королева, Шляпник, Чеширский и Мартовский переглянулись.
– Есть такой критерий качества, как понятность кода. И для контроля этого показателя Павел предложил кодеревью младшими программистами за старшими.
– Зачем!? – воскликнул Оруженосец.
– На то, чтобы понять и исправить чужой код требуется умений больше, чем на его написание. Раза в два.
– Ну, это от многого зависит, – заявил Заяц.
– Эт–то точно, произнес Шляпник. – Когда Заяц код для встраиваемой системы писал и байт не хватало, то он там такое кружево выдал, что даже я с трудом разобрался. Так что иногда и раз в десять. А если код понятен одному единственному программисту, то его сложно назвать поддерживаемым.
– Ладно, – подвел итог Время, – зато теперь с этой командой гораздо легче общаться. А для вас всегда работа найдется.
Байка для оруженосца 24. Ответ единственно правильный
– Какая здесь лишняя фигура? – с этими словами Додо положил на стол листок с картинкой и пошел за кружкой.
– Ну-ка, ну-ка, – заинтересовался Заяц. – Армигер, что думаешь?
– Первая.
– Почему?
– При сдаче теории на право вождения, если не знаешь ответа, выбирай первый.
– Там работает другой принцип: «Выбирай вариант, где больше слов». И получается или первая, или четвертая. Площадь наибольшая, – ответил Додо.
– Вторая! Хода нет, ходи с бубей, – пропел Заяц. И пояснил: – Стандартный бриджевый порядок: трефа, бубна, черва, пика, без козыря.
С разных сторон посыпались предложения:
– Я тоже за вторую, но по другой причине. Рамки нет.
– Фигуры обладают четырьмя свойствами: форма, цвет, размер, наличие рамки. Для каждого из свойств есть одна фигура, отличающаяся от остальных – фигуры 2, 3, 4, 5. Поэтому лишняя здесь фигура 1 – больно «правильная».
– Тоже за первую.
– Третья, – вмешалась Соня, – сплеш–демедж наибольший.
– Третья. Единственный круг или, как вариант, – единственная фигура без углов.
– А мне больше нравится чистый цвет, – протянула Королева. – Вторая.
– Позвольте полюбопытствовать? – в кухне материализовался Чеширский Кот. – Эх, молодежь, молодежь. Забываете вы о людях. Человек с ослабленным зрением будет ориентироваться на цвет. Очевидно четвертая. А теперь главный вопрос: «Какой шанс на собеседовании угадать правильный ответ?» – И хитро подмигнул Оруженосцу.
– Получается одна пятая, двадцать процентов, – принял вызов Оруженосец. – Стоп, варианты неравноправны.
– Правильно, Дядя Федор, правильно. Знакомство с работами Байса явно пошло тебе на пользу. А теперь надо разбить ситуацию на классы эквивалентности.
– Не вижу, – подумав, честно признался Оруженосец. – На мой взгляд, тут нужно строить матрицу вероятностей и считать.
– Давай разобьем на два больших класса: «Р» и «Ч». Р – от «робот», ситуация, когда на работу принимают по числу правильных ответов. Такой экзамен можно легко запрограммировать, но и человек может задавать такие вопросы. Например, по книге…
– «Как сдвинуть гору Фудзи», – хором продекламировали присутствующие.
– Итак, вариант «Р1». Равноправные вероятности, 20%. Но этот вариант мы откинули. Вариант «Р2», с учетом весов. По-хорошему, нужно сделать репрезентативную выборку, но поскольку мы просто практикуемся, то воспользуемся уже полученными цифрами. Исходим из того, что у среднестатистической выборки кандидатов разброс такой же, как и у группы, по которой настраивали тесты. Заяц?
– Первая – три с половиной голоса, вторая – три голоса, третья – два голоса, четвертая – полтора, пятая-– ноль.
– Отнормируем для простоты расчета в натуральные веса, – предложил Шляпник, – семь, шесть, четыре, три, ноль. – И принялся рисовать.
– По диагонали – это шанс угадать… Суммируем, итого 110, делим на двадцать в квадрате, получается двадцать семь с половиной процентов. Шансы кандидата выросли.
– А если бы Чеширский отдал голос за первую фигуру, то шансы были бы одна третья.
– Но есть еще вариант «Р–3», – продолжил Чеширский.
– Это какой такой вариант? – подозрительно спросил Додо.
– Если кандидат раздобудет ответы, которые знает собеседующий. Тогда вероятность 98%.
– Украдет, – перевел на бескомпромиссный сленг Заяц.
– Необязательно украдет.
– ISTQB, – озарило Оруженосца.
– Типа того. Только обучение «правильным ответам» ISTQB – совершенно легальный бизнес, – вставила Королева
– В тренингах ISTQB нет ничего плохого, – заметил Заяц. – Он чем-то похож на обучение законников. Вся суть тренингов сводится к тому, что тебя учат видеть невозможные ответы.
– А как же правильные ответы? - озадаченно спросил Оруженосец.
– Есть ответ с наибольшей вероятностью, – ответил Заяц
– Но, но… – вмешался Додо, – есть ответы, которые железобетонны!
– Все так, мой друг, – улыбнулся Чеширский, – но только если нет очень маленькой звездочки.
– Это тема вечна, а время утекает. Помните о главном, – вмешалась Королева. – А самое главное не получить на выходе «китайскую комнату».
– А теперь класс «Ч».
– А разве там по-другому? – удивился Додо.
– Там по-другому. Там решение о приеме или отказе принято в первые 20 секунд. А остальные 59 минут 40 секунд – просто потерянное время. И абсолютно все равно, что вы ответите. Решение уже принято.
Повисла недоуменная тишина.
– Проводился такой эксперимент, – пояснил Чеширский, – два человека, подготовленных проводить интервью, собеседовали сотню добровольцев и делали запись. После чего видеозаписи редактировали, сократив их до 15-секундных клипов. Каждый из этих видеоклипов показывал только, как «кандидат» входит в комнату, обменивается рукопожатием с интервьюером, садится, - и на этом заканчивался. Когда другая группа людей, посмотрев «видеоклипы с рукопожатием», оценивала «кандидатов», их оценки сильно коррелировали с оценками подготовленных интервьюеров. Эксперимент описан в книге «How would you move mount Fuji», но, как обычно, перевели название так, чтобы книгу было невозможно найти. Теперь это «Найти умного».
После паузы Шляпник произнес:
– Получается, все эти тренинги, статьи и книги о проведении собеседований…
– Морочат людям головы, – предложила Королева.
– Сложный вопрос, – вздохнул Чеширский Кот, – но если мы готовы применять научный метод, то надо искать другие способы принимать на работу.
– А теперь рассмотрим практическую задачу на тестирование, – предложила Королева. – Здание имеет 10 этажей и подвал (парковка). Как вы проверите лифты, которые могут идти только на нечетный и второй этаж? Синичка? Как ты построишь тестовую модель?
– Ну… надо проверить все состояния.
– Все?
– Построить граф переходов и проверить все переходы.
– А следующим шагом идет полный паирвайз с тестированием одновременного вызова снаружи и отдачи команд из лифта, плюс множественное нажатие кнопок, попытка остановки на четвертом этаже и прочие ништяки, – пробормотал Оруженосец. – Что–то много тестов получается.
– А если параноить по полной, то нужно проверять работу и при перегрузке лифта, и в землетрясение, и в наводнении, и при нашествии покемонов/обезьян/зомби.
– И здесь важнейшим вопросом становится, когда остановиться. Чтобы не тратить драгоценное время, – сказала Королева. – Время – это то, что не стоит тратить понапрасну. Иначе Время очень сильно обидится. И кончится это очень плохо.
– И когда остановиться? – спросил Оруженосец.
– Полагаю, ответ на этот вопрос стоит поискать в работах величайшего специалиста по качеству двадцатого века, – ответил Чеширский. – Помнишь, кто это?
– Канер, Блэк, Майерс, – начал лихорадочно перечислять Оруженосец.
– Деминг. Очевидно Деминг! – воскликнул Шляпник и в восторге хлопнул себя по колену.
– Совершенно верно. – И жестом фокусника Кот извлек книгу с пожелтевшими страницами. – «Выход из кризиса» за авторством самого Деминга. 93 год издания, между прочим. Раритет. Так, где это… Ага, вот. Глава пятнадцатая. Тут приводятся примеры о том, как тестирование вело к разорению фирмы, поскольку было совершенно бессмысленным. Но главное, даны четкие математические выкладки, когда и как тестировать. Полное или выборочное тестирование. Или полный отказ от оного.
– Ну, с лифтами очевидно же, – фыркнула Королева.
– Что очевидно? – спросила Синичка.
– Представь себе современную ситуацию, – предложил Чеширский. – Это явно программируемые лифты. То есть современные. В современные кинотеатры фильмы никто не приносит. Их закачивают по сети. И если что-то не так, ну там соотношение сторон не такое, то никто в операторскую не пойдет. Позвонят в единый обслуживающий центр, и оттуда все поправят. С высокой вероятностью лифты программируются из единого центра обслуживания. Запрет на обслуживание ряда этажей – давно отработанная рутинная операция на пару минут. А вот послать тестировщика в командировку тестировать, это очень дорого. При том, что вероятность ошибки минимальна и исправляется ошибка по звонку, за те же пару минут.
– Тестировать в этих условиях – это обидеть Время. – Королева с наслаждением допила чай и поднялась. – Пойдемте проектировать тесты, которые надо проводить. Кстати. На собеседовании совершенно необязательно сообщать правильный ответ. Лучше сказать ответ, который знает собеседующий.
Байка для оруженосца 25. Карго-культ стендапа
Хорошее решение - результат опыта.
А опыт - результат плохих решений.
(с) Уолтер Ристон
Карго-культ - имитации каких-то действий без понимания их смысла. С нулевыми, а часто отрицательными последствиями.
Чеширский химичил за столом. По очереди открывал разные коробочки и кидал в разные заварочные чайники какие-то травки. Наконец залил водой.
– Зачем разные чайники? - лениво поинтересовался Заяц.
– Разные травки требуют разной температуры заваривания. Поэтому смесь зеленого и черного чая заварить нормально не получится. Для зеленого нужна температура пониже, иначе будет горчить. Вот и здесь травки разные.
На кухню ввалился Армигер.
– Не опоздал?
– Как раз вовремя. Будем пробовать новый рецепт.
– А где Додо? - спросил Оруженосец, оглядев кухню.
– В командировке. «Дружественная», - Заяц пальцами изобразил кавычки, - нам команда попросила разработчика.
Тем временем Чеширский аккуратно смешал заварки в одном чайнике и разлил по крохотным пиалкам.
– Пробуем, - решительно сказал Безумный Шляпник.
Команда синхронно подняла пиалки. Распробовав чай, Армигер неуверенно произнес:
– Кажется, хуже, чем вчера.
– Ты говоришь, как тестировщик, - нравоучительно сказал Шляпник, - продажник сказал бы «Вчера было лучше». А вообще, мне кажется, что это не ваш уровень, Маэстро.
– Согласен. Отстой получился, - согласился Заяц. - Хуже, чем, когда я для пробы замариновал мясо для шашлыка в газировке с лимоном и уксусом.
– А зачем делать чай по плохому рецепту, когда можно по-хорошему? - спросила Синичка.
– Повар, так же, как и ученый, и так же, как хороший менеджер, должен экспериментировать. К сожалению, при этом мы делаем ошибки примерно в 95 случаях из 100, - начал Чеширский. - Это очень, очень болезненно. Именно поэтому учёных так мало. Здесь несколько психологических проблем. Одна проблема в том, что люди боятся делать предположения и принимать решения. И вторая в том, что боятся признать свою ошибку. Кстати, ровно такие же проблемы с менеджерами. Очень многие менеджеры боятся принимать решения, боятся управлять задачами, боятся расставлять приоритеты.
Команда посмотрела на Королеву.
– Нет, с Королевой-то как раз все в порядке. Она точно не боится принимать решения и признавать ошибки.
– А что с признанием ошибок? - поинтересовался Оруженосец.
– Люди узнают о какой-то технике на конференции или из книги. Она кажется им хорошей, и они внедряют ее. Мучаются с ней полгода, год, два… На принятие решения о том, что эта техника конкретно им не подходит, у них не хватает духу. Так происходит с автоматизацией тестирования, со скрамом в целом и со stand-up митингами в частности.
– Разве автоматизация тестирования - это плохо? - спросил Оруженосец.
– Не бывает плохих приемов, бывает неправильное их использование или использование не вовремя. Автоматизацию тестирования, как правило, используют неправильно, - ответил Чеширский.
– Ты с темы-то не соскакивай, - вмешался Заяц, - у тебя задача была за Stand-Up разведать. Так что давай колись.
– Ну… - неуверенно начал Оруженосец, - в прошлый раз мы говорили, что присутствие на стендапе менеджера ломает всю малину. И я провел исследование, и, похоже, это предположение верно. А вот куда дальше жить - непонятно. Двинулся я от того, что на стендапе люди обмениваются информацией. Кто что сделал за прошлую неделю или за вчера. И кто что будет делать дальше.
– И зачем козе баян? - спросил Заяц.
– Вот это мне тоже непонятно, - Оруженосец кивнул. - Чтобы узнать, кто что сделал, достаточно открыть Tracker. Чтобы узнать, кто что будет делать, достаточно открыть Tracker.
– И, что характерно, - добавил Шляпник, - для того, чтобы узнать, что у кого-то какие-то проблемы, тоже достаточно открыть Tracker. А можно и не открывать, просто настраиваешь скрипт. Если у кого-то задача зависла более, чем на 2 дня, - делается рассылка.
– Получается, - подытожил Оруженосец, - что stand-up нужен, если команда не умеет пользоваться трекером. Но есть еще один аспект. На stand-up люди друг друга видят, общаются. То есть это какая-то психологическая поддержка. Ну и, может быть, какие-то идеи возникают.
– А в чём проблема-то? - спросил Шляпник. - Надо тебе немного поговорить - встал, подошел к коллеге. Если на две минуты, то прямо на месте поговорили. Если больше - отправились на кухню. Здесь, как и полагается в нормальных конторах, две стены, на которых можно писать маркерами. Надо тебе набросать какую-то схему, взял и набросал тут же, не отходя от кассы.
– Да, вот здесь у меня затык, - согласился Оруженосец. - Не понимаю я тогда, зачем встречаться на этом самом стендапе.
– А это нужно, - ответил Чеширский, - если в офисе зверствует офисная полиция. Которая рассадила участников одного проекта по разным кабинетам. Программистов к программистам. Тестировщиков к тестировщикам. Менеджеров выделила в Project Management Office. И отдельно усадила аналитиков. В другой бизнес-центр. На другой ветке метро.
– Разве программисты не должны сидеть с программистами?
– Нет. Участникам проектной команды желательно находиться рядом. Желательно в одном кабинете. Ну, если команда не слишком большая. Обычная боевая команда, до взвода включительно.
– Итак, подытожим, - резюмировал Оруженосец. - Один из вариантов, когда Stand-Up будет уместен - это когда на нём отсутствует выделенный руководитель, команда не умеет пользоваться трекером, офисная полиция ухитрилась рассадить их так, что они больше в течение дня не встречаются.
– Как вариант - это асоциальные типы, и их нужно заставлять разговаривать друг с другом, как в детском саду, - встрепенулась Соня, - и, исходя из этого, нашей команде стендап точно не нужен.
– Так же это может быть просаженная команда, у которой горизонт планирования - один день, - добавил вариант Чеширский. - При недостатке мыслетоплива получается несамостоятельная команда, которая действовать ещё может, но только скопом, при чувстве локтя. И получается не менеджер, а воспитатель детсада, фактически. И на обед их тоже надо будет водить… как вам такие ужасы? :) Т.е. с утра менеджер смотрит в каком состоянии оно пришло и рассаживает всех по задачам. В обед забирает, потом снова рассаживает. А со стороны это скрам-скрамом )))
– Так бывает?!
– Еще как бывает. С натуры списано. «Утомленные эджайлом» совершенно типичная ситуация. И получатся, что многие берут идею стендапа, не понимая смысла, и много лет маршируют с деревянными ружьями по модели аэродрома, в надежде, что прилетят железные птицы и привезут еду. Не в силах понять, что эта техника конкретно у них не нужна.
– И еще. К стендапу нужно готовиться и четко выдерживать время доклада в пределах одной-двух минут, - добавила Королева. - Потому как часовые стендапы каждый день это одна восьмая рабочего времени. Потерянного времени.
– Отличный анализ, - сказал Чеширский. - А теперь, коллеги, по коням. А завтра попробуем новый рецепт чая. Наверное, опять ошибусь. Но пробовать надо. Если не ошибаешься, то не экспериментируешь. А если не экспериментируешь, то тормозишь в развитии. Главное не поддаваться карго-культу.
Байка для оруженосца 26. Думай, как тестировщик
– Привет всем. Как праздники? Как походы? – c ходу начал Заяц.
– У меня все норм, – тут же откликнулась Соня. – Прошлись на байдарках. Сложность выбрали поменьше, зато позагорали, покупались. Рыбалка, опять же. В стрейкбол погоняли.
– А ты че кислый? – Заяц хлопнул Оруженосца по плечу.
– Аллергия на пыльцу, – проворчал тот, – ладно хоть в офисе остался. Подменил ребят на первой линии на всякий случай. Звонков было мало, сидел штудировал Вигерса, Коберна и Лефингуена. А еще Шухарта, Деминга и Голдратта. Зачем мне это? Я ж тестировщик?
– Будешь аналитиком, – ответил Шляпник и налил очередную порцию зеленого чая. – Отличный дополняющий навык.
– Не дополняющий, а совершенно необходимый, – вмешалась Королева, – И тебе, и команде. И даже не знаю, кому больше.
– Не совсем понял…
– По поводу команды – помнишь развод Зайца на «сбалансированную производственную цепочку»?
– Да, зрелище было еще то. Квази тогда просто позеленел.
– Каждый дополнительный рабочий центр ухудшает производство. Универсалы лучше узких специалистов.
– Но если человек специализируется в какой-то одной области, то он более производителен? А, стоп. Задачка про заборостроителей. Начинаю понимать.
– И да, и нет, – продолжила Королева. – Да – потому что про задачку ты правильно вспомнил, а нет – потому что узкая специализация ограничивает сотрудника в развитии. Чтобы стать очень хорошим тестировщиком, нужны навыки в смежных специальностях. Самое логичное – системный и бизнес анализ.
– Угу, – вышла из полудремы Соня, – а главное, нельзя стать аналитиком, не став хорошим тестировщиком.
– Упс, – пробормотала ошарашенная Синичка.
– Смотрите, коллеги. То, что сказала Соня, – гипотеза. А теперь давайте из гипотезы Пуанкере сделаем теорему Перельмана, – предложил Чеширский. – Начинай, Армигер. Каковы основные навыки тестировщика?
– Знание Jira. Не, это ерунда. За два часа элементарно учится. Может, Селениум?
– Нет. Главные навыки: умение видеть ошибки, умение описывать ошибки и делать предположения о том, где водятся ошибки. Последний навык еще называют владением техниками тестдизайна. Например, «Тестирование граничных условий».
– А, пожалуй, соглашусь. – Оруженосец энергично кивнул и потянулся за очередной плюшкой.
– Может ли аналитик быть хорошим, если он не в состоянии определить, ошибка это или нет?
– Не может, – синхронно ответили Синичка и Армигер.
– А если он не может сделать описание ошибки?
– Такой вообще не нужен, – откликнулся Заяц, – я таких видел. Их ТЗ без слез читать было нельзя. Читал и рыдал. Рыдал и читал.
– А если инженер не владеет навыками тестдизайна?
– Не-не-не, – испугался Шляпник. – Спасибо. Не надо нам таких ТЗ. Лучше я сам напишу. Или Соню попрошу, если Королева занята.
– Это про навыки. Но есть еще более важный аспект, – продолжила Королева. – Чтобы написать хорошее ТЗ, нужно уметь сознательно переключать контексты мышления. Их еще называют аспектами мышления, а Щедровицкий называл их досками мышления. Надеюсь, про «Куб Неккера» все помнят. Когда я пишу план проекта, я работаю в контексте составления плана. Когда пишу график проекта – в контексте составления графика. Генерация идей и критика идей – разные контексты. Это одна из причин, почему на начальной стадии мозгового штурма запрещена критика. Эх. Еще бы кто это объяснял…
– Но вы-то, Королева, можете мыслить одновременно на нескольких досках, – вкрадчиво мурлыкнул Чеширский.
Королева только отмахнулась от комплимента:
– Могу, но не хочу. Вернемся к теме. Чтобы сделать хорошее ТЗ, нужно научиться переключать контексты мышления. Тестировщик учится работать в режиме критики. Аналитик – в режиме генерации. Оба навыка жизненно необходимы и для одной, и для другой специальности. Поэтому аналитик обязательно должен быть тестировщиком, а тестировщику необходимо быть аналитиком. – Королева взяла паузу и задумчиво добавила: – Наверное. А может, это и не так.
– Королева совершенно права. Это может быть так, может быть не так, а может быть одновременно и так, и так. А может быть одновременно не так, – подхватил Чеширский. – Мыслесхема у нас получилась отличной. Но этого недостаточно. Нужен подтверждающий эксперимент.
– Игра 2–4–6! – осенило Шляпника. – Стандартная аналитическая задача, которую лучше решают тестировщики, чем аналитики. Хоть это и выглядит очень странным.
– Для решения этой игры нужен контекст критики. И знание техник тестдизайна.
– Угу. – протянула Соня. – Классический тестдизайн, когда мы меняем только один параметр. Классика из классик. Неужели аналитики так не делают?
– Так вообще мало кто делает. Вопрос в статистике. Инженеры какой специальности делают это чаще. И вроде как лидерство за теми, кто проходил обучение на тестировщика.
– Для хорошего аналитика очень важно уметь думать разными способами. Возьмем, к примеру, опыт Второй Мировой. Сломаем шаблон. Возьмем примеры из совершенно другой области. Во время бомбежек немецких заводов погибало довольно много самолетов союзников. Было требование уменьшить потери. Эксперты изучили пробоины и предложили сделать дополнительное бронирование там, куда чаще попадают. Но нашелся человек, который мог думать по-другому. Он сказал, что если с пробоинами в этих местах самолеты возвращаются, то эти пробоины не слишком опасны. Гораздо опасней попадания в другие места. И вот их-то и надо дополнительно бронировать. Этот человек думал, как тестировщик. Или, если угодно, тестировщики должны научиться думать, как он.
– Ошибка выжившего, – проворчал Шляпник.
– Да, – внезапно вмешался Время. До этого момента казалось, что его нет в комнате. – Но была предложена и другая мера. Сомкнуть строй.
Оруженосец удивленно посмотрел на Время:
– Но ведь так же все и летали.
– Не совсем так, не настолько плотным. Чем плотнее строй, тем больше гибнет от «дружественного огня». Это очень тяжело принимается. Это другой уровень. Мы должны убивать своих, что бы враги не могли убить больше. Очень плотный строй и централизованное управление огнем приводит к уменьшению потерь от противника, но одновременно к увеличению потерь от своих.
В кухне повисла тишина.
Время оглядел всех.
– Я вам предлагаю подумать вот над чем, – и Время указала на высокую стройную женщину, сидящую в углу и читающую распечатки ГОСТ-ов.
– Кудряшка, – поморщилась Королева.
– Кто это? – спросил Оруженосец.
– Моя сестра, Тоже Королева. Процессник.
– Так у нас же все прекрасно, – удивился Оруженосец. –– Есть джира и конфлюенс. Мы прекрасно находим и исправляем дефекты.
– Да все верно – согласился Время. – Но на своем уровне. А если вам надо подняться на несколько уровней выше? Сможет команда универсалов это сделать – или только команда узких профессионалов?
Второй раз воцарилась тишина; все задумались.
Королева посмотрела на прическу сестры и вздохнула:
– Моя сестра катализатор этого. Она либо усложняет, либо упрощает систему. По задаче, конечно. Она убивает одни функции в системе ради создания других и строит связи. –– Королева посмотрела на Армигера. – Не в коде, конечно. Например, при каком-то изменении процесса разработки перестает существовать функция программирования.
– Генетический код, – поежился Шляпник.
– Да, система сама себя создает, нам надо лишь убедиться, что потомок работает «правильно», и в противном случае сделать выбраковку.
Жестом заядлого фокусника Чеширский достал колоду карт и разложил по столу.
– Ой, какая прелесть, – восхитилась Соня и начала цитировать фильм «Трасса 60″:
– Черные червы, красные пики, но это же обман?
– Опыт приучил вас думать, что все червы красные, а пики черные… Мы видим то, что ожидаем увидеть, а необязательно правду. Дети, не игравшие в карты, легко проходят этот тест.
– Хороший фокус. Но игр с черными червами и красными пиками нет.
– А откуда вы знаете?
– Именно. Думай, как тестировщик. Вне зависимости от того, что говорит программист, и вне зависимости от того, что написано в ТЗ, тестировщик должен быть настроен скептически. Вне зависимости от того, что говорит заказчик, аналитик должен быть настроен скептически. Аналитик должен научиться думать, как тестировщик.
Заяц с завистью посмотрел на колоду:
– Где взял?
– В «Мосигре». Время уже заказал 42 колоды. Так что всем хватит. Сказал, что эти карты отлично выбивают из зоны интеллекта в зону разума.
– Вернемся к далекому будущему. Как проверять такие системы?
– Да точно так же, как и сейчас, для нас же ничего не меняется.
– Меняется хотя бы то, что больше нет исходного кода. Меняется весь процесс.
– Возьми паузу, подумай, – предложила Королева Оруженосцу, – учись смотреть на систему под другим углом. Думай, как тестировщик, и станешь хорошим аналитиком.
Байка для оруженосца 27. Производственная практика
Компания собралась чаевничать на балконе. Балкон имел внушительную площадь и был прикрыт сверху от дождя и снега и застеклен. На почетном месте был водружен самовар, в котором сейчас весело потрескивала лучина. Нормальная вытяжка обеспечивала отсутствие дыма.
Лицо Зайца светилось не хуже самовара. Он гордо прошел к столу и положил, нет водрузил на столешницу кожаный чемодан.
– Не понимаю, – произнес Шляпник. – Рюкзак – привычно. Портфель, понимаю. Даже дипломат, хотя они и вышли из моды. Но чемодан?
– Именно, что не понимаешь. Я просто не удержался. Случайно проходил мимо, а там такое! – И заяц отщелкнул крышку. В чемодане уютно устроился набор для чая. 12 граненых стаканов, серебряные подстаканники, серебряные ложки, сахарница и прочие полезные для чаепития приборы.
– Красиво, – отметил Чеширский, – под такое дело, да под самовар экзотические чаи будут не очень. Ограничимся простеньким краснодарским чаем, и медом. Башкирским липняком.
Шляпник хмыкнул. Простенький чай от Чеширского? Ну-ну.
– А ты что делаешь? – Заяц переместился к Оруженосцу. – А ну-ка, ну-ка. Почтовая рассылка? Неправильно ты дядя Федор бутерброд ешь.
– Почему неправильно?
– Есть время для писем и есть время для чая. И есть время для Времени. Не шути со временем, не надо. – произнес Шляпник.
– По-хорошему, на совещаниях не только мессенджеры надо отключать, но и телефоны отбирать. Иначе получается не совещание, а черт знает что. – добавил Заяц. – Это первая ошибка. Во время чаебрейка ты пытаешься работать. Вторая – ты делаешь внешнюю массовую рассылку и ставишь адресатов в поле "Кому", а надо в скрытую копию. А поле "Кому" ставишь себя. Будет время – изучи статью "Всем привет в этом чате" от Мосигры. И третья ошибка. Адреса получателей нужно писать только после того, как письмо написано и вычитано.
– Вот сейчас не понял.
– Рефлексы, амиго, рефлексы. Мы очень активно используем мессенджеры. И в них Ctrl+Enter – переход на другую строку, а Enter – отправка. А в почтовике наоборот. Это можно перенастроить, но кто ж этим заморачивается? И в итоге часто отправляется полписьма. Выглядит некрасиво. Это как с фиксацией багрепорта. Сначала описание и все атрибуты и в самом конце заголовок. Для письма тоже самое. Сначала письмо, потом тема, потом адреса получателей. – Чеширский как всегда смотрел в корень проблем.
– Что хоть за рассылка? – Поинтересовался Шляпник.
– Студентам. Куда прийти, какое расписание, что с собой взять. Их к нам из института на практику отправляют. Не понимаю, зачем они нам?
– Не скажи, не скажи. Говорят, что это система физтеха, но на самом деле в СССР это было очень широко распространено. Школьники и студенты ходили на заводы и немного там работали. Заранее смотрели, как и чего.
– Ага, а некоторые понюхав завода начинали нормально учиться, чтобы только туда не попасть.
– Но нам то они зачем? Мы на них времени тратить будем больше, чем пользы от них получим.
– И это неверно. Всегда есть работа, которую может делать новичок. Важно только ее найти. Это раз. Второе. Как мы говорили ранее, резюме и собеседование бесполезны. А производственная практика позволяет присмотреть перспективных кандидатов. И не только по техническим навыкам, но и по навыкам коммуникаций. И самое главное. Они пройдут обучение у нас. Не только навыкам кодирования.
– Точно, – воскликнул Заяц. – А то приходят такие звезданутые на работу. "Да у меня три проекта на гитхабе". Только вот наши проекты не в одиночку делаются, а группой. И начинается. Хорошо если о такой бестолковой вещи, как git flow слышал. Но об остальных способах совсем никак. Правила работы с тикетами? Не, я код пишу, я разработчик! Тестирование документации? Ща. Жизнь же все равно богаче. Работы Дейта и Кодда? Не, не видел. А потом то, что эти кодеры накодили разгребать вилами приходится. Учиться программировать без ментора… Можно еще айкидо по фильмам изучать.
– И кроме того, нам за проведение практики чуть-чуть платят. Ведь это же здорово, не только отобрать и обучить хороших кандидатов, но и деньги за это получить. Ну что, заканчиваем. Там я слышал Королеве новый проект предложили. Посмотрим, что и как.
Спасибо за чтение
Вернуться к книге
