Показаны сообщения с ярлыком Фредерик Брукс. Показать все сообщения
Показаны сообщения с ярлыком Фредерик Брукс. Показать все сообщения

понедельник, 14 декабря 2009 г.

Мифический человеко-месяц. Радости профессии

Один из комментариев к первой части цитат книги Фредерика Брукса “Мифический человеко-месяц” навела на мысль, что одной цитаты из раздела “Радости профессий” недостаточно. Но этот раздел настолько потрясен, что я думаю будет не лишним выделить его в отдельное сообщение.

Почему заниматься программированием интересно? Какими радостями вознаграждаются те, кто им занимается?
      Во-первых, это просто радость, получаемая при создании чего-либо своими руками. Как ребенок радуется, делая куличики из песка, так и взрослый получает удовольствие, создавая какие-либо вещи, особенно если сам их и придумал. Я думаю, что этот восторг - отражение восторга Господа, творящего мир, восторга, проявляющегося в индивидуальности и новизне каждого листочка и каждой снежинки.
      Во-вторых, это удовольствие создавать вещи, которые могут быть полезны другим людям. Глубоко в душе мы испытываем потребность в том, чтобы другие использовали результаты нашего труда и считали их полезными. В этом отношении программная система по своей сути - то же, что и изготовленная ребенком подставка для карандашей "папе в подарок".
      В-третьих, это очарование создания сложных головоломных объектов, состоящих из взаимодействующих движущихся частей и наблюдения за их работой, круг за кругом демонстрирующей результаты изначально заложенных принципов. Компьютер с работающей на нем программой обладает доведенным до высшего предела очарованием игорного или музыкального автомата.
      В-четвертых, это радость, получаемая от неизменного узнавания нового, проистекающего из неповторимой природы задачи. В том или ином отношении задача всегда ставится по-новому, и тот, кто ее решает, получает новые знания - либо практические, либо теоретические, либо те и другие вместе.
      Наконец, наслаждение доставляет работа со столь податливым материалом. Программист, подобно поэту, работает почти непосредственно с чистой мыслью. Он строит свои замки в воздухе и из воздуха, творя силой воображения. Трудно найти другой материал, используемый в творчестве, который столь же гибок, прост для шлифовки или переработки и доступен для воплощения грандиозных замыслов. (Как мы позднее увидим, такая податливость таит свои проблемы.)
      Однако программная конструкция, в отличие от поэтических творений, реальна, в том смысле, что она движется и работает, производя видимые результаты, которые отделимы от самой конструкции. Она печатает результаты, рисует картинки, производит звуки, приводит в движение рычаги. В наше время осуществилось волшебство мифа и легенды. С клавиатуры вводится верное заклинание, и экран монитора оживает, показывая то, чего никогда не было и не могло быть.
      Таким образом, программирование доставляет удовольствие, поскольку отвечает глубокой внутренней потребности в творчестве и удовлетворяет чувственные потребности, которые есть у всех нас.

Все цитаты из книги Фредерика Брукса “Мифический человеко-месяц”:

Часть 1

Часть 2

Радости профессии

пятница, 4 декабря 2009 г.

Мифический человеко-месяц. Часть 2

Обещанная вторая часть цитат из замечательной книги Фредерика Брукса.

Как оказывается, что проект запаздывает на год?
... Сначала он запаздывает на один день.
Глава 14. Назревание катастрофы

Никто не любит и сам приносить дурные вести, поэтому они смягчаются без злого намерения ввести в заблуждение.
Глава 14. Вехи или помехи?

Каждому начальнику нужно два вида данных: информация о срывах плана, которая требует вмешательства, и картина состояния дел, чтобы быть в курсе.
Глава 14. Под ковром

Компьютерная программа - это послание человека машине. Строго выстроенный синтаксис и тщательные определения нацелены на то, чтобы бездумной машине стали понятны намерения человека.
Глава 15. Обратная сторона

Нет ни одного открытия ни в технологии, ни в методах управления, одно только использование которого обещало бы в течение ближайшего десятилетия на порядок повысить производительность, надежность, простоту разработки программного обеспечения.
Глава 16 Серебряной пули нет - сущность и акциденция в программной инженерии

