Отечественные разработчики программного обеспечения все чаще пользуются терминами «проект», «команда проекта», «стандарты качества разработки проекта». Вместо привычных программистов появились инженеры-разработчики, инженеры-тестировщики, технические писатели, менеджеры проектов, бизнес-аналитики и т.д. Возникли офшорные компании, выполняющие разработку программного обеспечения на заказ, в стране созданы филиалы западных компаний, ориентированные на разработку программ. Отечественной ИТ-индустрии уже начали пророчить великое будущее. Безусловно, уровень спроса на услуги в области разработки программного обеспечения внушает оптимизм и своим объемом (300-400 млрд. долл. в год), и темпами ежегодного роста (10-12%). Но смогут ли российские компании взять достойный кусок этого пирога?
Многие отечественные ИТ-специалисты имеют техническое образование высокого качества, формирующее системный, аналитический и исследовательский уровень мышления. Это позволяет им применять аналитические и инновационные подходы: специалисты способны больше думать над задачами, решать их, применяя различные методы. Благодаря этому у российских команд есть опыт в выполнении совершенно уникальных проектов по разработке программного обеспечения по сравнению, например, с индусами. Это и привлекает западные компании, которые организуют в России свои исследовательские филиалы или осуществляют сотрудничество с российскими компаниями по модели офшорных центров разработки. Развитию этих контактов препятствует отсутствие у многих отечественных специалистов знаний и практических навыков в области создания коммерческих программных продуктов.
Между тем, специфика работы программиста предъявляет к нему ряд требований.
- Профессиональное понимание процесса разработки программного обеспечения на промышленном уровне, ясное видение этого процесса и всех его составляющих. Как организован процесс разработки программы на промышленном уровне и почему он так организован? Как организовано взаимодействие участников команды и распределены роли? Как достичь эффективной разработки программы с точки зрения времени, качества, реализации требований заказчиков?
- Наличие практических знаний и навыков разработки программ различного типа с использованием различных технологий и алгоритмов. Это позволяет увеличить эффективность разработки с точки зрения времени и качества.
- Подготовленность к профессиональной работе с технологическими компонентами процесса разработки (документация, стандарты качества, результаты тестирования и др.).
- Наличие философии качества разработки на профессиональном уровне и принципов командной работы.
Общая философия работы профессиональных программистов ведущих мировых компаний базируется на нескольких ключевых принципах. Прежде всего, результатом работы программиста считается программа, разработанная в четко заданные сроки и с заданным уровнем качества. Далее, результат работы программиста должен быть контролируем и измеряем по скорости написания кода и количеству найденных ошибок. Под ошибками понимается не только адекватная работа готовой программы согласно требованиям, но и соответствие разработанного кода стандартам (соглашениям) кодирования. Недопустимо запрограммировать задачу так, чтобы никто кроме автора не мог понять его код. Хороший стиль имеет в своей основе единообразие понимания задач, выполненных различными программистами и следование принятым стандартам и правилам. Еще один важный принцип — постоянное совершенствование качества работы, повышение уровня знаний и навыков. Каждый год программисту необходимо проходить переподготовку: конкуренция и огромные темпы развития ИТ вынуждают работодателей повышать требования к профессиональному уровню специалистов.
Ввиду отсутствия на рынке труда достаточного количества профессионалов, способных выполнять производственные задачи с использованием современных технологий, в точные сроки, с заданным уровнем качества, в соответствии с требованиями заказчиков, в компании VDI два года назад был организован центр подготовки профессиональных инженеров в области разработки и тестирования программного обеспечения.
В центре разработана собственная методология обучения, которую отличает ряд особенностей.
Студент помещается в жесткую среду, где есть мастер по обеспечению качества и профессионал, работающий ведущим специалистом в промышленном производстве программ. Мастер по обеспечению качества формирует требования к обучению и следит за качеством обучения, а профессионал передает свои знания и навыки. В процессе обучения студент получает методические материалы и практические задания, разработанные из опыта выполнения коммерческих проектов на промышленном уровне. Методические материалы усваиваются им в самостоятельном режиме; обучение заключается в выполнении студентом практических задач. Задачи, которые должны выполняться в заданные сроки и с требуемым уровнем качества, помогают формировать у студента практические знания, а также философию качества работы.
Лекции практически полностью отсутствуют: учить программированию по лекциям не эффективно с точки зрения практики. Программист может иметь отличную теоретическую базу, но будет писать программы низкого качества. Лекции больше нужны для фундаментальных дисциплин наподобие общей физики, математического анализа и линейной алгебры. Как показывает опыт, большинство теоретической информации о программировании специалисты получают самостоятельно из книг, документации, Internet. Одновременно изучение теоретического материала в самостоятельном режиме формирует исследовательские навыки.
Для анализа усвоения теории и практики применяются мастер-классы, которые проводятся в интерактивном стиле. Они посвящаются разбору и анализу вопросов, которые либо возникли у студентов при решении практических задач или чтении теоретической литературы, либо могут возникнуть на практике при решении аналогичных задач. В качестве мастеров привлекаются ведущие специалисты, имеющие за своими плечами не один успешный коммерческий проект.
По аналогии с МВА используется модульная схема обучения. Например, для специализации «инженер-разработчик» предусмотрены следующие модули: «Технологии» (навыки практического применения различных технологий), «Основы производственных процессов разработки ПО» (профессиональное представление о процессе разработки коммерческого программного обеспечения, команде проекта, ролях в команде и взаимосвязей между ними, а также навыки командной работы), «Основы разработки ПО» (практические знания и навыки профессионального уровня, необходимые для работы с технологическими компонентами процесса разработки).
Программы и курсы покрывают весь спектр специальностей, необходимых в процессе разработки программного обеспечения: процесс и его управление, проектирование, разработка (Visual C, Java, .Net), тестирование и поддержка.
В 2001 году в VDI было принято решение о трансформировании центра в отдельную компанию. За последние полгода «Высшая школа программирования» выполнила пять проектов со сторонними компаниями. На данный момент ВШП способна выпускать до 400 профессиональных ИТ-инженеров в год. В ближайших планах формирование в России и странах ближнего зарубежья института подготовки профессиональных ИТ-инженеров по специальностям «тестировщик», «разработчик», «менеджер проектов», «аналитик», а также продвижение проекта по инстанциям для получения необходимых лицензий.
Александр Заровский (AlexanderZ@training.ru) — сотрудник компании Vested Development, проект «Высшая школа программирования» (Москва)