Как создается программа

Привет! Тебе уже надоело изучать языки программирования только в теории? Хочется попробовать свои силы на настоящем проекте с бета-версиями и релизами? Тогда поговорим о том, как создается Программа — настоящая Программа, а не дружеские фишки типа HackInternetPasswords (о них ты и сам все знаешь). 😉 Обычно в процесс создания коммерческой программы вовлекается очень много людей, начиная с художников-дизайнеров, которые рисуют логотипы и окна диалогов, и заканчивая продюсерами, которые под конец работ собирают деньги и сбегают. 😉 Но существуют также и проекты «Open Source Projects» — проекты с открытыми исходными текстами, которые обычно ведут одни программисты. Вернее, они по совместительству являются еще и художниками, и продюсерами, и распространителями, и координаторами… и т.д. Обычно они создают абсолютно бесплатные программы, которые энтузиасты потом дописывают и поддерживают по нескольким причинам. Во-первых, это обыкновенный понт — желание выпендриться и показать собственную крутость: «А я вот так умею да так, что именно как я никто не смог!». 😉 Это же самое чувство сподвигло многих стать демомейкерами, вирусописателями и прочими кодерами. Во-вторых, обычно это желание иметь хорошую и неглючную утилиту, которая умеет больше, чем всякие поделки от M$. В-третьих, это просто интересно, и, однажды втянувшись, человек уже не может не писать программы. А когда это делаешь не один, а в группе таких же кодеров, которые один лучше другого, то со временем приобретается бесценный опыт кодинга и программерства. Дело это довольно долгое и на самом деле состоящее из множества этапов. Пройдемся по каждому из них и посмотрим, какие подводные камушки могут подстерегать наш Титаник. 😉

Часть 1. Идея

Итак, все начинается с идеи. Кому-то (поначалу весь проект ведет один человек) падает на голову кирпич или еще что, но этот кто-то однажды заявляет: «Э! А почему бы мне не написать вот такую классную прогу!». Тут-то все и закручивается. Сначала придумываются всевозможные фичи, которые должна поддерживать эта программа, придумывается ей название и устанавливается первоначальный порядок авторства (чтобы в больших коллективах потом не возникало проблем вроде: «А почему Пупкина опять первым написали? Он вообще ничего не делал!!!»). Идея обязательно должна быть красивой и привлекательной — иначе на нее никто не клюнет, и все придется делать тому, кто ее придумал. Писать в одиночку обычно надоедает, особенно если проект большой, а идея не так уж и интересна. 😉

Часть 2. Набор участников

После того как идея сформирована, обрела достаточную прочность и представляет собой законченную мысль, инициатор проекта может начать агитировать своих знакомых, друзей и близких просто начать рекламную кампанию по продвижению этой идеи. Попросту говоря, набираются те, кто потом будет на халяву трудиться над проектом. А то, что это должен быть проект, — понятно само собой. Немного официальности, немного растопыренных по-хорошему пальцев, и (вуаля! — как говорят французы) находятся добровольцы, которые также загораются идеей проекта бесплатного навороченного мейлера-почтовика со встроенными возможностями дистанционного управления холодильником или проекта драйверов для микроволновой печи под Windows 2000. Да-да, открытый проект — это не обязательно только Linux/Unix. Например, совсем недавно ко мне в руки попал Dos Navigator Open Source Project, написанный под DOS и DOS/DPMI на Borland Pascal 7.0. Так что платформа, язык программирования и погода на улице особой роли не играют. Важна именно идея. Dos Navigator, например, был изначально коммерческим продуктом. За него платили деньги, но позже фирма-производитель отказалась от дальнейшего исправления немереного количества багов в своем продукте и «выбросила» в Интернет исходники со словами и пожеланиями всем, кому не лень, наделать там новых багов. Так до сих пор и делают. И удачно, надо сказать, поскольку глючит по-страшному. 😉

Часть 3. Первый месяц работы

