Иллюзия созидания или здравый смысл?

"Пилите, Шура, пилите..."

И.Ильф, Е.Петров "Золотой теленок"

У многих людей, как связанных с компьютерной техникой, так и не знакомых с ней, часто возникает ошибочное мнение о том, что если человек может написать программу, то он обязательно является программистом. Как известно, это далеко не так. Еще совсем недавно, чтобы называться программистом, по меньшей мере, надо было, во-первых, знать устройство и внутреннюю архитектуру компьютера, во-вторых, уметь работать на одном или нескольких объектно-ориентированных языках программирования. Как "суперкласс" знание машинно-ориентированных языков признавалось многими. На сегодняшний же день, когда визуальное программирование все больше вытесняет "традиционное", ситуация сильно изменилась. Многие ведущие разработчики программного обеспечения в различных предметных областях предоставляют своим пользователям программно-инструментальные средства, которые без особых усилий позволяют создавать свои собственные, достаточно серьезные разработки и отдельные приложения. В последнее время книги с заголовками наподобие "Текстовый редактор в Visual Basic за три минуты" или "Как создать профессиональную СУБД за месяц, если у Вас нет опыта программирования" все чаще можно встретить на прилавках магазинов. Рынок программного обеспечения, как лицензионного, так и "пиратского" на любой вкус и взыскательность, насыщен как никогда ранее. Все чаще можно услышать фразу: "Все, что можно было написать, уже написала Microsoft, а если еще что-нибудь и осталось, то скоро и это напишут ей подобные". В принципе я согласен с этим утверждением. Конечно же, программирование не умрет (даже "традиционное"), но в последнее время в большинстве случаев гораздо важнее уметь использовать уже разработанные программно-инструментальные средства, и я постараюсь как можно более убедительнее аргументировать это.

Пару лет назад, когда я работал в коммерческой фирме, у нас была маленькая программка для печати платежных поручений. Все было бы хорошо, если бы в один прекрасный день во всех организациях не поменялся расчетный счет (увеличилось количество знаков до 13). В результате в нашу программу не вмещалась новая цифра. Меня как человека, разбирающегося в компьютерах, сразу же заставили написать новую программу. И вот после того, как я заканчивал эту работу, ко мне зашел мой знакомый, который знал Excel for Windows и немного в целом Microsoft Office. Посмотрев, как я мучаюсь, он сел за компьютер и в этом самом Excel сделал мне шаблон для платежки за полчаса (кстати, я ей до сих пор пользуюсь). Тут-то я понял, что зря потерял время на попытки "изобрести очередной велосипед", занимаясь написанием программы. Профессиональным программистом я так и не стал, а за это время вполне мог бы освоить много различных пакетов, знание которых мне очень пригодилось бы. С тех пор я занимаюсь исключительно освоением уже готовых пакетов. Если вас еще не утомила моя статья, то мне хотелось бы привести еще один такой пример из моей жизни. Я работаю в государственной организации программистом (!) уже почти год, и за все это время не написал ни одной строчки программы. Это не значит, что я какой-нибудь бездельник, дело в том, что по специфике работы мы занимаемся библиотечным делом (учет книг на абонементе, в читальном зале и т.д.) и, следовательно, нам приходится работать с базами данных. До меня здесь работал "крутой" программист (30 лет, выпускник РТИ, менял языки программирования как перчатки и т.д.), так вот он написал огромное количество программ на C++, и в результате эти программы, конечно, работали, но не совсем так, как хотелось, "глючили", да и данные хранились в каком-то "навороченном" внутреннем формате. Что я сделал - за один месяц изучил Access (из Microsoft Office), и потом за неделю (подчеркиваю еще раз - за неделю) сделал все требующиеся приложения, которые прекрасно работают, легко модифицируются, просты в обращении и совершенно "прозрачны" для других программистов или пользователей. Кроме того, мы скоро собираемся устанавливать сеть, а эти приложения на Access, оказывается, еще почти автоматически поддерживают работу в сети, т.е. не надо "напрягаться" и программировать многопользовательский доступ к базе данных.

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

