суббота, 26 июля 2008 г.

Возможности программиста, невозможности компьютера

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

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

Лет пять назад это называлось "Напишите нам базу данных", потом "Веб-сайт". Теперь это уже делает не один программист, а команда, фирма или компания, и всё это дело может называться совсем по другому.

В процессе разработки оказывается, что у заказчика полный бардак не только с ведением дел и документации, но и с наплевательским отношением его сотрудников вообще на всё, что происходит на фирме заказчика. Как можно догадываться, никакие SQL, Delphi, Excel и PHP тут не помогут в принципе. И такая "База данных" неожиданно и плавно переходит в некое подобие ERP или CRM:

Но программисты - это не бизнес-консультанты, им просто не до того, когда они пишут код или строят архитектуру системы, они мыслят совсем в других категориях.

Один программист может написать несложную базу данных на MS Access даже за ночь, но только при следующих условиях:

  1. Задача предельно ясна заказчику.
  2. Задача предельно ясна программисту.
  3. У заказчика и у программиста есть четкое понимание бизнес-процессов, которые должна автоматизировать разрабатываемая программная система.

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

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

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

С уважением, Ильдар Валеев.