Logrus

Русский Українська English Deutsch 中文 Français
v



Изменить кодировку – значит изменить компанию

Адам Эснес (Adam Asnes)

Способность компании эффективно разрабатывать продукты и конкурировать на мировом рынке считается признаком масштаба. При этом из виду нередко упускают столь трудоемкую задачу, как проведение интернационализации программного обеспечения. Интернационализация относится к тому роду задач, которые могут внезапно «свалиться на голову» и вызвать панику, смешивая все планы в отношении глобализации. Можно было бы предположить, что появление технологий, без труда подстраиваемых под любые потребности рынка, превратит интернационализацию в весьма эффектное и захватывающее мероприятие. Тем не менее за редким исключением, в первый, второй и даже двадцатый раз проведение интернационализации оборачивается для компаний большими усилиями и серьезными затратами, сокращающими итоговую прибыль от присутствия на мировом рынке.
 
Разумеется, дело не всегда обстоит именно так. Но если принять во внимание, как обычно строятся процессы разработки программного обеспечения и вывода его на рынок, нет ничего удивительного в том, что об интернационализации часто забывают. Если только с самого начала работы над проектом не были установлены крайне жесткие требования в отношении проведения интернационализации, вспоминают о ней лишь тогда, когда она превращается в серьезную проблему. Впрочем, речь в данной статье пойдет не о том, как было бы хорошо, если бы все всегда проводили интернационализацию. Здесь будут приведены основные сведения о деловых аспектах интернационализации, включая вопросы о том, что интернационализация дает компании, каково ее значение с точки зрения конкурентоспособности, как финансируются соответствующие работы и как обеспечивается соответствие требованиям мирового рынка.
 
Задача первостепенной важности – преодолеть представление о том, что можно просто подставлять переводы без предварительного проведения интернационализации программного обеспечения. Мне задают этот вопрос несколько раз в месяц, причем нередко он исходит от руководителей в области локализации. Характерно, что разработчики об этом никогда не спрашивают.
 
В случае с продуктами небольшого масштаба можно обойтись и без интернационализации, но и это нежелательно. В итоге может получиться продукт, который либо не работает, либо работает плохо. Такое программное обеспечение будет невозможно приспособить к разным рынкам, а также выпускать его новые версии. Отказ от интернационализации означает, что внушительные средства и ресурсы будут затрачены на получение заведомо плохого результата, у которого нет будущего. В отношении сложных и масштабных приложений вопрос стоит еще острее. Разработчики почти всегда признают это, однако для руководства этот вопрос зачастую остается в абстрактной плоскости. Интернационализация, проведенная должным образом, позволяет оперативно удовлетворять любые потребности местных рынков. В итоге компании достаточно поддерживать один продукт, который при этом может использоваться во всем мире. При выпуске новой версии переводы без особого труда обновляются.
 
Деловые аспекты
 
Существует ряд ситуаций, стимулирующих компании на разработку продуктов с учетом местных требований.
 
1.       Появление в результате некоторой коммерческой операции нового маркетингового партнера или серьезного потенциального заказчика, для которого необходима поддержка различных местных требований. Классическим примером является заключение контракта, требующего поддержки японского или какого-либо другого языка. В некоторых случаях лицензионные соглашения заключаются для целых стран (например, в сферах здравоохранения и образования). В такой ситуации удовлетворить потребности заказчика требуется крайне быстро.
 
2.      Осознание того, что локализация является обязательным условием конкурентоспособности. Возможно, компания уже попыталась выйти на мировой рынок и убедилась, что рост ограничен низкой конкурентоспособностью из-за отсутствия интернационализации.
 
3.      Международная компания приобрела другую компанию или лицензию на выпуск нового товара, в связи с чем возникла необходимость встроить новый продукт в имеющуюся производственную линейку и обеспечить его продажи через существующую международную сеть сбыта.
 
4.      Руководство компании запустило новый международный проект. Это важный шаг в развитии компании. Сегодня на любой конференции для руководителей непременно заходит речь о глобализации доходов, и не без основания.
 
Влияние на валовый доход и чистую прибыль
 
