Мифический человеко-месяц, или Как создаются программные системы - [12]
Аристократия и демократия
Концептуальная целостность, в свою очередь, требует, чтобы проект исходил от одного разработчика, или небольшого числа их, действующих согласованно и в унисон.
С другой стороны, напряженность графика требует привлечения большого числа работников. Есть два метода разрешения этой дилеммы. Первый состоит в тщательном разделении труда между архитектурой и исполнением. Второй — новый способ организации бригад программистов-исполнителей, обсуждавшийся в предыдущей главе.
Отделение разработки архитектуры от реализации является эффективным способом достижения концептуальной целостности при работе над очень большими проектами. Я лично был свидетелем успешного его применения при создании IBM компьютера Stretch и серии продуктов System/360. Но он не сработал при разработке Operating System/360, поскольку недостаточно применялся.
Под архитектурой системы я понимаю полную и подробную спецификацию интерфейса пользователя. Для компьютера это руководство по программированию. Для компилятора это руководство по языку. Для управляющей программы это руководство по одному или нескольким языкам, используемым для вызова ее функций. Для системы в целом — это набор всех руководств, к которым должен обращаться пользователь при работе.
Архитектор системы, как и архитектор здания, является представителем пользователя. Его задача — использовать все свои профессиональные и технические знания исключительно в интересах пользователя, а не продавца, изготовителя и т.п.[2]
Архитектура и разработка должны быть тщательно разделены. Как сказал Блау (Blaauw), «архитектура говорит, что должно произойти, а разработка — как сделать, чтобы это произошло».[3]В качестве простого примера он приводит часы, архитектура которых состоит из циферблата, стрелок и заводной головки. Ребенок, освоивший это архитектуру, с одинаковой легкостью может узнать время и по ручным часам, и по часам на колокольне. Исполнение же и его реализация описывают, что происходит внутри: передача усилий и управление точностью каждым из многих механизмов.
К примеру, в System/360 одна и та же архитектура компьютера совершенно по-разному реализована примерно в девяти моделях. Обратным образом, одна и та же реализация потока данных, памяти и микропрограмм из Model 30 использовалась в разное время в четырех различных архитектурах: System/360, мультиплексном канале с подключением до 224 логически независимых подканалов, селекторном канале и компьютере 1401.[4]
Такие же различия можно проводить в отношении систем программирования. Существует стандарт для Fortran IV. Это архитектура, используемая во многих компиляторах. В рамках этой архитектуры возможны разные реализации: текст в оперативной памяти или компилятор, быстрая или оптимизирующая, синтаксическая или ad hoc. Аналогично, любой язык ассемблера или язык управления заданиями допускает многие реализации ассемблера или планировщика.
Теперь мы можем заняться весьма чувствительным вопросом борьбы аристократии и демократии. Не стали ли архитекторы новой аристократией, интеллектуальной элитой, призванной разъяснить бедным безгласным исполнителям, что они должны делать? Не захватила ли эта элита всю творческую деятельность, сделав исполнителей лишь зубчиками в механизме? Не окажется ли, что более совершенный продукт можно получить, используя идеи всей бригады и исповедуя философию демократии, а не ограничивая круг разработчиков несколькими лицами?
Проще всего ответить на последний вопрос. Я, разумеется, не стану утверждать, что хорошие архитектурные идеи могут возникать только у архитекторов. Часто свежая идея исходит от исполнителя или пользователя. Однако весь личный опыт убеждает меня, и я пытался это показать, что простоту пользования системой определяет ее концептуальная целостность. Достойные внимания функции и идеи, которые не объединяются с основными концепциями системы, лучше оставить в стороне. Если таких важных, но несовместимых идей появляется слишком много, выкидывают всю система и начинают разработку целостной системы сначала, основывая ее на иных основополагающих концепциях.
Что касается обвинений в аристократизме, то ответ и положительный, и отрицательный. Положительный, потому что действительно должно быть несколько архитекторов, чьи результаты живут дольше, чем отдельные реализации, и архитектор находится в фокусе сил, которые он в конечном итоге должен использовать в интересах пользователя. Если вы хотите, чтобы система обладала концептуальной целостностью, то руководство концепциями должен взять кто-то один. Это аристократизм, который не нуждается в извинениях.
Ответ отрицательный, поскольку разработка проекта требует не меньше творчества, чем задание внешних спецификаций. Это тоже творческая работа, но другого характера. Разработка проекта для заданной архитектуры требует и допускает столько же творческой деятельности, новых идей, изобретательности, как и проект внешних спецификаций. Практически, коэффициент стоимость/эффективность созданного продукта больше зависит от исполнителя, а простота его использования — от архитектора.
Джеральд Вайнберг, исходя из своего более чем 50-летнего опыта работы консультантом, делится своими выводами, как запустить и успешно вести свой собственный консалтинговый бизнес. Благодаря использованию юмористичных Правил, Законов и Принципов — таких как Закон малинового варенья, Принцип картофельных чипсов, Правило Руди о брюкве — автор показывает, как, оставаясь самим собой, находить клиентов, завоевывать доверие и устанавливать правильную цену на свои услуги, о которой потом не придется жалеть. Если вы консультант, когда-либо пользовались услугами консультанта или хотите быть одним из них, эта книга будет вам полезна.
Как и Тома Пикетти, который жестко критиковал капитализм, но при этом положительно его оценивал, бывший главный финансовый директор Группы Всемирного банка Бертран Бадре показывает деструктивную роль финансов в глобальном экономическом кризисе 2007–2008 гг. и предлагает смелый рецепт – использовать их во благо. Бадре объясняет, как с помощью финансов решить многие важнейшие проблемы мира – климатические изменения, бедность, восстановление инфраструктуры и многое другое. Он пишет: «Если использовать их с умом, человеколюбием, находчивостью и изобретательностью, финансы способны на великие свершения».
Хотите попросить повышение? Или сообщить подчиненному, что вас не устраивает качество его работы? Благодаря этой книге вы станете настоящим экспертом в разговоре на сложные темы: научитесь подбирать нужные слова, удачный тон и правильное время для бесед. Всего за одну неделю вы подготовитесь к разговору, мысль о котором вселяла в вас панику многие месяцы.
Если вам необходимо принять жизненно важное решение, вы нашли эту книгу в нужный момент! Когда предстоит сделать судьбоносный выбор – вступить ли в брак, переехать в другую страну, сменить работу или завести ребенка (подставьте ваш вариант) – списки «за» и «против» окажутся бесполезными и только еще больше введут в заблуждение. Верное решение находится внутри вас самих, и отыскать его поможет метод Эмили Фриман, известной писательницы и коуча. Пройдя несколько простых шагов, вы научитесь лучше понимать себя и осознаете, что вам действительно нужно и чего вы хотите по-настоящему.
В этой книге отражен результат 15-летнего исследования стратегического лидерства Hewlett Packard. Реальный опыт успешного применения принципов антихрупкости на практике, которые позволили компании выстоять против кризисов XX и XXI века.
В этой книге Пол Смит, директор по коммуникациям и потребительским исследованиям в Procter & Gamble и популярный спикер, рассказывает, как наиболее эффективно использовать силу историй. Автор уверен: каждый может стать блестящим рассказчиком. Пол Смит предлагает сотню готовых историй на все случаи жизни, которые помогут вам привлекать внимание, вдохновлять и мотивировать. Книга предназначена для всех, кто хочет воодушевлять и убеждать любую аудиторию. На русском языке публикуется впервые.