Серебряных пуль не только не видно в настоящее время, но в силу самой природы программного обеспечения маловероятно, что они вообще будут найдены — не будет изобретений, способных повлиять на продуктивность создания, надежность и простоту программного обеспечения так, как электроника, транзисторы и интегральные схемы — на аппаратное обеспечение компьютеров.
Глава 16. Неизбежны ли трудности? Трудности, вытекающие из сущности

Сложность программ является существенным, а не второстепенным свойством. Поэтому описания программных объектов, абстрагирующиеся от их сложности, часто абстрагируются от их сущности. Математика и физические науки за три столетия достигли больших успехов, создавая упрощенные модели сложных физических явлений, получая из этих моделей свойства и проверяя их опытным путем. Это удавалось благодаря тому, что сложности, игнорировавшиеся в моделях, не были существенными свойствами явлений. Но это не действует, когда сложности являются сущностью.
Глава 16. Глава 16. Неизбежны ли трудности? Трудности, вытекающие из сущности

Эйнштейн неоднократно утверждал, что природа должна иметь простые объяснения, поскольку Богу не свойственны капризность и произвол.
У разработчика программного обеспечения нет такой утешительной веры. Сложность, с которой он должен совладать, по большей части является произвольной, необоснованно вызванной многочисленными человеческими установлениями и системами, которым должны удовлетворить его интерфейсы. Системы различаются интерфейсами и меняются во времени не в силу необходимости, а лишь потому, что были созданы не Богом, а разными людьми.

Глава 16. Глава 16. Неизбежны ли трудности? Трудности, вытекающие из сущности

Правда заключается в том, что клиенты не знают, чего хотят. Обычно они не знают, на какие вопросы нужно дать ответ, и почти никогда не задумывались над задачей настолько детально, как это нужно указать в спецификации.
Глава 16. Перспективные подходы к концептуальной сложности

Я пойду дальше и стану утверждать, что на практике клиенты, даже вместе с инженерами-программистами, не в состоянии указать полно, строго и корректно точные требования к современному программному продукту, прежде чем будут созданы и опробованы какие-либо версии продукта, спецификации к которому они составляют.
Глава 16. Перспективные подходы к концептуальной сложности

Программисты принадлежат к наиболее интеллектуальной части общества, следовательно, они в состоянии изучать хорошие приемы.
Глава 16. Перспективные подходы к концептуальной сложности

Кто хочет увидеть образец совершенства,
Тот мечтает о том, чего никогда не было, нет и не будет
Александр Поуп "О критике"

В конце концов, я по происхождению программист, а оптимизм - это профессиональная болезнь данного ремесла
Глава 17. Анализ Харела

Любыми средствами можно писать и плохие, и хорошие программы. Если не учить людей проектированию, то языке не имеют большого значения. Результатом будут плохие разработки с помощью этих языков и малая выгода.
Глава 17. Объектно-ориентированное программирование: а медная пуля не подойдет?

Хорошее эмпирическое правило говорит, что повторно используемые компоненты потребуют вдвое больших затрат, чем "одноразовые" компоненты
Эдвард Йордон
Глава 17. Что с повторным использованием?

История человечества — это пьеса, в которой сюжеты постоянны, сценарии медленно меняются с развитием культуры, а декорации меняются непрерывно. Поэтому в ХХ веке мы узнаем себя в Шекспире, Гомере и Библии. Поэтому в той мере, в какой «МЧ-М» написан о людях, он устаревает медленно.
Глава 19. Для чего понадобилось юбилейное двадцатое издание?

Архитектора можно сравнить с режиссером, а менеджера - с продюсером кинокартины
Глава 19. Центральные аргумент: концептуальная целостность и архитектор

Дополнительно привлекаемые на поздних стадиях проекта работники должны быть игроками команды, стремящимися войти в игру и вписаться в процесс, а не пытаться изменить или усовершенствовать сам процесс!
Глава 19. Насколько мифичен человеко-месяц? Модель и данные Бёма

Если согласиться, что, как я неоднократно доказывал на протяжении этой книги, творчество исходит от личностей, а не организационных структур и процессов, тогда главная задача менеджера программного проекта — создать организационную структуру и рабочий процесс, способствующий творчеству и инициативе, а не подавляющие их.
Глава 19. Сила отказаться от власти

Немногим Бог дает право зарабатывать на жизнь тем, чем они с радостью занимались бы по собственной воле, по увлечению. Я благодарен судьбе.
Эпилог. Пятьдесят лет удивления, восхищения и радости

