Ф. Брукс. Мифический человеко-месяц. Цитаты.

Занятие программированием “отвечает глубокой внутренней потребности в творчестве и удовлетворяет чувственные потребности, которые есть у всех у нас”, доставляя пять видов радости:

  1. Радость, получаемая при создании чего-то своими руками.
  2. Удовольствие создавать вещи, которые могут быть полезны другим людям.
  3. Очарование создания сложных головоломных объектов, состоящих из взаимодействующих движущихся частей.
  4. Радость, получаемая от неизменного узнавания нового, неповторяемости задачи.
  5. Удовольствие от работы со столь податливым материалом – чистой мыслью, который, тем не менее, существует, движется и работает так, как не могут словесные объекты.

В то же время этому занятию присущи и огорчения:

  1. При изучении программирования труднее всего привыкнуть к требованию совершенства.
  2. Постановка задач осуществляется другими людьми и приходится зависеть от вещей (особенно, программ ), которые нельзя контролировать; полномочия не соответствуют ответственности.
  3. Страшно только на словах: фактическая власть приобретается как следствие успешного выполнения задач.
  4. Программный проект приближается к окончательному виду тем медленнее, чем ближе окончание, хотя кажется, что к концу сходимость должна быть более быстрой.
  5. Программному продукту грозит устаревание еще до его завершения. Настоящий тигр – не пара бумажному, если требуется реальное использование.

Исправление одной ошибки с большой вероятностью (от 20 до 50 процентов) вносит другую.
После каждого исправления нужно прогнать весь набор контрольных примеров, по которым система проверялась раньше, чтобы убедиться, что она каким-то непонятным образом не повредилась.

Все исправления имеют тенденцию к разрушению структуры, увеличению энтропии и дезорганизации системы. Даже самое искусное сопровождение программы только отдаляет момент повержения ее в состояние неисправимого хаоса, выходом из которого является повторное проектирование с самого начала.

Концептуальная целостность является важнейшим условием качества продукта. Наличие системного архитектора есть важнейший шаг в направлении концептуальной целостности. Эти принципы ни в коей мере не ограничиваются разработкой программного обеспечения, а справедливы при проектировании любой сложной конструкции, будь то компьютер, самолет, стратегическая оборонная инициатива или система глобальной навигации. После преподавания в более чем 20 лабораториях разработки программного обеспечения я стал настаивать, чтобы группы учащихся, даже из четырех человек, выбирали менеджера и отдельно – архитектора. Разделение функций в таких маленьких группах может показаться несколько чрезмерным требованием, но, по моим наблюдениям, это оправдано и способствует достижению успеха.

“главная задача менеджера программного проекта – создать организационную структуру и рабочий процесс, способствующий творчеству и инициативе, а не подавляющие их”

“В помещениях наиболее продуктивных программистов тише, они более личные, лучше защищены против непрошеного вторжения, и они просто больше …Понимаете ли вы, что покой, пространство и уединенность способствуют лучшей работе ваших теперешних работников или (с другой стороны ) способствует привлечению и сохранению лучших работников?”