Мое мнение таково - на сегодня гораздо целесообразнее заниматься изучением уже готовых пакетов, разбираться в перечне предложений на рынке ПО, знать, для какой задачи и где программный инструментарий лучше всего применить и т.д. Здесь, конечно, следует подчеркнуть следующее: если вы хотите работать именно программистом в организации, разрабатывающей ПО, то это, скорее всего, будет адаптационным программированием, т.к. в большинстве случаев все равно будет использоваться базовое ПО, начиная, например, с Windows 95, трансляторов или пакетов визуального программирования, включая различные (готовые!) библиотеки. Но дело в том, что программистов много, а вот людей, которые отлично ориентируются в большом многообразии пакетов, могут посоветовать, какие программы и как лучше использовать для конкретных задач, спланировать какой-либо проект, гораздо меньше и ценятся они как специалисты намного больше. Именно они могут сэкономить достаточно приличные средства для организации, где планируется разработка, предложив оптимальную среду на базе коммерческого ПО. Здесь следует отметить, что это не исключает ведение своих разработок, но это уже будет адаптационное программирование. В странах СНГ распространено, как мне кажется, ошибочное мнение о том, что достаточно закончить отладку последнего оператора программы - и она уже готова. Это относится и к программным комплексам. Заблуждение заключается в том, что просто написанная и якобы отлаженная программа априори не является коммерческим продуктом. Для того, чтобы программа или комплекс программ сделать коммерческим продуктом, необходимо специальное тестирование, достаточно подробное документирование, обеспечение привлекательности (дружественного) программного интерфейса, бета-тестирование и рекламно-маркетинговые исследования. Да и просто важна сама идея, под которую вы производите реализацию разработки и программирования. Иначе разработанный комплекс программ просто станет "вещью в себе". Все это требует значительных средств и затрат, которыми обычно не обладают как отдельные "супер-программисты", так и коллективы. Разработка и выпуск программных продуктов является таким же товарным производством, как и все остальное. И к выпуску такой продукции нужно подходить очень серьезно. В настоящее время вы вряд ли найдете программиста (или группу программистов), который пытался бы создавать, например, текстовый редактор. Хотя еще несколько лет назад такие "умельцы" в наличии имелись. В то же время имеются предметные ниши для реализации разработок программного обеспечения во многих областях. Обычно это региональные задачи, которые имеют и региональную специфику, которую лучше всего могут понять местные постановщики этих задач, и, соответственно, осуществить их реализацию должны региональные программисты.

 

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

Сегодня на рынке программных продуктов имеется достаточно мощный инструментарий для разработчиков: Delphi, Visual Basic, Visual C++, Java, MapObjects, Avenue и т.д. Опираясь на те возможности, которые может предоставить указанный инструментарий на данный момент, создание собственных предметно-ориентированных приложений не является большой проблемой. Мне трудно понять тех, кто сегодня тратит огромные средства (в большинстве случаев государственные) на сомнительные разработки и "в поте лица" пытается создавать собственный инструментарий.

В конце статьи хотелось бы особо подчеркнуть то, что в настоящее время намного важнее обладать хорошей идеей, а найти людей, которые смогут запрограммировать эту идею, проще простого, тем более, если имеются финансовые возможности. И еще пару слов о Microsoft. Как вы думаете, кто написал Windows или Winword? Билл Гейтс? Нет! Все эти продукты и сотни других написали "неизвестные программисты", а вот придумал саму идею Windows Билл Гейтс и деньги за эту идею получает тоже он. Поэтому если вам необходима реализация некоторой проблемы или проекта, постарайтесь внимательно изучить рынок предлагаемого ПО. Вы всегда сможете отыскать на нем то, что может вас устроить в той или иной мере. А уже на базе этого дополнительно адаптировать его к решению ваших задач.

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

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

Номер: 

11 за 1998 год

Рубрика: 

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