Область связанных с компьютерами знаний претерпела взрыв, как и соответствующая технология. Будучи аспирантом в середине 50-х, я мог прочесть все журналы и труды конференций. Я мог оставаться на современном уровне во всей научной дисциплине. Сегодня же мне в моей интеллектуальной жизни приходится с сожалением расставаться с интересами то в одной, то в другой подобласти, поскольку количество документов превысило всякую возможность справиться с ними. Масса интересов, масса замечательных возможностей для учебы, исследований, размышлений. Чудесное затруднение! Не только конца не видно, но и шаг не замедляется. В будущем нас ожидают многие радости.
Эпилог. Пятьдесят лет удивления, восхищения и радости

Все цитаты из книги Фредерика Брукса “Мифический человеко-месяц”:

Часть 1

Часть 2

Радости профессии

Мифический человеко-месяц. Часть 1

Книга Фредерика Брукса “Мифический человеко-месяц” произвела на меня неизгладимое впечатление (более подробно можно почитать на моем блоге или на сайте rsdn.ru). Просто удивительно, насколько книга, написанная уже почти 35 лет назад может быть столь актуальной сегодня, особенно учитывая темпы, с какими развиваются компьютерная индустрия.

Многие цитаты из этой книги давно уже стали классическими, практически каждый, занятый в области разработки ПО слышали о “законе Брукса” и “серебряной пуле”, но помимо этих известных высказываний в книге содержится много других интересных мыслей.

Поскольку этих самых мыслей набралось слишком много, то я решил разбить цитаты на две части.

Почему заниматься программированием интересно? Какими радостями вознаграждаются те, кто им занимается?
Это радость, получаемая при создании чего-либо своими руками. Как ребенок радуется, делая куличики из песка, так и взрослый получает удовольствие, создавая какие-либо вещи, особенно если сам их и придумал. Я думаю, что этот восторг — отражение восторга Господа, творящего мир, восторга, проявляющегося в индивидуальности и новизне каждого листочка и каждой снежинки.
Глава 1. Радости профессии

Разработка грандиозных идей — это удовольствие, а поиск паршивых маленьких «жучков» — это всего лишь работа. В каждом творческом деле бывают ужасные периоды однообразного и кропотливого труда, и программирование не является исключением.
Глава 1. Печали профессии

Программные проекты чаще проваливаются из-за нехватки календарного времени, чем по всем остальным причинам вместе взятым.
Глава 2. Этот мифический "человеко-месяц"

При обнаружении отставания от графика естественной и общепринятой реакцией является увеличение числа разработчиков. Это все равно, что тушить пламя бензином. В результате дела идут значительно хуже. Чем сильнее пламя, тем больше нужно бензина, и в итоге этот путь приводит к катастрофе.
Глава 2. Этот мифический "человеко-месяц"

В основе планирования разработки программ лежит ложное допущение, что все будет хорошо, т.е. каждая задача займет столько времени, сколько «должна» занять.
Глава 2. Оптимизм

Число занятых и число месяцев являются взаимозаменяемыми величинами лишь тогда, когда задачу можно распределить среди ряда работников, которые не имеют между собой взаимосвязи. Это верно, когда жнут пшеницу или собирают хлопок, но в системном программировании это далеко не так.
Глава 2. Человеко-месяц

Чтобы родить ребенка требуется девять месяцев независимо от того, сколько женщин привлечено к решению данной задачи.
Глава 2. Человеко-месяц

Поскольку создание программного продукта является по сути системным проектом — практикой сложных взаимосвязей, затраты на обмен данными велики и быстро начинают преобладать над сокращением сроков, достигаемым в результате разбиения задачи на более мелкие подзадачи. В этом случае привлечение дополнительных работников не сокращает, а удлиняет график работ.
Глава 2. Человеко-месяц

Для программиста, как и для повара, давление со стороны хозяина может определять запланированный срок завершения задачи, но не может определять время ее фактического завершения. Омлет, обещанный через две минуты, может успешно жариться, но если через две минуты он не готов, то у клиента есть две возможности: ждать еще или съесть его сырым. Тот же выбор встает и перед заказчиком программного обеспечения.

У повара есть еще одна возможность: добавить жару. В результате омлет часто оказывается безнадежно испорченным: горелым с одного края и сырым — с другого.