Интернационализация программного обеспечения может оказывать существенное влияние как на валовый и планируемый доход, так и на итоговые затраты и рентабельность. Это не просто вопрос снижения затрат. Оценить рентабельность можно только в контексте всего процесса. Для этого необходимо иметь представление и о состоянии на данный момент, и об изменениях в долгосрочной перспективе.
При проведении оценки работ по интернационализации следует ответить на следующие вопросы, связанные с валовым доходом компании.
 
·         Каковы будут доходы компании на целевых рынках в случае успеха?
 
·         Каковы будут предполагаемые доходы через один, два года и позже?
 
·         Каковы с точки зрения валового дохода убытки от отсутствия продукта в определенном сегменте рынка?
 
·         Какое влияние окажет неполноценность или неготовность продукта с точки зрения продаж на определенном рынке на стратегических партнеров компании и отдел продаж?
 
·         Какое влияние окажет эффективный выход на новые рынки на стоимость акционерного капитала компании?
 
Естественно, чтобы обеспечить должное финансирование работ, следует также ответить на следующие вопросы, связанные с чистой прибылью.
 
·         Какова будет стоимость работ?
 
·         Сколько времени это займет?
 
·         Кто будет выполнять эту работу?
 
·         Следует ли в данный момент пожертвовать другими характеристиками продукта ради скорейшего проведения интернационализации?
 
·         Как можно усовершенствовать процесс?
 
·         Какие непредвиденные расходы могут возникнуть?
 
·         Как обеспечить дальнейшее развитие интернационализированного продукта?
 
Научитесь понимать язык финансового директора компании. Ему потребуется провести расчет окупаемости инвестиций, и он может принять решение о списании этих работ как капитальных расходов. Решение лежит вне области битов и байтов.
 
В случае с глобализацией речь идет не об одном заказчике, соглашении о продажах или языке. Это новый технологический и корпоративный процесс, открывающий для компании новые возможности.
 
Вопросы разработки
 
Компании Lingoport много раз приходилось сталкиваться с ситуациями, когда интернационализация проводится с серьезным опозданием (в несколько кварталов или даже лет) и с огромным перерасходом средств.
 
Управление работами по интернационализации, особенно когда она проводится впервые, может стать серьезным испытанием для группы разработчиков. Обстоятельства, связанные с задачами маркетинга и продаж, накладывают серьезные временные ограничения. В дополнение ко всему, группа разработчиков далеко не всегда имеет представление об объеме требований интернационализации и о методах решения конкретных задач в этой сфере. Обычно группы начинают с работы над встроенными строками, то есть с решения самой очевидной из проблем. Это важная и зачастую трудоемкая задача, однако далеко не единственная. Возникает также непростой вопрос о том, кто именно должен выполнять подобную работу. Членам группы разработки скорее всего и так хватает работы. Кроме того, следует каким-то образом соотносить требования интернационализации и разработки новых возможностей продукта.
 
Определение требований должно начинаться с определения специфических потребностей целевого рынка. Самой очевидной проблемой является язык, однако существуют и другие проблемы, связанные с зависящими от культурных особенностей элементами (формат даты, времени, чисел, адресов и т. п.). Изменения в базе данных нередко оказывают серьезное влияние на работу приложения. Изменения логики программирования и графического пользовательского интерфейса еще больше осложняют дело. Разумеется, четко сформулированные требования являются основой для проведения всех работ. Важно, чтобы сотрудники имели продолжительный опыт выполнения подобных задач. В этой области так много «подводных камней», что даже разработчикам-специалистам по глобализации, неоднократно руководившим подобными проектами, постоянно приходится учиться и открывать для себя что-то новое.
 
В некоторых компаниях интернационализация проводится в несколько этапов. К примеру, на первом этапе обеспечивается поддержка хранения, поиска и обработки пользовательских данных в кодировке Юникод или ISO-Latin. Другой вариант – проведение более полной интернационализации, но в расчете только на западноевропейские страны. Наконец, определенные компании работают над обеспечением полной поддержки Юникода для «двухбайтовых» региональных настроек: японской, китайской, корейской и т. д. Сравнение идеала с реальными возможностями, поможет оптимизировать деловые процессы в соответствии с бюджетом, возможностями технологий, долгосрочным планированием и требованиями конкурентного рынка.
 
