Это саммари – сокращенная версия книги Фредерика Брукса «Мифический человеко-месяц, или Как создаются программные системы». Только самые ценные мысли, идеи, кейсы, примеры.В 1960-е IBM была ведущим в мире разработчиком программного обеспечения, ее проект IBM System/360 – ведущим проектом своего времени, а Фредерик Брукс – отцом этого проекта. Как и все менеджеры, Брукс сначала хотел ускорить проект, пригласив к участию в нем больше сотрудников. Как и все менеджеры, он вскоре понял, что этот прием не работает. Что Брукс сделал не как все, так это не повторил собственных ошибок – в результате IBM System/360 вышел в свет, а человечество познакомилось с первыми универсальными компьютерами. Совместимые с System/360 компьютеры IBM System Z выпускаются до сих пор – абсолютный рекорд совместимости. Что пошло не так в далекие 1960-е, как Брукс это исправил и почему его уроки актуальны через десятки лет, в совсем другую компьютерную эпоху?
Менеджмент / Финансы и бизнес18+Smart Reading
Ключевые идеи книги: Мифический человеко-месяц, или Как создаются программные системы. Фредерик Брукс
Мифический человеко-месяц, или Как создаются программные системы
Автор:
Frederick P. Brooks
Оригинальное название:
The Mythical Man-Month: Essays on Software Engineering
www.smartreading.ru
Из чего состоит сложность
«Мифический человеко-месяц» был написан тогда, когда человечество и не мечтало о персональном компьютере в каждом доме. Книга приблизила эту возможность. Из 1960–1970-х неразличимы айфоны и беспроводная связь, однако принципы управления сложными проектами, которые сформулировал в те годы молодой ученый Фредерик Брукс, работавший тогда в передовой сфере кибернетики – создании OS/360 в IBM, – могут быть полезны и по сей день. Мы подготовили саммари этой замечательной книги с комментариями руководителя разработки Smart Reading Вячеслава Никулина.
В 1960–1970-е годы не существовало разнообразного готового инструментария удаленной коммуникации, совместной работы над макетами и документацией, систем ведения и контроля поставленных задач и использованных ресурсов. Хотя сейчас все эти технологии активно используются, процесс разработки и проектирования ПО только усложняется. ПО разрабатывается для многих прикладных сфер жизни, разные программы автоматизировано взаимодействуют друг с другом, ошибки в оценке трудозатрат на разработки таких систем имеют те же корни, что и 40 лет назад.
Программа и программный продукт – не одно и то же. Программный продукт отличается от программы:
максимально обобщенным диапазоном и видом входных данных;
тщательным тестированием, которое представляет собой отдельную сложную задачу;
подробной документацией.
Свою роль сыграли и унифицированные среды программирования. И все-таки ПО можно упрощать лишь до определенного предела, который ставят четыре условия:
1) сложность (огромное количество программных конфигураций затрудняет их описание и тестирование);
2) подчиненность форме (интерфейсы создаваемого ПО должны подчиняться многообразию человеческих институтов и систем, для которых и создаются);
3) изменчивость (ПО функционально, а функциональность – то, что в наибольшей степени подвержено изменениям в связи с быстро меняющейся реальностью);
4) невидимость (реальность ПО не встроена в пространство, ее трудно представить в том смысле, в каком, допустим, Земля отражена на географических картах, визуализировать ПО без принципиального упрощения трудно).
Объективные трудности, однако, можно минимизировать, если организовать создание ПО грамотно.
Как организовать коллектив
Программистов губит оптимизм: поскольку их продукт создается не из глины или красок, но из чистых мысленных абстракций, они зачастую уверены, что в реализации проекта не будет больших трудностей. Между тем сами идеи бывают ошибочными, а это влечет ошибки в программах.
Мы путаем приложенные усилия и движение вперед. Ход выполнения работы не зависит от человеко-часов, люди и время не взаимозаменяемы.
Люди и месяцы взаимозаменяемы только тогда, когда не нужно выстраивать коммуникацию между сотрудниками. Сбор хлопка на полях? Идея человеко-часов работает. Создание ПО? Идея человеко-часов проваливается, потому что разные этапы этой работы взаимозависимы и программисты должны тратить время на взаимодействие друг с другом. Времени на наладку коммуникации всегда уходит больше, чем на усилия по сокращению времени выполнения отдельных этапов работы. Поэтому
Брукс вывел правило для определения графика работ по сборке ПО.