В портфеле компании Naumen — целый ряд разноплановых программных решений для управления бизнесом, включая комплекс продуктов для IP-телефонии и системы управления документооборотом и отношениями с клиентами.
Примечательно, что продукты Naumen поставляются в исходных текстах. В начале 2003 года компания открыла свой учебный центр, призванный обеспечить подготовку специалистов по предлагаемым Naumen технологиям. Однако значительный интерес представляет другое учебное направление — курсы по технологиям разработки и управления программными проектами. Компания делится собственным опытом в этой области, подготавливая соразработчиков своих систем. Несмотря на универсальность выпускаемых решений, у заказчиков всегда могут возникнуть специфические задачи, которые потребуют расширения функциональности продуктов. Подготовленные тренерами центра разработчики партнерских компаний смогут справиться с такими проблемами, равно как и создавать собственные отраслевые системы на базе продуктов Naumen.
Уникальность этой учебной программы — в технологиях: язык программирования Python, сервер приложений Zope и методика экстремального программирования для управления проектами. Все они пока не получили широкого распространения в России в составе программ учебных центров.
Оптимальные технологии для молодой компании
Язык программирования Python существует около 10 лет и, как это бывает в мире свободно распространяемого программного обеспечения, из разработки для академических нужд вырос в зрелый инструментарий для создания бизнес-приложений. Директор учебного центра Naumen Андрей Иваницкий рассказал о причинах выбора этого языка: «Naumen — молодая компания. На нас не висит груз старых обязательств перед клиентами и партнерами по поддержке унаследованных приложений, поэтому мы могли выбрать любой язык, который есть на рынке. Было проведено исследование, в ходе которого нас, прежде всего, интересовала эффективность работы программиста. Ведь основные затраты приходятся на зарплату разработчиков, и чем эффективнее будет их труд, тем меньше будет стоимость проекта. Python позволяет обеспечить такую эффективность».
В языке Python реализованы механизмы, позволяющие программисту сосредоточиться на сути программы, решении задач предметной области, а всем побочным проблемам уделять минимальное внимание. Python — объектно-ориентированный язык с ограниченным синтаксисом. Результатом подобной простоты стало значительное ускорение процесса разработки. Подобно Jаva, интерпретируемый язык Python является кроссплатформным и может использоваться в разных операционных средах.
Программа обучения включает в себя тренинг по основам языка и курс «Профессиональная разработка на Python», позволяющий программистам расширить свои знания и укрепить навыки применения языка в разработке бизнес-приложений.
На языке Python написан распространяемый в исходных текстах сервер приложений Zope — вторая базовая технология, которую Naumen применяет в своих разработках. Безусловно, выбор Python и Zope в компании, которая следует принципу открытости исходных кодов, в значительной мере связан с тем, что эти решения относятся к категории свободного программного обеспечения. Отличительные черты Zope — компонентная архитектура, кроссплатформность, объектно-ориентированная база данных для постоянного хранения объектов, настройка и управление приложениями через Web-браузер. Этот сервер приложений предоставляет оптимальные возможности для построения порталов и систем управления контентом. Наличие большого количества готовых компонентов позволяет строить Web-ориентированные приложения под управлением Zope по принципу конструктора. Для Zope написано значительное количество программ системного уровня, реализующих возможности работы с базами данных, почтовыми системами и т.д. Большинство этих «продуктов» также распространяется в исходных текстах.
Курсы учебного центра Naumen по Zope имеют статус авторизованных учебных программ компании Zope, которая занимается продвижением этого сервера приложений, зарабатывая не на продаже лицензий, а на обучении и разработке отраслевых решений. В центре читают авторизованные курсы для разработчиков и проектировщиков информационных систем по основам Zope и по профессиональной разработке для Zope. Наличие авторизации позволяет выдавать слушателям фирменные сертификаты от Zope, но не ограничивает в создании дополнительных собственных тренингов.
Python и Zope для России — явление новое. Однако язык и сервер приложений широко используются во всем мире; например, компания Red Hat использует язык Python для написания приложений по конфигурированию своей операционной системы, в NASA на базе Zope строятся Web-серверы для внутренней сети. По словам Иваницкого, распространение Python и Zope идет характерным для открытого программного обеспечения путем: не «сверху», усилиями компании-разработчика, а «снизу», когда технологии постепенно завоевывают популярность в студенческой среде, у технических специалистов и менеджеров компаний. По мере того как накапливается опыт, они получают признание ведущих производителей и известность у пользователей. Такая судьба была у ОС Linux и, вполне возможно, ждет в скором будущем Python и Zope.
Курсы по экстремальному программированию
Молодой компании, которая собирается заниматься разработкой программного обеспечения, необходимо выбрать определенную методологию по управлению программными проектами. В Naumen в качестве такой методологии взято так называемое «экстремальное программирование» (eXtremal Programming — ХР) [1]. «Альтернативная» методология успела доказать свою работоспособность на множестве серьезных проектов по всему миру. Это доказывает и опыт компании Naumen, выпустившей за сравнительно небольшой промежуток времени не одну версию нескольких успешных программных продуктов.
Основной акцент в ХР делается на высокий уровень адаптивности проекта разработки к требованиям заказчика. Реальности большинства таких проектов таковы, что заказчик никогда не может заранее абсолютно четко и безупречно сформулировать свои требования. Кроме того, эти требования постоянно изменяются. Методология ХР менее формальна по сравнению с управлением проектами в соответствии, например, с РMI PMBoK или RUP и представляет собой набор практических рекомендаций, нацеленных на то, чтобы организовать работу программиста, менеджера проекта и заказчика, максимально удовлетворив интересы каждой из сторон.
В соответствии с методологией ХР в команду разработки входит представитель заказчика, который определяет требования к системе и в любой момент может ответить на любые вопросы разработчиков (если речь идет о разработке не заказного решения, а коробочного продукта, как в случае Naumen, в роли заказчика выступает постановщик задачи). Требования к ХР-проекту формулируются как набор небольших «историй». Проект реализуется посредством ряда итераций, во время которых программируется некое подмножество историй, отнюдь не исчерпывающее желаемую функциональность системы, но образующее законченную, работающую ее часть. Ключевой элемент ХР — модульное тестирование по окончании каждой итерации, причем принципиальным является то, что тесты пишутся до того, как команда начнет кодирование. Тесты разрабатывают члены команды, включая представителя заказчика. Постепенно, итерация за итерацией, система совершенствуется, наращивая возможности и всякий раз отвечая поставленным на данном этапе требованиям. Тем самым снимается одна из наиболее болезненных проблем разработки — катастрофическое удорожание внесения изменений в проект с течением времени.
Одна их основных ценностей ХР — постоянное и непосредственное взаимодействие между участниками команды, поэтому методология рассчитана на небольшие группы разработчиков, ведущих проект вместе в одном помещении. В соответствии с ХР, разработка ведется парами программистов, причем декларируется принцип совместного владения кодом: любой член команды для решения своей задачи может изменить код, созданный другим, но при этом должны соблюдаться единые стандарты кодирования. Эти принципы решают проблему «ключевых» членов проектной команды: в обычном проекте уход программиста, обладающего основными знаниями по проекту, может иметь трагические последствия. ХР исключает такую ситуацию, поскольку при различии квалификаций членов команды ни один из них не играет решающую роль в проекте — все вносят в общее дело разработки вклад пропорционально способностям и имеют возможность повышать свое мастерство, перенимая опыт у сильнейших.
Как поясняет Иваницкий, все эти правила и требования ХР как нельзя лучше «ложились» на реалии разработки в Naumen. Освоив принципы ХР на своих проектах, специалисты компании взялись за разработку учебных курсов по ХР.
В международном программистском сообществе наибольшим авторитетом пользуются программы по ХР компании Object Mentor, где в качестве инструктора выступает Кент Бек (принято считать, что именно он сформулировал принципы экстремального программирования, опробовав их в 1996 году на проекте заказной разработки для корпорации DaimlerChrysler) и другие известные специалисты. В России тренинги Object Mentor не ведутся; Naumen — пока единственная компания-энтузиаст, взявшаяся через обучение пропагандировать в нашей стране методологию ХР.
Компания предлагает два курса по ХР. Первый рассчитан на менеджеров программных проектов и представителей заказчика. В этом курсе рассказывается о принципах ХР, практических приемах управления командой, планировании. Создатели курса проводят параллели между ХР и известными методологиями — PMI, СММ, RUP, объясняя, как можно отобразить привычные понятия, термины и методы в терминологию экстремального программирования. Так, сопоставляются принцип написания пользовательских историй как требований к проекту, изменяющихся от итерации к итерации, и перепланирование по завершении фазы проекта как инструмент управления проектом согласно требованиям РMI PMBoK.
Второй курс, более практической направленности, предназначен для программистов. После двух дней теоретического освоения основных принципов и технологий слушатели приступают к реализации небольшого ХР-проекта, включающего три итерации разработки, причем один из слушателей выступает в роли представителя заказчика, формулируя требования в виде историй и составляя приемочные тесты.
Все три направления обучения — Python, Zope и ХР — пока еще не подкреплены процедурой сертификации. Но в учебном центре Naumen считают этот этап необходимым и разрабатывают экзамены для каждой из учебных программ.
Подготовка кадров
Свой опыт в области разработки информационных систем и управления программными проектами в Naumen передают не только партнерам, но и будущим кадрам разработчиков. В компании создана специальная образовательная программа Soft Profy для целевой подготовки студентов-старшекурсников ведущих вузов Екатеринбурга (у Naumen два офиса — в Москве и в Екатеринбурге).
По словам Иваницкого, главным недостатком сегодняшних выпускников является слабая ориентированность в современных тенденциях ИТ-мира. Бывшим студентам не хватает не только практического опыта и знаний о последних технологических новинках, но и представления о наиболее перспективных тенденциях по решению бизнес-задач с помощью ИТ. Недостатки вузовского образования не позволяют молодому специалисту сразу включиться в работу — нужна предварительная «доводка». Но компания, бизнес которой динамично развивается, постоянно нуждается в притоке свежих кадров, готовых к работе без дополнительного обучения. Предложенная Naumen программа подготовки для выпускников вузов позволяет им получить достаточно глубокие познания и практические навыки в современных языках программирования, технологиях баз данных и серверов приложений, а также овладеть определенной культурой корпоративной разработки.
В рамках программы Soft Profy студенты получают все необходимое для начала работы в качестве прикладных и системных программистов, системных и сетевых администраторов, администраторов баз данных с перспективой повышения квалификации до уровня проектировщиков информационных систем. В этой программе специалисты Naumen выступают в качестве постановщиков задач, выставляя требования к содержанию курсов, а их разработкой и проведением занятий занимаются преподаватели Уральского госуниверситета и Уральского политехнического института. Помимо лекций и практических занятий студенты проходят стажировку на реальных проектах в Naumen. По словам Иваницкого, некоторые из участников первого потока Soft Profy сегодня входят в состав разработчиков по системе документооборота NauDoc. Однако программа Soft Profy открыта; в ее рамках могут готовиться специалисты и для других организаций.
Еще одна программа, предлагаемая самим учебным центром Naumen, ориентирована в первую очередь на студентов младших курсов вузов. Программа (она называется «Подготовка Web-разработчиков») представляет собой цикл тренингов, готовящих специалистов по созданию Web-сайтов и порталов на базе сервера приложений Zope. Программа включает курсы по основам сетевых технологий, языкам HTML, XML и Python, серверу приложений Zope.
Литература
- К. Бек, Экстремальное программирование. //«Открытые системы», 2000, № 1-2.
Дистанционное обучение
Программы учебного центра Naumen по технологиям разработки и ХР в силу наличия значительной практической составляющей проводятся только в очном режиме. Однако в центре активно используется и дистанционная форма обучения, пока главным образом для преподавания курсов по продуктам компании. В Naumen разработан собственный инструментарий для организации дистанционного обучения; систему NauLearning компания использует сама и начинает предлагать потенциальным клиентам — корпоративным учебным центрам, кадровым службам, консалтинговым фирмам.
NauLearning интегрирует возможности разработки учебных материалов, управления учебным процессом и собственно проведения обучения в удаленном режиме. В состав системы входит конструктор учебных курсов, в котором ведется разработка учебного плана и структурируется учебный материал, формируется интерфейс для курса и контролируется деятельность преподавателей. Еще одна составляющая системы дистанционного обучения предназначена для организации взаимодействия преподавателей со слушателями и поддерживает проведение в дистанционном режиме всех практических занятий, входящих в курсы, а также сертификационных экзаменов.
Дистанционные варианты учебных программ по продуктам Naumen важны для организации обучения партнеров и заказчиков, география которых постоянно расширяется. Кроме того, планируется привлекать внешних авторов для разработки в рамках NauLearning тренингов по другим направлениям, включая общую методологию управления проектами и управление качеством, проектирование программного обеспечения.