Обучать - значит вдвойне учиться.

Когда-то во всех технических вузах обучали программированию. И в период, именуемый теперь "застоем", по числу программистов (как, впрочем, и врачей) на душу населения мы были "впереди планеты всей". Потом наступила эпоха перестройки, которая привела к развалу большинства НИИ. В результате лишь немногие из программистов нашли себя, остальные оказались не у дел. Почему же это произошло? Давайте постараемся выяснить, какие у нас есть сегодня программисты и какими они должны стать завтра, чтобы не оказаться "за бортом". Чем отличается их работа у нас от подобной работы на Западе? Какие проблемы возникают при подготовке разработчиков ПО в нашей стране? На эти и ряд других вопросов, предложенных научным редактором журнала "Мир ПК" Михаилом Глинниковым, ответил директор компании Interface Булат Гайфуллин.

- Есть ли разница в подходах к программированию на Западе и у нас? Почему наши программисты не всегда приживаются за рубежом?

- Разница, конечно же, есть. Но следует ясно представлять, в чем она заключалась раньше и в чем состоит сейчас. Если мы оглянемся назад, то увидим, что у нас использовались технологии организации работ по проектам, значительно отличающиеся от принятых на Западе. Однако уже существовали и российские достаточно крупные проекты -- АСУ для космической и оборонной промышленности, -- правда, не всегда нужные. Кроме того, большие коллективы программистов занимались переписыванием и приведением в соответствие с существующими в нашей стране ГОСТами версий уже готовых западных операционных систем, например для машин серии ЕС и СМ, но этот факт отнюдь не умаляет эффективности и качества их работы. Известно ведь, что переработать и усовершенствовать готовую программу бывает намного сложнее, чем создать новую. С появлением более прогрессивных технологий и изменением экономических условий подобные коллективы оказались не нужны и наступило время программистов-одиночек, работающих самостоятельно.

Наиболее талантливые из них стали либо просто уходить из своих организаций, либо оставались там и создавали малые предприятия (помните модную тогда аббревиатуру -- Центр НТТМ?). Но, к сожалению, в итоге всем им удалось создать лишь совсем небольшое количество готовых, или, как сейчас принято говорить, "товарных" продуктов. Тогда же рухнул "железный занавес" и появились западные заказчики. Здесь перед специалистами открылось два пути: первый -- уехать за рубеж и работать там; второй -- организовать так называемое "офшорное" программирование здесь. Мы выбрали второй путь, однако и у нас есть, разумеется, не только удачные примеры сотрудничества с западными партнерами.

- Bсе-таки давайте снова обратимся к прошлому. Расскажите, пожалуйста, о наиболее удачном вашем проекте "застойных" времен.

- Удачным можно назвать проект по созданию и развитию программно-аппаратного комплекса для электронно-лучевой литографии. Он появился в подмосковной Черноголовке в результате работы небольшого коллектива, состоящего из физиков, математиков, программистов и электронщиков. Эти комплексы с тех пор работают в самых разных организациях у нас в стране и за рубежом.

- Вернемся теперь к программированию. Что показал Ваш опыт офшорной деятельности в этой области?

- Работая с западными партнерами, в основном с Германией, мы поняли, что и у них на рынке разработки ПО существуют два основных слоя организаций. Первый -- очень большие корпорации, например IBM, Siemens Nixdorf, с немецкими отделениями которых мы взаимодействовали. Однако делали это не напрямую, а лишь принимая участие в тех проектах, которые вели немецкие компании по их заказам. Второй слой -- небольшие фирмы, так называемые software house. Для них характерен немногочисленный коллектив разработчиков -- от 10 до 30 специалистов, несложная структура управления и определенный круг заказчиков, для которых они разрабатывают узкоспециализированные прикладные программы.

- Если сравнить организацию работ в этих компаниях, то в чем основное отличие?

- Представьте себе, например, соревнования по академической гребле. В маленьких фирмах, как в лодке, семеро гребут, а один, самый легкий, ими командует. В больших компаниях -- все наоборот: один гребет, а семеро командуют. Все в них заформализовано: есть стандарты, от которых нельзя отступать, и технологии, которых нужно придерживаться. Затраты на разработку проектов там очень велики, поскольку довольно значительны расходы на управление, но зато именно благодаря такой организации труда удается создавать большие и сложные системы. Три года назад, когда мы активно работали с такими компаниями, затраты на проект рассчитывались исходя из стоимости человеко-месяца. Она составляла примерно 25--30 тыс. марок, в то время как в небольших фирмах не превышала 10--15 тыс. марок, т. е. была в два раза ниже.

До сотрудничества с немецкими компаниями у нас еще сохранялись иллюзии. Мы считали, что у них есть некая замечательная технология, которая позволяет объединить в успешно работающий коллектив разработчиков программ, способных выдавать "на гора" готовые продукты, и полагали, что сможем научиться этому. К сожалению, наши надежды не оправдались. Мы увидели, что никакой замечательной универсальной организации работ -- стандартов программирования, системы обучения, контроля за исходными версиями -- в небольших фирмах по разработке ПО не существует, а проблемы у них возникают те же, что и у нас. Наши немецкие партнеры -- а их было несколько -- не смогли наладить такие формальные процедуры, как сдача, приемка и тестирование отдельных модулей. А раз они не сделали этого у себя, им не удалось успешно провести данные процедуры и с нами -- российскими партнерами, что вызывало серьезные затруднения в совместной работе.

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

