Proof of shave
Раз пошло такое дело и заговорили о бритвах, давайте я расскажу историю, почему же программисты делают именно такие предметы личной гигиены.
Начинается всё со здравой мысли: а давайте сделаем новую бритву! ТЗ простое: удобная ручка, два лезвия с расстоянием между ними N миллиметров и относительным сдвигом K, срок жизни — пятьдесят тысяч срезанных волосков, прилагаемое усилие — до 100 ньютонов. Реализуемая функциональность: побрить.
И вот одинокий, но гордый инженер за пару дней создаёт proof of concept. Бритва выходит неказистая, ей ещё можно порезаться, она плохо бреет дряблые щёки, но ей уже вполне реально побриться.
И тут приходят они — люди, которые знают, чего хочет заказчик. И говорят они странные слова. Заказчик бреется утром, а утром ни у кого ни на что не хватает времени. Давайте прикрутим к бритве телевизор, чтобы заказчик, пока бреется, мог посмотреть новости. Поскольку заказчик постоянно крутит бритву, к системе нужно прикрутить гироскоп и обеспечить поворот экрана по трём осям, чтобы он постоянно был горизонтален.
Одинокий, но гордый инженер тяжело вздыхает и сообщает, что в телевизорах он разбирается очень слабо, а в системах пространственного позиционирования вообще ни в зуб ногой. Поэтому ему придают в помощь телемастера и специалиста по этим самым системам, а чтобы их согласовывать — руководителя проекта.
Следующий месяц команда из четырёх человек старательно клепает новую систему. Телеэкран оказывается нелёгким, система моторчиков тоже весит немало, гироскоп тяжелый по определению, но его удаётся заменить цифровым акселерометром. Наконец, заказчику демонстрируется прототип. Пока заказчик водит прототипом по выбритым с утра щекам, телеэкран висит у него перед глазами. В итоге заказчик ухитряется порезаться, и в список требований добавляется система позиционирования бритвы на лице.
К этому моменту сама способность побрить уже в глубоком загоне. Инженер, проектировавший бритву, на 80% занят в другом проекте, и про этот вспоминает, как про страшный сон. К бритве прикручивается лазерный сканер поверхности и система предупреждения о недопустимых углах наклона. Заказчик в целом одобряет, но вносит предложение, раз уж в бритве есть лазер, добавить возможность использовать его как лазерную указку при проведении презентаций.
Ручка, рассчитанная на 10 килограммов, уже не справляется, и её перепроектирование поручают телемастеру. Телемастер ваяет новую ручку из дерева. Тестировщики находят в ручке десять багов — мест, где она всё равно ломается. Баги назначаются на специалиста по пространственным системам, и тот укрепляет ручку фрезерованным металлом. В одном месте ручка всё равно продолжает ломаться, но время поджимает, к тому же есть workaround: если место поломки прилепить на жвачку и замотать изолентой, ручка кое-как работает, так что этот баг переносится на следующий релиз.
В этот момент выясняется, что побрить верхнюю губу этой бритвой невозможно: телевизор мешает. Чтобы этого не происходило, нужно временно перевести телевизор в режим огибания носа, и эта процедура описывается в инструкции по эксплуатации. После всех нововведений лазерную систему нужно калибровать перед каждым применением, для чего нужно ей указать на дальнюю стену и поводить по ней лучом, чтобы нивелировать погрешности.
Новая бритва стоит, как небольшой паровозик, среди её функциональности — будильник, радиоприёмник, женский режим, пин-код для защиты от детей, фронтальная камера для съёмки свежеобритого себя и возможность связываться с домашним компьютером через Bluetooth. Срок службы лезвий прежний, они тупятся за неделю.
А в это время уже в другой конторе одинокий, но гордый инженер за пару дней создаёт proof of concept простого, дешёвого устройства, которым можно бриться. Пожелаем ему удачи.