Engineering philosophy

Программистский подход

Задача (основана на реальных событиях): отметить на карте и выбрать по нескольку достопримечательностей 20 крупнейших городов США.

Основано на реальных событиях.

Задача: отметить на карте и выбрать по нескольку достопримечательностей 20 крупнейших городов США.

Человеческий подход

  • выбрать города в Википедии - полчаса
  • поотмечать города на карте в Paint/Photoshop - десять минут на поиск карты и час на отмечание городов
  • полазить еще в гугле/википедии, найти интересные места - _два часа (5 минут _ 20)*

Как эту задачу решает программист

  • 20 раз делать одно и то же? Бред! Надо автоматизировать.
  • Давайте грабить википедию.
  • (прошло полчаса в поисках Ruby-клиента для Википедии)
  • Ладно, просто сграбим вот эту страницу и распарсим нокогирей
  • (час на написание парсера, сверяние с документацией и отлавливание багов)
  • Теперь будем писать скрипт для определения координат города. Где взять координаты? Конечно, через Google Maps API!
  • (час на написание скрипта, который стянет координаты с Google Maps)
  • (десять минут на обнаружение и исправление вручную тех пяти городов, для которых Google Maps чего-то ошибся)
  • Достопримечательности? Искать вручную? Снова парсим Википедию!
  • (еще три часа на стягивание страниц википедии и написание семантического анализатора текста статьи на предмет ссылок на достопримечательности)
  • (еще полчаса на сверяние информации и исправление неизбежных ошибок)
  • Готово!

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