И еще одна проблема. Нам, к примеру, дают задание. Мы видим: что-то можно сделать лучше, чем нам предложено, а что-то -- вообще по-другому, иначе в дальнейшем при использовании ПО возникнут затруднения. В результате деятельность замедляется, а нашим партнерам просто нужно, чтобы мы выполнили какую-то определенную работу, причем -- и это очень важно -- к строго заданному сроку. К тому же сказался тот фактор, что еще, например, пять лет назад зарплата в 50 долл. казалась нашим специалистам вполне приличной, а через год-два и 200 долл. стало уже не хватать. В то же время консервативные немецкие коллеги никак не хотели понять, почему через год-два нужно в три раза увеличивать бюджет по работам с нами. Из-за всего этого по ряду проектов наша совместная работа в конце концов прекратилась.

- Нарисуйте портрет типичного российского программиста.

- Это молодой человек, который еще не закончил вуз, но учится обычно по специальности, никак не связанной с программированием. Хотя он и умеет что-то делать на Delphi, скорее всего, на самом деле хорошо программирует лишь на Clarion и FoxPro, а работает, как правило, в довольно большом коллективе, занимающемся разработкой какого-то финансового или банковского ПО.

- Что требуется от современного программиста и каким Вы видите его в ближайшем будущем?

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

Так вот, прежде всего требуются такие программисты, которые могли бы создавать клиент-серверные приложения и умели бы работать в коллективе, поскольку для одиночки это неподъемная задача. Если оглянуться назад, станет понятно, что переход с DOS на Windows был для многих преодолением сeрьезного препятствия, а для перехода к технологии клиент--сервер придется брать еще большую высоту.

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

- Понятно, что необходимо готовить специалистов в области разработки ПО. Поэтому поговорим немного о вашем учебном центре. Когда он был создан и что побудило вас к этому?

- Центр создан в 1994 г. Работая с немецкими фирмами, мы увидели, насколько успешны и привлекательны клиент-серверные решения для западных партнеров, а также почувствовали, что и в России появилась потребность в специалистах по их разработке.

- С чего все начиналось?

- Сначала обучение у нас было вспомогательным и носило чисто маркетинговый характер. Оно проводилось в индивидуальном порядке и лишь постепенно стало переходить в более организованное русло.

- Какие курсы в настоящее время пользуются наибольшей популярностью?

- Курсы для разработчиков по CASE-технологиям и курсы по продуктам компании Borland.

- А сколько всего курсов и какова их продолжительность?

- Всего у нас 45 курсов, причем сейчас читаются 10, а еще 35 разработаны и анонсированы, но мы проводим их по мере необходимости или желанию заказчиков. Популярностью пользуются также курсы по CASE-седствам Erwin, Brwin, Rational Rose, а также по средству разработки информационных систем Borland Delpphi. Вызывает интерес и теоретический курс "Теория и практика реляционных баз данных". Объясняется это тес, что правила создания РСУБД нужны для грамотной работы проектировщикам и администраторам баз данных независимо от того, кто является их производителем.

Продолжительность обучения определяется их тематикой и составляет два, три или пять дней.

- И каков состав слушателей?

- Примерно одна треть приходит из банковской сферы, треть -- из бюджетных организаций и треть - из различных коммерческих компаний (в частности, нефтяных).

- Сколько у вас учебных классов и какова численность специалистов, обычно обучающихся в группе? Кто преподает?

- У нас три учебных класса, а в группах обычно занимаются не более 10--12 человек. Недавно число специалистов, прошедших обучение в нашем учебном центре, перевалило за две тысячи. Каждую неделю обычно читаются два курса. Мы имеем несколько штатных и внештатных преподавателей, а также привлекаем собственных сотрудников, которые хорошо разбираются в ПО.

- Есть ли трудности в обучении?

- Ну ты же знаешь, что такое наши программисты! Попробуй-ка их в чем-нибудь убедить! Преподаватели должны быть очень знающие и авторитетные, должны даже иметь определенное имя или публикации в разных журналах. Но наш учебный центр ведь и ориентирован именно на такой контингент, как специалисты-разработчики, поэтому с подобными трудностями мы справляемся довольно успешно.

- Проводите ли вы обучение у заказчика на выезде?

- Да. Обычно доля такого обучения составляла примерно одну четверть, а в последнее время она растет. Например, мы проводили обучение по Power Builder в Бурятии, по Visual C в Мурманске.

- Ваш учебный центр авторизован (сертифицирован)?

- Да, причем тремя компаниями: Logic Works (теперь вошла в Platinum Technology), Borland и Seagate Software.

- Какова средняя стоимость обучения?

- От 90 до 125 долл. за один день. В центре существует гибкая система скидок. Сейчас, например, в рамках специальной антикризисной программы мы предоставляем слушателям скидку 30%.

- Как Вы собираетесь развивать направление по обучению дальше?

- В период кризиса мы хотим сконцентрироваться на тех курсах, которые приносят наибольшую отдачу: по CASE-технологиям и по продуктам компании Borland. Кроме того, мы будем по-прежнему, несмотря на кризис, проводить для разработчиков ПО бесплатные семинары, которые сейчас приобретают все большую популярность. В связи с этим мы будем организовывать их еженедельно, хотя раньше занятия проводились раз в две недели. На последний семинар записались 70 человек, а пришли 40, обычно же ждали 40, а оказывалось 20.

- Большое спасибо, Булат, за интересную беседу. Надеюсь, что наши разработчики, желающие повысить свою квалификацию - а сейчас для этого самое время - воспользуются услугами вашего учебного центра или хотя бы посетят семинары. Ведь именно в трудные времена бесплатная помощь становится особенно ценной. Успехов Вам в этом добром деле!