Оценка масштаба необходимых работ по интернационализации, назначение ресурсов и планирование расходов может оказаться нелегкой задачей. Следует принимать во внимание изменение архитектуры и вопросы, связанные со сторонними продуктами, такими как графические средства, средства отчетности, программы установки, базы данных и т. п. В ходе интернационализации должны быть выявлены и решены проблемы, скрытые в сотнях тысяч или миллионах строк кода. Без мощных средств обнаружения, извлечения и реорганизации исходного кода решение уже одной этой задачи может превратиться в продолжительный, циклический и подверженный ошибкам процесс. Должна существовать возможность быстро и легко отличать и отфильтровывать встроенные строки от программных элементов, таких как операторы отладки и SQL-запросы. Во избежание ошибок, обусловленных человеческим фактором, экспорт должен выполняться автоматически. Каждому языку программирования свойственны уникальные методы и функции, имеющие определенные ограничения в контексте конкретных региональных настроек, а также особая кодировка символов. Даже для работы со столь простым языком, как HTML (включая ISP, ASP, ASPX и др.), необходим сложный язык программирования. Язык С++ имеет сотни ограничений, связанных со спецификой региональных настроек, которые в значительной степени зависят от конечной кодировки и операционной системы. Даже языки Java и C# не охватывают всех тонкостей, хотя они изначально были ориентированы на поддержку интернационализации. Группа разработчиков должна быть хорошо осведомлена о сложностях этого процесса. Разработчики нашей компании создали средство, позволяющее проводить анализ исходных материалов и таким образом экономить время и деньги. Теперь мы предлагаем его как автономный продукт и приспосабливаем его для масштабируемого использования в больших группах разработки.
 
Ни одно средство не поможет найти то, чего нет в программном коде. Требования интернационализации следует принимать во внимание при разработке архитектуры с учетом долгосрочных перспектив жизненного цикла продукта.
 
Локализация, тестирование и все, что за этим следует
 
За исключением тех случаев, когда интернационализация проводится для поддержки управления пользовательскими данными для различных местных требований, но при этом не проводится локализация базы данных, встает вопрос о том, в какой момент должна проводиться локализация. Имеет смысл согласовать проведение работ по извлечению строк с поставщиком услуг локализации, чтобы выпуск локализованных версий не зависел от завершения работ по интернационализации. Для первоначального тестирования можно использовать псевдолокализацию. Для этого следует добавить новые символы из языков, на которые осуществляется перевод, в начало или конец строки, расширив ее до необходимой длины. Это позволит убедиться в том, что продукт правильно поддерживает расширенные символы, изменение размера и т. п., не дожидаясь окончания тестирования в процессе локализации и не привлекая для тестирования специалистов по языку перевода. Псевдолокализацию можно использовать для проверки интерфейса, а также для проверки пересылки данных и переменных с местным форматом с использованием базы данных и функций приложения. Получив перевод от поставщика услуг локализации, следует сразу провести языковое тестирование. Будьте готовы к тому, что некоторые переводы придется корректировать, поскольку они, являясь технически правильными, могут не полностью соответствовать особенностям интерфейса, области употребления конкретного значения слова или сфере применения продукта.
 
Наконец, необходимо создать долгосрочный план систематического контроля разработки нового программного кода, чтобы исключить нарушение новых требований интернационализации в будущем. Следует также обзавестись полноценной документацией по архитектуре и процедурам интернационализации. Таким образом будет создана база, на которую можно опереться в будущем.
В заключение следует упомянуть о чрезвычайной важности взаимодействия. Основной причиной неудач при разработке является отсутствие четких требований и постоянного обмена информацией. Для того чтобы сочетать проведение интернационализации с разработкой новых свойств продукта, необходимы четкий алгоритм разработки, отлаженные методики управления исходными материалами и процессы тестирования, обучение, средства и совместная работа разработчиков. В итоге компания обретает целый мир новых клиентов и деловых возможностей, коренным образом преображается, и перед ней открываются новые горизонты.
 
Адам Эснес – основатель компании Lingoport, занимающейся разработкой программного обеспечения Globalyzer и оказывающей услуги в области разработки с учетом интернационализации.