Здесь происходит самое интересное. Продолжают генерироваться идеи и оформляется каркас будущего шедевра программистского искусства. Именно в этот момент главным человеком проекта становится Координатор. Он должен распределять задачи между программистами и затем проверять, кто что сделал. Когда кто-то дописывает свой «кусочек» программы, координатор должен собрать весь проект вместе с этим кусочком (если проект уже можно собрать, то есть соединить присланные/переданные части и скомпилировать). После того, как проект собран, результат (бинарник и исходники) помещаются в общедоступное место — на сайт проекта, например. Или же рассылаются всем участникам так, чтобы у каждого была своевременно обновленная копия проекта. Это делается для того, чтобы каждый мог похвалить или загномить то, что накодил «сосед». ;-)))

Часть 4. Промежуточный этап — пребета- и бета-версии

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

Часть 5. Придание формы, последние штрихи

После того, как набросан основной код, в дело вступают всякие дизайнеры и художники. Они обычно дорисовывают логотипы, иконки-пиктограммы, красивые заставки и оформляют диалоги. Диалоги оформляются с точки зрения эргономичности — то есть удобства для частого использования. Злобный юзер и сам может не понять, отчего ему так нравится этот новый суперкалькулятор на 26 мегабайт… А дело-то в удобстве. ;-))) Кроме всего этого, создаются пакеты многоязыковой поддержки и пишутся различные хелпы. Причем, хелпы могут быть написаны как в процессе работы над проектом самими программистами, так и непосредственно заинтересованными пользователями уже после выпуска программного продукта.

Часть 6. Завершающий этап

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

Часть 7. Заветная единичка

«Заветная единичка» — так называют первую (1.0) версию продукта, которую можно начать официально распространять. Надо сказать, что некоторые проекты с исходными текстами не доживают до заветной единички. Многие умирают еще на стадии 0.0.0.1, что весьма печально. Тут есть несколько причин, которых следует избегать, если надумаешь сам писать большие и кульные проги. Одна из главных — это ситуация, в которой координатор бросает работу над проектом. Говорят, что координатор/руководитель проекта «сгорел». Обычно это связано с тем, что у координатора пропадает желание что-либо делать из-за частых препирательств с программистами, младшими координаторами (если таковые есть), художниками и прочей сочувствующей братией, которая считает, что «вот эту фичу надо убрать и переназначить эту кнопочку на вот эту фичу.» Потом не всегда удается найти именно ту идею, которую можно взять за основу — программа должна быть нужной, и таких программ должно быть мало или, что еще лучше, не быть совсем. И прога обязательно должна отличаться от остальных какими-то своими особыми качествами, иначе нет смысла писать новую прогу.

Часть 8. Апгрейды и обновления. А также всяческие сервис-паки

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

Но это все — результат деятельности нескольких человек. А как быть, когда ты один? Ну, в крайнем случае, наедине с собственным энтузиазмом (а не тем, что некоторые думают). 😉 Не боись! И один в поле — воин! Еще среди первых хакеров бродили постулаты Хейфелля: «Кто будет жить для меня, если не я сам? Кто я такой, если я живу только для себя?». Над ними стоит поразмыслить, чтобы не превращать искусство программирования в рутину. 😉 Кодинг — это прекрасное средство самовыражения! Настоящий хакер, вместо того, чтобы писать знаменитые три буквы на заборе, напишет несколько ласковых слов на странице ФБР или Пентагона! ;-))) Так что творению всякого нужного добра в одиночестве не должно мешать абсолютно ничего. Все этапы, описанные выше и появляющиеся у больших проектов, спокойно могут быть точь-в-точь такими же и у «частного» разработчика-программера. Только когда он один, он совмещает в себе сразу несколько (а то и все) должностей — и художника, и программера, и продюсера, и злобной старушки-процентщицы. И все довольны. Ведь интересной работы — как вкусного пива — много не бывает. 😉

Тхе Енд

Сначала придумываются всевозможные фичи, которые должна поддерживать эта программа, придумывается ей название и устанавливается первоначальный порядок авторства (чтобы в больших коллективах потом не возникало проблем вроде: «А почему Пупкина опять первым написали? Он вообще ничего не делал!!!»).

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

− 1 = 6