Я не думаю, что у менеджеров программных продуктов меньше храбрости или твердости, чем у поваров или других менеджеров в инженерных областях. Но липовые графики, нацеленные на желательную хозяину дату, встречаются здесь значительно чаще, чем в любых других инженерных областях. Очень тяжело, рискуя потерять рабочее место, с энергией и любезностью отстаивать срок, который определен без применения каких-либо количественных методов при недостатке данных и подкреплен, в основном, интуицией менеджера.
Глава 2. Робость в оценках

Если проект не укладывается в сроки, то добавление рабочей силы задержит его еще больше.
Глава 2. Упрощенная формулировка закона Брукса

Я убежден, что концептуальная целостность является важнейшей характеристикой системного проекта. Лучше убрать из системы отдельные необычные возможности и усовершенствования и реализовать единый набор конструктивных идей, чем оснастить ее многими хорошими, но невзаимосвязанными и несогласованными идеями.
Глава 4. Концептуальное единство

Весь личный опыт убеждает меня, и я пытался это показать, что простоту пользования системой определяет ее концептуальная целостность. Достойные внимания функции и идеи, которые не объединяются с основными концепциями системы, лучше оставить в стороне. Если таких важных, но несовместимых идей появляется слишком много, выкидывают всю система и начинают разработку целостной системы сначала, основывая ее на иных основополагающих концепциях.
Глава 4.Аристократия и демократия

Архитектор всегда должен быть готов показать пример реализации любой описанной им функции, но он не должен пытаться навязывать определенную реализацию.
Глава 6. Письменные спецификации - руководство

Лучший друг менеджера проекта — его постоянный противник, независимая организация, тестирующая продукт. Группа проверяет соответствие машин и продуктов спецификациям и выступает пособником дьявола, указывая на все замеченные дефекты и несоответствия. Каждой организации, ведущей разработки, нужна такая независимая группа технического аудита, которая должна быть неподкупна.
Глава 6. Тестирование продукта

Мыслители встречаются редко, практики еще реже, но реже всего - мыслители-практики
Глава 7. Организация крупного программного проекта

Что хуже всего получается у менеджеров проектов, так это использование технического гения людей, не очень сильных в администрировании
Глава 7. Организация крупного программного проекта

Линейная экстраполяция данных, относящихся к коротким задачам, бессмысленна. Если экстраполировать время, за которое можно пробежать стометровку, то окажется, что можно пробежать милю менее чем за три минуты.
Глава 8. Объявляя удар


В неопубликованном исследовании 1964 года, которое провел E. F. Bardain, показано, что программисты продуктивно используют 27% рабочего времени.
Глава 8. Данные Портмана. Сноска №6

Необходимо записывать принятые решения. Только когда пишешь, становятся видны пропуски и выявляются несогласованности. В процессе записывания возникает необходимость принятия сотен мини-решений, и их наличие отличает четкую и ясную политику от расплывчатой.
Глава 10. Зачем нужны формальные документы?

Планируйте выбросить первую версию — вам все равно придется это сделать.
Глава 11.Опытные заводы и масштабирование

Нежелание документировать проект происходит не только от лени или недостатка времени. Оно происходит от нежелания проектировщика связывать себя отстаиванием решений, которые, как он знает, предварительные. «Документируя проект, проектировщик становится объектом критики со всех сторон, и должен защищать все, что написал. Если организационная структура может представлять угрозу, не будет документироваться ничего, кроме того, что нельзя оспорить.»
Глава 11. Планируйте организационную структуру

Фундаментальная проблема при сопровождении программ состоит в том, что исправление одной ошибки с большой вероятностью (20-50 процентов) влечет появление новой. Поэтому весь процесс идет по принципу «два шага вперед, один назад».
Глава 11. Два шага вперед, шаг назад

Я убежден, что только инертность и лень препятствуют повсеместному принятию этих инструментов, технические трудности более не являются изменениями.
Глава 12. Языки высокого уровня и интерактивное программирование

Среди современных кудесников, как и встарь, встречаются хвастуны: «Я могу писать программы, которые управляют воздушным движением, перехватывают баллистические ракеты, делают переводы по банковским счетам, управляют производственными линиями». На что есть ответ: «И я могу, и каждый может, но будет ли работать то, что ты напишешь?»
Глава 13. Целое и части

Все цитаты из книги Фредерика Брукса “Мифический человеко-месяц”:

Часть 1

Часть 2

Радости профессии

UPD: Добавлена цитата из главы 8. Спасибо intr за наводку:)