Архив за Июнь, 2016

Байка для оруженосца- 11. Ложная слепота и задача трех тел.

Вторник, Июнь 28th, 2016

grid_3.png
В кухне Шляпник предавался воспоминаниям и травил безумные истории.

- Разрабатывала как-то одна фирма мегасофт. И, как полагается мегасофту, багов там тоже было как термитов в термитнике. Заказчики выли в голос. В какой-то момент руководство узнало о такой профессии, как тестировщик. Круто. Организовали отдел, наняли кучу народа. И процесс пошел. Все как надо: выделенные тестовые стенды, трекер, чеклисты. Да-да процесс поставили как по-взрослому. С маджонгом и гейшами. Но почему-то заказчики выть не переставали. Примерно через полгода руководство робко поинтересовалось: а в чем собственно дело? Слова были немного другие, но смысл такой. И тут выяснилось, что забыли поставить процесс исправления ошибок. Трекер был полон багов в состоянии “New”.

В комнате раздались смешки, но быстро стихли. История выходила совсем невеселая.

(more…)

Байка для оруженосца-10. Военные маневры.

Суббота, Июнь 18th, 2016

Армигер маялся в кухне. Он пришел слишком рано, но ему было невмоготу. Наконец пришли Шляпник и Заяц. Пришли так же неожиданно рано.
— У тебя вид, как будто собираешься на первое свидание и не знаешь, какой букет выбрать.
— Примерно так. Мне завтра программистов собеседовать. А я ж тестировщик.
Шляпник вздохнул, открыл окно, сорвал с растущей рядом липы полною горсть липового цвета и занялся завариванием чая.
— Не умеешь проводить собеседования — не проводи их. У тебя что, времени как у дурака махорки? — Заяц, как всегда, был в своем репертуаре.
— Кстати, ты в курсе, что корреляция между умением проходить интервью и умением работать отсутствует? — поддержал Мартовского Безумный коллега.
— Э-э-э…
— Ладно. Завариваем чай и ждем. Не наливаем. Просто ждем.

Через пару минут дверь отворилась, и вошло около дюжины незнакомых Оруженосцу людей во главе с Соней.
— Привет, Храбрый Мыш. На рекорд идешь? Какой ты раз? Пятый? — спросил Шляпник у одного из вошедших.
— Пятый, пятый. Пока до минус двенадцати не дойду — не успокоюсь.
Рипичип водрузил в центр стола огромную коробку и открыл ее. По кухне разнесся восхитительный запах свежеиспеченных плюшек с маком.
— Угощайтесь.
— Так, коллеги. Берем кружки, берем плюшки, пьем чай, — скомандовала Соня, — а Заяц тем временем все объяснит.
Когда все расселись за огромным столом и сделали по глотку, Заяц приступил к вводной части.
— Первое. Ваши резюме мы не читали. В нашей команде предпочитают добротную фантастику. Кэрролла, например. И да, у нас есть отдел кадрового учета, но нет отдела персонала. Так что ваши резюме вообще никто не читал.
Кто-то за столом закашлялся.
— Как нет отдела персонала?!
Заяц задумался.
— Как-то так. Надо у Чеширского спросить. Тебе надо, ты и спросишь. Продолжим. Собеседования у нас тоже нет. Ибо нефиг.
— Кстати, наличие и собеседования, и испытательного срока противоречит Трудовому Кодексу, — вставил реплику Шляпник.
— Для простоты мы просто берем на работу по краткосрочному контракту на две недели. По итогам двух недель делаем предложение. Или не делаем. Потом идет стандартное трудоустройство с трудовой и прочим. Иногда испытательный срок сокращается до недели.
— А как же три месяца?
— Зачем? — удивился Заяц. Если менеджер за две недели ничего не понял…
— То эти менеджеры работают в других командах, — прервал его Шляпник, — в отличных, замечательных командах. Но других. Не у Королевы.

— О чем это я? Ах, да. Но мы понимаем, что прийти сразу на две недели не для всех удобно. Поэтому мы регулярно проводим «Военные маневры». Никаких задач про люки и мух. Никаких инвертирований списка и сортировок.
— Понимаете, нам с Зайцем за последнею дюжину лет ни разу не приходилось писать сортировку. В реальных проектах.
— Точно. На этой работе вам в основном придется читать и править чужой код. Поэтому если вы умеете инвертировать список, но не способны читать чужой код, вам лучше попробовать свои силы в другой команде.
— Отличной, замечательной команде. Но другой.

