Неинтерактивная отладка

May 01, 2012 17:30

На днях послужил объектом спортивных ставок со стороны коллег.

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

Но нет. Ради такой ерунды и при таких сроках я не мог себе этого позволить. Лентяй я, в конце концов, или нет? Я написал программу у себя, скомпилировал, записал образ на флешку и смело зашагал вверх по ступенькам с чистой совестью и уверенностью в собственной непогрешимости. Программа не заработала.

Я не совсем дурак, да и опыт кой-какой успел накопиться. Поэтому когда я считал ступеньки по дороге вниз, я хорошо осознавал, что где один раз, там и все десять. Вопрос только в том, что я собираюсь в связи с этим делать - продолжать в том же духе или таки организовать себе рабочее место наверху. И в какой именно момент надо сменить стратегию. Программа-то может и простая, но кто из нас не делал дурацкие ошибки на ровном месте? В обычном режиме работы мы такие ошибки даже не замечаем: скомпилировал-запустил-поправил. Можно успеть за минуту провернуть цикл несколько раз. Но здесь... как на перфокартах.

Все это поняли и мои коллеги, когда я вернулся. Мнения в среднем сошлись на том, что мне понадобится пять итераций, но терпение мое иссякнет раньше.

После того, как в ходе своей неинтерактивной отладки я преодолел шесть этажей вверх, программа заработала. После каждой итерации я все отчетливее понимал, насколько сильно современные инструменты позволяют нам расслабиться. Сначала мы используем DSL и библиотеки для решения своих задач. IDE подчеркнет очевидные ошибки, потом компилятор выверит синтаксис и немножко семантику, потом автоматические тесты и автоматизированные инструменты анализа отпрепарируют нашу программу, вывернут наизнанку и покажут, где и что не так. Это совсем не плохо, и даже, пожалуй, хорошо. Позволяет сосредоточиться на более крупных задачах и все такое. Только ум-то расслабляется... А расслабление ума не делает различий между машинными кодами и архитектурой облачных сервисов.

Пожалуй, за последний год это был самый просветляющий мой опыт. Рекомендую как мощный образовательный прием.

продуктивность, образование, философия, организация труда, мысли

Previous post Next post
Up