Как экспериментировать

Великий Эдсгер Дейкстра красноречиво объяснил, что информатика не является экспериментальной наукой[ExpCS] и не зависит от электронных устройств. Как он выразился в 1960-е годы [Knife]:

...произошло худшее: предмет стал известен как “computer science”, что, собственно говоря, то же самое, что называть хирургию “knife science”. И в сознании людей прочно укоренилось, что “computer science” - это наука о машинах и периферийном оборудовании.

Программирование может и не быть экспериментальной наукой, но у большинства программистов нет возможности заниматься тем, что Дейкстра определил как “computer science”. Мы должны работать в области эксперимента подобно некоторым (но не всем) физикам. Если спустя 30 лет можно будет заниматься программированием без экспериментирования, то это будет великим достижением информатики.

Эксперименты, которые вам придется заниматься, включают:

  • Тестирование систем на небольших примерах данных, чтобы убедиться в их соответствии документации, либо, чтобы понять их ответы, если документации нет

  • Тестирование небольших изменений в коде, чтобы удостовериться, что они устраняют баг в программе

  • Измерение производительности системы в двух различных окружениях из-за несовершенства знаний о их характеристиках производительности

  • Проверка целостности данных

  • Сбор статистики, которая может помочь в разрешении сложных и трудновоспроизводимых багов

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

Первое: старайтесь четко обозначать свои исходные предположения или утверждения, которые вы собираетесь проверить. Очень полезно записывать их, особенно, если вы работаете в коллективе.

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

Следующее: Командные навыки. Почему важно оценивать задачи

Last updated