— Несколько лет назад мы сохранили копию одного проекта. Все как полагается. Репозиторий, трекер, вики и прочая, и прочая.
— А репозиторий какой?
— Ты текст вакансии читал? Там все написано. Заметим, мы не требуем знания и опыта работы с этими средствами коллективной работы. Мы говорим, что в проекте придется работать с ними. Это не требования, как у некоторых, — и Заяц скосил глаз на соседний корпус. — Не требования, а условия работы. Так вот, на основании этого реального проекта у вас по четыре задачи трех разных типов. Все задачи делать не нужно, делайте шесть. Но нужно сделать минимум по одной задаче каждого типа. Исправить ошибку, сделать рефакторинг чужого кода и реализовать небольшую новую фичу. Рабочие места у вас оборудованы, но интернета нет. Телефон в бункере не ловит. Сделали задачи, залили в транк — свободны. Вечером пришлем ваш результат. На основании этого результата мы не принимаем. Эта оценка — ваш ориентир, на что вы можете рассчитывать. Мы берем и ведущих, и обычных, и начинающих. Стажеров тоже берем. Но мы рассчитываем, что ведущий программист наберет не более полудюжины минусов. И найти ведущего — большая редкость. Сделанная вами работа проходит юнит тесты, ревью кода. А потом начинается самое страшное. Ваш код начинают проверять тестировщики. И это самая точная оценка качества вашего кода.
— Вопросы есть? — скомандовала Соня. — Если нет, хватаем кружки, хватаем плюшки, идем в бункер.
Группу отправляющихся в бункер возглавила Соня, а в арьергарде пристроился Заяц.

— А ты тормозни, — придержал Оруженосца Мартовский. — В бункер успеешь.
Когда все вышли, Шляпник продолжил:
— Тебе, наверное, интересно, как идет оценка?
Оруженосец кивнул и налил новую чашку чая.
— Идеальная работа оценивается в ноль баллов. Это ровно шесть задач, с выдержанным стилем кодирования, прошедшие не только юнит тесты, но и тесты Сони. Такой результат встречается исключительно редко. Если точнее — встретился один раз за последние три года. Соня нашла, правда, одну ошибку, но сама признала, что для равновесия по Паретто это неизбежность.
— А кто это?
— К сожалению, он к нам не пошел. Живет в другом городе, а к нам просто зарулил на огонек. Продолжим. За каждый косяк идет от одного до дюжины минусов. Сделал меньше шести задач — минусы. Сделал больше — минусы. Вышел за час — минус. Не смог сделать по одной задаче каждого типа — минусы. Пренебрег кодестайлом — минусы. Использовал неправильную венгерскую нотацию — минус. Мы рассчитываем, что ведущий программист знает разницу между правильной и неправильной венгерской нотацией. Завалил юнит тесты — много минусов. Ошибку нашла Соня — меньше минусов. Не запустил юнит тесты после сборки — сразу дюжина минусов. Принципиально не уходит в фичебранч… За это надо бить ногами, но мы просто минусуем. При коммите не указал номер задачи из трекера — минусы. Не перевел задачу в «Open» при бранче — минус. Не перевел при мерже в транк — полная обойма из минусомета. Не оставил комментарий — ладно, есть номер задачи. Оставил бессмысленный комментарий — четыре минуса. За каждый бессмысленный комментарий. И т.д. Вот полный список.
И Шляпник протянул брошюру.
— Большая часть проверок автоматизирована.
— А если минусов больше шести, то не берем на работу?
— Почему не берем? Берем. Еще как берем. И даже если минусов больше сотни, тоже берем. И даже при полном бите минусов тоже берем. Просто будет не ведущий. Но, по-любому, это решается после двухнедельного испытательного срока.
— А почему Храброго Мыша не взяли?
— Мы бы его взяли, да он директор одной из софтверных компаний. К нам ходит из любви к искусству. Как сам говорит, что если бы платил за каждый сеанс по штуке баксов — его фирма все равно была бы в огромном плюсе. И он с удовольствием берет тех, кто к нам не пошел, но показал высокий результат. Набрал не более 128 минусов.

Помолчав, Шляпник добавил:
— У него сейчас великолепный результат. За полгода и четыре сеанса он поднял свой уровень очень сильно. Ну все, тронулись. Смени Зайца в бункере.

——————-

[1] Рипичип, он же Храбрый Мыш - герой романа “Покоритель Зари, или Плавание на край света” из цикла “Хроники Нарнии”

Байка для оруженосца - 9. Чтобы больше сделать, нужно меньше делать.

Понедельник, Июнь 6th, 2016

Оруженосец шел в переговорку, как вдруг за дверью кухни услышал знакомые голоса
- А я тебе говорю, Load! - горячился Заяц.
- Сам знаю, что, Load! Но тут еще куча букв.

Армигер автоматически свернул в знакомую дверь. В конце концов, до совещания целых 20 минут, чашка отличного чая не повредит недавно назначенному руководителю проекта, и нужно понять, почему Заяц с Шляпником разгадывают его кроссворд в неурочное время. Сейчас самое начало рабочего дня, и до положенного времени чаепития еще очень далеко. А к Времени и Заяц, и Шляпник относились очень трепетно. Один раз они уже “пошутили”. И Оруженосец решительно толкнул дверь. На кухне собрались все программисты, и только программисты.
(more…)