Аутсорсинг в области разработки приложений
Аутсорсинг полного цикла разработки приложений
Аутсорсинг отдельных этапов разработки приложений
Аутсорсинг в другие страны и регионы
Стоит ли отдавать в аутсорсинг разработку ПО
Стоит ли браться за аутсорсинговые проекты
Аутсорсинг — один из современных способов разделения труда, практиковавшегося, как мы знаем, еще при первобытно-общинном строе. К аутсорсингу компании обычно прибегают в ситуациях, когда требуется выполнить определенный объем работ, являющихся непрофильными или второстепенными для данной компании. В сфере информационных технологий аутсорсинг стал очень распространенным явлением. В аутсорсинг отдают разработку стратегий развития информационных технологий, внедрение информационных систем, создание и обслуживание сетевой и ИТ-инфраструктуры и многие другие ИТ-услуги. В настоящей статье мы обсудим особенности аутсорсинга разработки приложений, а также его преимущества и недостатки.
Аутсорсинг полного цикла разработки приложений
Типичный сценарий аутсорсинга полного цикла разработки программного обеспечения компанией, не специализирующейся на разработке приложений, выглядит следующим образом. Компания, ставящая перед собой задачу автоматизации или информационной поддержки бизнес-процессов, обнаруживает, что некоторые ее потребности в автоматизации не могут быть удовлетворены за счет доступных на рынке программного обеспечения бизнес-приложений, — как известно, типовые решения существуют не для всех вертикальных рынков и предметных областей. В этом случае подобная компания обычно заказывает разработку, внедрение и техническую поддержку нестандартного продукта другой компании, специализирующейся на разработке приложений соответствующей тематики.
Подобный проект, как правило, оказывается гораздо дороже внедрения готового бизнес-приложения, но в случае отсутствия такового на рынке программного обеспечения альтернативой решения об аутсорсинге разработки приложения может быть только еще более дорогостоящее в реализации решение по созданию собственного отдела разработки приложений или по возложению подобной функции на собственное ИТ-подразделение. Заметим, что через подобные управленческие решения в 90-х годах прошли многие российские компании, многие из которых в дальнейшем были вынуждены расхлебывать такие последствия «наколенной» разработки, как отсутствие должной проектной документации, невозможность обновления приложений при изменении бизнес-процессов, «зоопарк» применяемых в компании технологий, возникшие из-за отсутствия правильно поставленных процессов разработки и управления жизненным циклом приложений. Сегодня многие из них, осознав нецелесообразность содержания собственных разработчиков, являются клиентами компаний, специализирующихся на разработке программного обеспечения.
Аутсорсинг отдельных этапов разработки приложений
Нередко аутсорсинг отдельных этапов разработки программного обеспечения осуществляется компаниями, которые занимаются этим же видом деятельности. Принятие подобных решений обусловлено необходимостью разделения труда в самом процессе разработки приложений и наличием экономической или стратегической целесообразности такого заказа. Рассмотрим более подробно виды подобных категорий аутсорсинга.
Создание типового кода
Типичный пример аутсорсинга создания типового кода выглядит следующим образом. Представим себе ситуацию, когда компания-разработчик, специализирующаяся на разработке сложного наукоемкого ПО, использующего принадлежащие компании знания, не подлежащие распространению, получает заказ на разработку бизнес-приложения, содержащего как наукоемкую функциональность, так и типовые составные части вроде форм ввода в базу данных. В этом случае разработку таких составных частей, не связанных с предоставлением собственного ноу-хау, подобная компания вполне может поручить другой компании, нуждающейся в заказах и не занимающейся наукоемкими разработками. Известны примеры, когда такой аутсорсинг диктовался не столько экономической выгодой, сколько нежеланием поручать подобную работу собственным высококвалифицированным разработчикам, равно как и нанимать на работу программистов специально для решения этих задач.
Еще один вариант подобного аутсорсинга, заключающийся в передаче сторонней компании подряда на написание ста процентов кода приложения (а иногда и проектирования данных), широко практикуется американскими компаниями, хотя встречается также в Европе и России. Такие компании имеют в своем штате менеджеров, осуществляющих продажи, и бизнес-аналитиков, занимающихся интервьюированием заказчиков, моделированием процессов, управлением требованиями, чуть реже — моделированием приложений, но не имеют ни разработчиков приложений, ни специалистов по написанию серверного кода, ни специалистов по тестированию. Готовые требования и модели они отправляют другим компаниям (иногда расположенным в другом регионе или в другой стране), которые и создают код самих приложений c помощью предназначенных для этой цели инструментов.
К категории создания типового кода относится и такой вид работ, как создание компонентов приложений (COM-объектов, встраиваемых модулей Eclipse, библиотек классов) согласно заданным спецификациям. Именно с выполнения подобных работ начинали свою деятельность многие индийские компании, ныне активно работающие на рынке услуг офшорного программирования.
Документирование приложений
Сторонним компаниям передаются и иные «отчуждаемые» части проектов, не связанные с созданием кода. Например, составление руководства пользователя к коробочным продуктам, как правило, поручается компаниям, специализирующимся исключительно на данном виде работ. Дело в том, что подобные компании имеют в штате не только технических писателей и специалистов по встраиванию справочных систем в приложения, но и редакторов и корректоров с филологическим образованием, а зачастую — переводчиков и редакторов текста на иностранных языках. Издание же бумажных версий руководств к коробочным продуктам, имеющим большой тираж, иногда поручается издательским домам, специализирующимся на выпуске книг, поскольку в этом случае требуется участие специалистов по дизайну и верстке документации, а также технологов-полиграфистов.
Причина распространенности подобного аутсорсинга проста. Технический писатель в штате небольшой компании-разработчика может и быть (хотя в небольших компаниях он, как правило, все равно окажется незагружен), но содержать редакторов, корректоров, верстальщиков, переводчиков, как правило, совершенно невыгодно, равно как и поручать их функции специалистам иного профиля.
Тестирование приложений
Тестирование приложений является довольно популярным направлением аутсорсинга в области разработки программного обеспечения.
С одной стороны, процедуры тестирования являются важной составляющей системы качества ПО и при необходимости соответствия продукта требованиям стандартов качества они должны быть строго регламентированы. Отсутствие полноценного тестирования при разработке продукта является серьезным фактором риска, способным не только сделать отдельный проект полностью нерентабельным из-за необходимости устранения дефектов уже в процессе промышленной эксплуатации продукта или из-за необходимости возвращать покупателям деньги за приобретенное коробочное ПО, но и привести к серьезному ущербу репутации компании.
С другой стороны, процесс полноценного тестирования обычно является очень ресурсоемким. Так, тестирование функциональности коробочного ПО должно включать проверку его работоспособности в разных языковых версиях и редакциях операционной системы, для которой оно предназначено, устойчивости по отношению к установке и удалению различных пакетов обновления операционной системы и офисных приложений, при наличии различных настроек и при разных правах пользователей, иногда на разных аппаратных конфигурациях. При этом компания-разработчик, как правило, не имеет в своем распоряжении требуемого набора аппаратных ресурсов и версий операционных систем. Нагрузочное тестирование серверных продуктов (равно как и некоторые другие виды тестирования) обычно требует наличия специально выделенного оборудования, дорогостоящего программного обеспечения для полноценного проведения тестов (например, средств тестирования, стоимость которых превышает бюджеты многих проектов по разработке ПО) и специалистов, способных создать тестовые процедуры, обеспечивающие полноту тестирования на соответствие требованиям к продукту. Подобными ресурсами обладают некоторые крупные компании-разработчики, но средним и малым они не по карману.
Отметим, что сегодня в России существуют компании, предоставляющие специализированные услуги тестирования и обладающие широким выбором программно-аппаратных средств и инструментария тестирования.
Стоит обратить внимание на то, что, помимо создания типового кода, тестирования, создания документации, в области разработки ПО практикуются и другие виды аутсорсинга. Например, разработчики интернет- и интранет-приложений нередко отдают в аутсорсинг веб-мастерским, имеющим в штате профессиональных художников, создание дизайна своих приложений.
По данным опроса, проведенного компанией AMR Research, отечественная индустрия аутсорсинга имеет годовой оборот около 750 млн долл., что существенно меньше годового оборота аналогичной индийской индустрии. В то же время в России имеется ряд поставщиков услуг аутсорсинга по разработке ПО с оборотом свыше 20 млн долл. По мнению AMR Research, российские компании обладают определенными преимуществами, важнейшим из которых является высокая квалификация специалистов и стабильность штата. Кроме того, в отличие от индийских поставщиков услуг, российские характеризуются более трезвым подходом к управлению проектами, в связи с чем аналитики рекомендуют обращаться к последним с проектами, сопряженными с высокими рисками. Аналитики AMR Research также советуют прибегать к услугам российского аутсорсинга компаниям, которые нуждаются в относительно недорогих проектах разработки и сопровождения специализированных приложений; либо в поддержке проектов в Западной Европе, особенно в Германии и скандинавских странах; а также компаниям, ищущим альтернативу Индии в связи с потребностями в минимизации геополитического риска и культурных различий. Источник: http://www.silicontaiga.ru/ |
Аутсорсинг в другие страны и регионы
Распределение аутсорсинга разработки ПО по регионам обусловлено в первую очередь экономическими причинами. Так, многие западные компании заказывают аутсорсинг своих проектов или их частей китайским, индийским, российским и украинским разработчикам. Например, среди американских производителей компонентов, инструментов моделирования, компьютерных игр и даже корпоративных приложений довольно много компаний, менеджмент которых находится в США, а отдел разработки — в Санкт-Петербурге, Туле, Москве, Томске.
Проведенный недавно компанией Evans Data Corporation опрос североамериканских компаний, специализирующихся на разработке ПО, показал, что 37% из них заказывают офшорную разработку ПО. При этом многие из опрошенных компаний имеют в своем штате бизнес-аналитиков, осуществляющих работу с заказчиком, управление требованиями, а иногда и моделирование (об этой модели бизнеса уже упоминалось). Отметим, что в последнее время подобной модели бизнеса стали придерживаться некоторые московские и питерские компании-разработчики, отдающие работу по написанию кода в города с более низким уровнем оплаты труда или в соседние страны.
А вот заказ разработки кода в Индии менеджеры российских компаний считают рискованным предприятием — в нашей стране привыкли не столько к соблюдению сроков и технических требований, сколько к тому, что отечественные разработчики способны решать задачи, кажущиеся невыполнимыми, и работать в условиях изменяющихся требований. И это при том, что предложения, поступающие от индийских разработчиков, могут оказаться выгодными российским компаниям — мне встречались предложения услуг аутсорсинга по разработке приложений за 2 английских фунта в час, что ниже средних затрат на час работы московского программиста. Отдавая должное опыту и квалификации многих известных компаний из этой страны, все же отметим, что риск получить в результате аутсорсинга низкокачественный продукт при подобных ценах довольно высок.
Но даже если предложение об аутсорсинге поступает от квалифицированных разработчиков, нужно понимать, что русским языком граждане Индии и стран Юго-Восточной Азии в большинстве своем не владеют. Поэтому и техническое задание, и иная проектная документация должны предоставляться им на английском языке. Следовательно, доверять аутсорсинг части кода партнерам из этих стран может быть выгодно только тогда, когда приложение создается не для российского рынка или не имеет пользовательского интерфейса. При этом наверняка ту же работу способна выполнить и российская компания, находящаяся за пределами Москвы или Санкт-Петербурга, — цены на услуги таких компаний, как уже было замечено, гораздо ниже московских при довольно неплохом качестве получаемого продукта и при полном отсутствии затрат на перевод проектной документации и интерфейса приложений.
Стоит ли отдавать в аутсорсинг разработку ПО
Принимая решение об аутсорсинге разработки ПО, необходимо четко представлять как его выгоды, так и возможные негативные последствия.
Выгоды аутсорсинга
Выгоды аутсорсинга разработки ПО очевидны. Во-первых, отдавая решение части своих задач компаниям, специализирующимся на определенном виде деятельности (например, на тестировании), можно повысить качество и надежность решения указанных задач, равно как и предсказуемость результата. Во-вторых, аутсорсинг части работ, не являющихся стратегически важными для компании, позволит не отвлекать собственных сотрудников на деятельность, не соответствующую их профессиональным устремлениям. В-третьих, субподрядчик, специализирующийся на определенных видах работ в области разработки приложений, обладает большим опытом и имеет тиражируемые решения для типовых задач, что удешевляет и ускоряет их решение. В-четвертых, именно такие компании обладают наиболее передовыми технологиями, поскольку для них применение подобных технологий является ключевым фактором успеха.
Риски аутсорсинга
При всей привлекательности аутсорсинга разработки ПО стоит, тем не менее, осознавать и возможные негативные последствия передачи части работ (или всех работ) по разработке ПО другой компании. Впрочем, эти последствия характерны для любого другого вида аутсорсинга.
Во-первых, отдавая на сторону часть проекта, компания-разработчик неизбежно доверяет другой компании определенную долю своих конфиденциальных данных и, что более критично, конфиденциальных данных своего заказчика. Иногда при организации аутсорсинга приходится предпринимать дополнительные усилия, чтобы скрыть от субподрядчика, которому поручена часть разработки, истинные данные заказчика, сведения о нем, а нередко — и сведения о полной архитектуре приложения. Все это приводит к дополнительным затратам на генерацию фиктивных данных, замену адресов и ссылок, изготовление разного рода «заглушек» и эмуляторов, редактирование документов, поступающих от заказчиков, перед отправкой субподрядчику, а также на проверку каждого пересылаемого партнеру файла на наличие данных, которые к нему попасть не должны.
Во-вторых, необходимо прилагать усилия и вкладывать средства в обучение сотрудников cубподрядчика. Начав проект с применением аутсорсинга, придется проводить определенные мероприятия для того, чтобы субподрядчик смог выполнить порученную ему задачу, например снабжать его примерами реализации того или иного фрагмента кода, идеями, вариантами решений, а иногда и оправлять на курсы по обучению тем или иным технологиям (особенно это касается нетиповых технологий, например программного обеспечения, на основе которого создается решение). В конечном счете может оказаться, что более выгодно было бы эти силы и средства вложить в собственных сотрудников.
В-третьих, существует риск, связанный с тем, что субподрядчик, которому заказан аутсорсинг разработки, может «увести» ваших клиентов или просто стать конкурентом бывшему заказчику благодаря полученным от него знаниям. Такие случаи отнюдь не редкость. Поэтому ключевые части проекта, как правило, в аутсорсинг не отдаются.
Впрочем, некоторые из перечисленных рисков можно снизить за счет принятия соответствующих юридических и организационных мер (таких как заключение с субподрядчиком соглашения о конфиденциальности и требование о наличии у исполнителя положения о коммерческой тайне с упоминанием об отнесении к коммерческой тайне содержания заказных работ).
Стоит ли браться за аутсорсинговые проекты
Стоит ли браться за аутсорсинговые проекты по разработке ПО, особенно связанные с реализацией одного этапа разработки? Однозначного ответа на этот вопрос не существует.
Если компания специализируется на той или иной области (например, на тестировании или создании документации), все ее проекты — это части проектов других компаний. Для компании-исполнителя с моделью бизнеса, изначально ориентированной на участие в чужих проектах, при правильном позиционировании на рынке своих услуг возможно приобретение определенных выгод, начиная от положительных рекомендаций заказчика до совместного маркетинга, подчеркивающего важную роль исполнителя в проекте. В конечном счете по достижении определенных успехов в выполнении подобных проектов для такой компании вполне возможно постепенное приобретение репутации поставщика уникальных и высококачественных услуг, применение которых не только не скрывается заказчиками, но и, наоборот, является престижным.
Так, тестирование программного обеспечения в хорошо зарекомендовавшей себя на этом поприще компании (таковые в России уже есть) считается безусловным подтверждением высокого качества протестированного продукта. К не менее удачному маркетинговому ходу можно отнести и написание документации к продукту известным автором книг и издание ее в престижном издательском доме — к подобным акциям сейчас нередко прибегают и российские разработчики популярных бизнес-приложений, и некоторые крупные западные компании, выводящие на российский рынок локализованные версии своих продуктов.
Наименее выгодной из заказных работ в стратегическом плане, на мой взгляд, представляется работа по написанию типового кода, особенно в условиях заключения соглашения о конфиденциальности. Подобная деятельность позволяет заработать определенные средства и, возможно, приобрести дополнительные знания, но, как правило, не обеспечивает ни маркетинга собственной деятельности, ни общепризнанной репутации и известности. Поэтому такое направление работы можно рекомендовать компаниям, начинающим свою деятельность на рынке и остро нуждающимся в любых заказах. Компании же известные и стабильные могут рассматривать создание типового кода главным образом в качестве средства обеспечения занятости временно простаивающего персонала.
***
В целом отметим, что при должной организации проекта по разработке программного обеспечения в аутсорсинг можно передать довольно значительную его часть. При взвешенном подходе в выборе видов деятельности, передаваемых сторонним организациям, можно суметь сохранить и собственные стратегические преимущества, и немалые средства, затрачиваемые на непрофильную для компании деятельность.