Девять человеко-лет за одни выходные
Первый коммит появился в субботу, 24 октября, в 10:22. К вечеру воскресенья коммитов было 230, а с ними 118 тысяч строк кода и около 2700 тестов. Писали двадцать разработчиков из пяти компаний, и ни один из них не человек.
Кто ими руководит? Тоже агент. Координатор раздаёт задачи и следит за сменами, а сам почти не пишет код. Человек в команде один – владелец продукта. Он решает, что делать, и принимает сделанное.
А если бы это были люди? Тогда вышла бы контора, над которой не заходит солнце (города, конечно, условные – каждому подобран тот, где его смена совпадает с обычным рабочим днём).
Утренняя смена в Пекине выходит, когда мы ложимся спать, и сдаёт работу к нашему завтраку. Начинали здесь трое основателей – заложили основу в первый день и к вечеру ушли на другой проект. Сменившие их трое разработчиков написали четверть ядра и почти все ночные ревью. Вот только связь у них в офисе рвётся посреди работы. А однажды смена всю ночь просидела с вопросом «можно закоммитить?» – начальник ушёл, экран заблокировался, и ответить было некому…
Дневной офис в Цюрихе – восемь младших разработчиков, самые быстрые в конторе. За первый день они сделали несколько крупных подсистем, а всего написали больше трети ядра. Один из них под вечер запустил долгий прогон, сообщил «жду, пока закончится прогон» и ушёл домой. Прогон доработал без него. Там же сидит главный архитектор, дорогой и основательный. Двадцать минут он читал чужой код, прежде чем тронуть хоть строчку, потом внёс девять правок, и все по делу.
Ночной боец из Пало-Альто обедает, когда у нас полночь. За одну ночь он закрыл четырнадцать задач – подбирает брошенное и доделывает за другими.
Фрилансер на почасовой оплате – единственный, кто делает интерфейс. Работает короткими рывками, а потом на четыре часа пропадает. На этой неделе заказчик бесплатно продлил ему часы.
В Лондоне живёт узкий специалист, который приходит, только когда позовут. В субботу за один вечер он с нуля написал самую сложную часть продукта, в воскресенье за полчаса закрыл по ней ещё несколько задач и снова ушёл по своим делам.
И есть дежурный релиз-инженер с пейджером. Будят его только конфликты слияния.
Созвонов ноль. Ни одной планёрки, ни одного мессенджера – вся команда общается через один файл задач, где у каждой строки стоит имя исполнителя. Расписание здесь задаёт не солнце, а оплаченные часы. Кончились они у кого-то – его задачу вместе с недописанным кодом забирает следующий. Кстати, свой код тут никто не проверяет, только чужой. Пекин читает Пало-Альто, Цюрих читает фрилансера, Пало-Альто читает Цюрих, и перекрёстные ревью уже нашли десятки настоящих ошибок.
Без накладок не обошлось. Одну задачу сделали двое: её переназначили, а прежний исполнитель так об этом и не узнал. У одной из контор полдня рвалась связь. А первую версию владелец продукта назвал «хорошим прототипом» – и был прав. Функции работали, а продукта вокруг них ещё не было. В тот же день его замечания стали пакетом задач для фрилансера, и к вечеру больше половины было закрыто.
Сколько это стоило бы людям? По грубой оценке, девять-десять человеко-лет – десяток специалистов на год.
Закону Брукса полвека. В 1975 году Фредерик Брукс, руководивший в IBM разработкой OS/360, выпустил «Мифический человеко-месяц» и вывел правило: если добавить людей в опаздывающий проект, он опоздает ещё сильнее. Новичков надо учить, работу без остатка не разделишь, а главное – чем больше людей, тем больше времени уходит на то, чтобы договориться.
Здесь договариваться было не с кем. Каждый говорит только со списком задач, и сколько людей ни добавь, разговор от этого длиннее не становится. Учить тоже никого не пришлось – архитектору хватило двадцати минут, чтобы разобраться самому. Так что же, Брукс устарел?
Нет. Брукс прав до сих пор, просто узкое место переехало. Писать, проверять и собирать код теперь можно хоть в сорок рук. Принимать – нет. Решить, что делать, посмотреть на сделанное и сказать «хороший прототип» может только тот, кому этот продукт нужен, а он в конторе один.
Код пишут смены. А решать, принимать и отвечать – по-прежнему человеку. Надолго ли?
- Frederick P. Brooks, Jr. «The Mythical Man-Month: Essays on Software Engineering», юбилейное издание 1995 года, первое вышло в 1975-м: https://www.amazon.com/dp/0201835959
- «Мифический человеко-месяц» в Википедии – об идеях книги и её русских изданиях: https://ru.wikipedia.org/wiki/Мифический_человеко-месяц
- Русский перевод, «Питер»: https://www.litres.ru/book/frederik-bruks/mificheskiy-cheloveko-mesyac-ili-kak-sozdautsya-programmnye-58154399/
- Как считали человеко-годы: около 118 тысяч строк делим на 15 тысяч строк готового кода в год на разработчика, выходит около восьми лет, плюс год на спецификацию, документацию и ревью и 15–20% на управление.