Стоит ли изобретать велосипед

"-Ну, нет! Холм никак не может быть равниной. Это уж совсем чепуха!

-Разве это чепуха? Слыхала я такую чепуху, рядом с которой эта разумна как толковый словарь!"

Льюис Кэрролл, "Алиса в зазеркалье"

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

Иллюзия 1: Мы сделаем нашу программу лучше и мощнее, чем есть на рынке.

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

Иллюзия 2: Имеющаяся программа слишком сложна и требует много ресурсов, мы создадим простую и не требующую дорогого оборудования.

 

Этот аргумент не более чем завуалированная попытка сэкономить на оборудовании или же недопонимание реальной сложности задачи. Ну, во-первых, разработчики имеющейся системы тоже, наверное, не хотели себе лишних проблем. Во-вторых, для постановки задачи требуется, кроме владения предметной областью, еще и понимание "чисто программистских" аспектов. Граммотная постановка требует специальной квалификации, которой почти никогда не бывает у заказчика и редко когда бывает у исполнителя. В-третьих, намного легче и дешевле освоить "сложную" программу, чем написать "легкую". И в-четвертых, в отличие от стоимости рабочей силы, которая растет, стоимость оборудования падает, причем очень сильно. Кроме того, вам все равно придется периодически модернизировать ваш компьютерный парк просто для того, чтобы не терять совместимости с окружающим компьютерным миром и иметь возможность эксплуатировать современные версии текстовых процессоров, графических редакторов, ГИС и т.д.

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

Комплексные информационные решения для предприятий в странах СНГ никак нельзя назвать диковинкой. Еще в 70-е годы многочисленные НИИ и КБ разрабатывали разнообразные автоматизированные системы управления (АСУ) и затем годами пытались внедрить их на предприятиях. Опыт накоплен солидный, но, как это часто у нас бывает, печальный. В результате после титанических усилий и затрат вы в итоге все равно получите тот же самый набор функций, только "в одной коробке". Кроме того, если у вас имеется несколько программ, вместо одной, то это даже упрощает вашу задачу, так как при изменении требований (например, поменялся формат данных, добавился новый участок работы) любую из программ гораздо проще заменить. Это намного легче, чем, например, переписывать или дописывать какие-либо части программы.

Иллюзия 4: Ваша система стоит слишком дорого, мы напишем свою гораздо дешевле.

Помните, что разочарование от низкого качества длится намного дольше, чем радость от низкой цены. Заказывая программу, вы можете быть уверены в быстром и качественном получении результата только при сотрудничестве с профессионалами высокого класса (причем, имеющих опыт работы со сходными задачами), а они обычно знают себе цену и стоят дорого (в среднем, если судить по объявлениям в газете, от 300$ в месяц). Кроме того, необходимо принять во внимание не только разработку по имеющемуся сценарию, но и дальнейшее развитие и сопровождение. Не забывайте также, что норма зарплаты растет очень быстро, и если, к примеру, договор рассчитан на полгода, то ваши затраты могут сильно превзойти расчетные.

Иллюзия 5: У нас в штате уже есть программисты и делать им особо нечего, да и система нам нужна не срочно.

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

Иллюзия 6: Система будет своя и в нее можно будет быстро вносить корректировки.

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

Иллюзия 7: Мы не хотим зависеть от разработчика и ждать, пока в программу будут вносится изменения.

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

Иллюзия 8: Мы не хотим покупать у конкурентов.

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

Иллюзия 9: Сделаем, продавать будем.

Кому?!? Очень трудно сейчас найти свою нишу на рынке (тем более у нас), где уже есть конкуренция. Да еще у конкурентов есть фора (пока вы напишете...).

Иллюзия 10: То, что нам надо, отсутствует на рынке.

Как известно, спрос рождает предложение, и сейчас сложно представить себе задачу, для решения которой еще нет инструмента. Исключение может составить только очень узкоспециализированная. Но я думаю, если она не требует супертехнологий, то ее вполне можно реализовать "малой кровью" хотя бы на том же Access или на чем-нибудь подобном.

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

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

Павел БЫЛЬ,
byll@saltus.belpak.minsk.by

Версия для печатиВерсия для печати

Номер: 

12 за 1998 год

Рубрика: 

Software
Заметили ошибку? Выделите ее мышкой и нажмите Ctrl+Enter!