RSS Telegram YouTube Apple Яндекс Spotify Google Amazon Почта

43. No silver bullet

17.03.2024

Скачать

К списку выпусков

Ссылки выпуска:

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

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

Основная тема работы — сложность программирования, которую Брукс считает невозможным упростить. Он приводит аналогии со строительством, где используются одинаковые блоки, в отличие от программирования, где каждый компонент уникален. Добавление новой функции в программу часто приводит к нелинейному увеличению сложности всего проекта, повышая вероятность появления багов и усложняя взаимосвязи между компонентами.

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

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

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