Проблема подготовки программистов в Украине

А.А. Береславский

              Что такое программист?  

             Давайте дадим рабочее определение. Все, наверное, думают, что они знают, что такое программист. Это человек, который пишет программы?

              Есть такая профессия – строитель,  тот, кто строит дома. Но все мы знаем, что есть люди, которые подносят цемент, есть люди, которые кладут кирпичи, есть архитекторы, есть прорабы – очень много разных профессий. И прораб  и  архитектор – очень важны в строительном  коллективе. Но проблема в том, что архитекторов  на здание  нужно несколько, а людей, которые кладут кирпичи, нужно десятки и сотни.

            Среди программистов, как и среди строителей много разных профессий и специальностей.  Есть программист – «архитектор», а нижняя ступень – это кодер, это человек, который должен в день написать столько-то строчек программного кода.

Есть еще и «тестеры», есть люди, которые готовят тестовые материалы, много разных.

            В действительности написание программы – это огромный, большой труд. И вообще-то, людей этих надо учить по-разному.

           Сегодня на нашем рынке программистов есть дефицит сотрудников на всех уровнях. Цена программиста поднялась неимоверно за последние два года. И этот дефицит стал очень ощутимым. Проблема усугубляется и  тем, что в Україну пришли многие западные компании.   «Google»,  например, которые понимают креативную  значимость наших людей. Они организуют здесь исследовательские центры, естественно, денег у них больше, чем у украинских компаний. И они платят очень большие зарплаты.  И они, собственно, и подняли рынок. Компании буквально ведут  охоту за специалистами. «Хэд-хантэры», то есть фирмы, которые охотятся за головами, фактически переманивают сотрудников уже непосредственно в    программистской отрасли. И это сегодня нормальное положение.

        Кто же наиболее востребован среди программистов? За кем больше всего гоняются?

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

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

       Многие считают, особенно для банков это характерно, у них свои отделы автоматизации, они считают, что надежно иметь у себя внутри программистов. Связано это со многими проблемами, с проблемой организации и  ответственности.

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

      Так откуда компании берут сотрудников?

      Сегодня  вузы Украины готовят примерно 32000 программистов различных специальностей и профессий.  Но  трудоустраивается в фирмах только 8 – 12 % выпускников.  Ситуация напоминает положение в гостиничном бизнесе. Западные гостиницы не берут персонал, который работал в советских гостиницах. Они хорошо научены не тому, чему нужно.  Это  отдельная и большая тема, как обеспечить ситуативные требования фирм и не потерять преемственность в механизме образования.

       Эксперты отмечают, что хорошие программисты получаются из математиков. Потому что математика – это не знание математики, а  правильный подход к мышлению. Математики, как правило, хорошо обучаемые люди. Программирование очень динамичный предмет. Профессия программиста  – это не то, что нужно знать сегодня. Можно научиться класть кирпичи и класть их всю жизнь. К сожалению, профессия программиста устроена не так. Самым  важным в подготовке программиста  оказывается  умение перестраиваться все время, непрерывно. Но это требует некой фундаментальной прослойки, лучше всего логической и математической.  Как раньше говорили:  «Научить учиться». Учиться новым концептам. Очень мало кто понимает концепции программирования. Все обращают внимание на языки программирования. Хотя, языки сейчас уже немного отходят в сторону, лет пять назад – конкретные языки, сейчас – конкретные средства разработки,  управление базами данных,  майкрософтовские средства. Грубо говоря, если вернуться к аналогии  в строительство, блоки, из которых строят дома. Но всегда остается вопрос: «А что между этими блоками должно быть, как их склеивать?» И сегодня, если мы посмотрим на индустрию, основная проблема, которую решает информационная индустрия в Украине – это связь по данным между различными ведомствами, например, различными предприятиями. У каждого все автоматизировано внутри, но обменяться этими данными очень трудно. Грубо говоря, нет стандартизации, нет представления системы в целом. Одной и той же концепции. Поэтому, по-видимому, необходим особый учебный предмет: «системотехника» .

                 В беседе с экспертами часто задавался такой вопрос: «Скажите, пожалуйста, если бы Вы были министром образования, как бы вы построили, чему нужно учить программистов с учетом того, что это разные специальности? Как бы вы построили это образование?»

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

       Т.е., научиться чему-либо по-существу, можно только делая это. Если просто смотреть, как это делают другие и думать, что  умеете, так не получится.  Студенты должны  попробовать, испытать себя; они должны думать, действовать и отвечать за сделанную  ими работу самостоятельно. Тут деваться некуда.

      Это ремесло. Но это ремесло, которое требует ответа на вопрос: « Как я мыслю?» Если я знаю, что есть задача быстрого поиска, мне приходит на ум хэш, мне приходят на ум списки, я знаю пять-шесть методов быстрого поиска, бинарные деревья. Т.е., необходимы умения и способности мыслительного поиска и умение ставить и решать мыслительные задачи.

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

      Системно поставленный способ мышления позволяет учиться всему, чему угодно. Есть предметы математики структурные, теория множеств, математическая логика при изучении, которых формируются подобные способности.  Потому что когда человек начинает заниматься языком программирования, начинает писать программы, сам какой-то язык придумывают, а без языка сделать большую систему невозможно».

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

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

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

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

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

    В любом научном институте, нам покажут кучу замечательных вещей, и расскажут, что они  в тысячу раз лучше, чем на рынке. Но когда этот продукт хоть кто-то пытается внедрить, то окажется, что необходимо еще пять или шесть стадий разработки. Просто потому, что одно дело – это показать принцип. А другое дело – довести продукт, который любой потребитель может подключить дома. Поэтому вузы должны вырастить у себя орган вот такой доводки образцов и учить этому студентов. Чтобы студент понимал, что без специальных средств  и усилий он не продаст свою квалификацию, чтобы он мог убедительно рассказать в фирме, что он умеет делать, а не только, сколько он хочет получать денег. Т.е., образовательной единицей должна становиться компетенция, а не знания. Недаром, опытные программисты говорят: « чем хуже продукт – тем лучше он продается».  Говорят серьезно.

      Чему учить будущих программистов?

       Но программистов, вероятно, необходимо учить не только математике. А чему еще? Вот, например, нужно их учить менеджменту, нужно ли их учить социологии, философии?

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

     И здесь проблема: теорию информационных потоков никто никогда нигде в Украине не преподает. Ее вообще никто не идентифицирует. Пример из другой области, чтобы резче выделить это утверждение; когда люди говорят о «вертикали власти», то с точки зрения информационных потоков, это просто разрушающая вещь. То есть, вертикальные потоки ложны по определению. И построение вертикальной власти означает, что наверху вся информация новостная будет ложной. Обратная связь будет искажена изначально. Чистая, неискаженная  информация получается только из горизонтальных потоков, и никогда  из вертикальных. Это положение следует из организации информационных потоков, и это не зависит от государства, это может внутри фирмы. Те же проблемы, эти истории известны всем про «Майкрософт», про «Эппл», про  IBM  . Это проблемы организации и управления.  Когда компания вырастает, и там много людей, ими нельзя директивно руководить, так же как программа вырастает, там много подпрограмм. Нельзя из единого центра ими управлять. Возникает иерархия, разделение на подсистемы, разделение на коллективы, на филиалы. Возникает уровень управления. И тогда управляемость теряется сразу. Момент, когда «Майкрософт» перешел с двухуровневого управления на пять, он просто показателен был. А что было с «Эпплом», когда Стив Джобс и пришел Джон Скалле и стал организовывать по принципу «Пепси-колы», и сделал несколько лишних уровней управления, компания просто развалилась.  И это нормально. Это тяжелое противоречие между большой компанией с большим уровнем иерархии или же государства с большим уровнем иерархии.   И этому не учат нигде вообще. Вот такого взгляда на программу как на организацию информационных потоков, вне зависимости от того, как они будут организованы в каждой конкретной точке, просто нет. А учить надо и, по-видимому, это теория и практика системного анализа и организации деятельности, системотехника и схемотехника.  Причем, это ведь все должны быть метапредметы, построены на специальных учебных упражнениях, развивающих способности объективации процессов мышления и понимания.

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

      Вся информатизация любого предприятия направлена на то, чтобы давать лицам, принимающим решения, по возможности чистую информацию в минимальное  время. Это принципиальная позиция работодателя.

    Итак, кроме математики, программиста менеджменту надо учить или не надо?

По-видимому, если руководитель проекта – надо, если кодер – не надо.

    Нужно учить какой-то социологии, какой-то философии?

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

      Кроме того неизвестно, что нам завтра понадобится. Поэтому в профессии программиста переучиваться – это присущее профессии свойство. Отсчитаем чуть-чуть назад. Первый браузер интернета, был сделан в 1995 году. 16 лет прошло. Сегодня без браузера молодежь не понимает, как жить. Первый MP3-плееры появились шесть лет назад. Очень трудно за это время построить правильную стратегию пользования. Вы помните первые телефоны, когда мы крутили диск? Мир очень  быстро изменяется. Но мы хотим все сегодня и сейчас.  В ограниченном времени за ограниченные деньги.

    Но проблеме пользователя интерфейса, в другой области  как минимум 2000 лет и она до сих пор окончательно не решена. Это проблема: как делать ручку двери, чтобы было ясно, открывается дверь вовнутрь или наружу? Подумайте, это проблема пользовательского интерфейса, никакого отношения к компьютеру не имеющая, двери существуют 2000 лет, и эта проблема не решена. А в современном программировании интерфейсов ставятся и решаются сотни и тысячи   подобных задач в десяток лет.

   Чему должны учить в школе?

 

    В школе нужно учить компьютерной культуре, а не компьютерной грамотности.

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

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

 Проблемы обучения программистов

 Высокий барьер между реально работающими людьми и преподавателями. Реально работающие люди не заинтересованы преподавать, реально работающие преподаватели мало понимают в работе.

Как можно этот барьер технологически преодолеть?

Необходима система корпоративного образования, состоящая, например, из таких блоков:

  1. Стратегия развития  (управляющая компания корпорации: проектирование будущего и направлений развития, постановка проблем национальной системы корпоративного образования, разработка концептуальных моделей образования, определение средств и программирование систем управления сферой образования)
  2. Рекрутинг (для организации маркетинговых исследований: отслеживания и понимания картины коньюктуры и тенденций на рынке трудовых ресурсов, а также для формирования открытых рыночных механизмов взаимодействия фирм и соискателей, в том числе и выпускников вузов)
  3. Профцентр вуза (для организации  практики в компаниях отрасли, обучения студентов практикам организации переговоров с работодателем, ведения баз данных о студентах и выпускниках вузов, формирования корпоративных стандартов отношений между вузами и агентами рынка).
  4. Открытый вузовский и межвузовский семинар по перспективным темам и задачам индустрии (для представителей потенциальных заказчиков, представителей фирм ИТ-индустрии, разработчиков; цели семинара: генерирование и формирование новых фундаментальных и прикладных тем в области информационного программирования и системе образования ИТ-индустрии, формирование переговорного процесса и подготовка хоздоговорных соглашений).
  5. Практика хоздоговорных тем-заказов фирм и вузов (для повышения квалификации преподавателей, включения студентов в решение практических задач программирования, формирования цикла учебных заданий на всех этапах обучения в вузе, отбора и сегментирования учащихся на всех этапах подготовки, переноса ряда задач предприятий в вузы, для демонстрации и трансляции лучших передовых образцов и практик фирм в систему образования).

             Сейчас крупные компьютерные компании  покупают университеты,  факультеты университетов пытаются купить, чтобы свою программу и своих преподавателей в них внедрять. Но это еще не решение проблемы, поскольку в вузах, в системе образования и бизнесе происходят принципиально разные процессы, и отсутствует, принципиальная, же  возможность их синхронизировать. Срабатывает старая системная установка: «вуз это кузница кадров».  В СССР  этот принцип был оправдан, но в ситуации рынка, учебные заведения должны становиться полноправными участниками движения в будущее.  Сферы народно-хозяйственного комплекса в СССР проектировались как единое целое, как индустрия. Территория рассматривалась как естественная площадка для сбора и размещения на ней всех элементов производственного цикла: объектов энергетики  и транспорта , рабочих машин (заводов, фабрик), рабочей силы, подготовки кадров, социальной инфраструктуры и т.д.  Сегодня этот принцип организации системы не работает. Необходим другой принцип организации социально-экономических систем – сетевой. Необходимо создание сетевой  организации, ориентированной на развитие, или как говорят на западе «пространственной».  И, действительно, ориентация вуза на «специальность», предполагает длинный цикл прохождения в организации образовательного процесса и обработке будущего специалиста:  разработка учебных предметов, разработка учебных программ и методик преподавания, создание методической базы (учебников), стандартизация и практические испытания, подготовка преподавателей, и, далее, минимум четырехлетний курс подготовки. В целом получается – 10-15 лет. Понятно, что  подготовка специалистов в такой динамичной области как программирование  требует совершенно других сроков и описанный способ подготовки не соответствует требованиям индустрии и рынка.

Реклама

4 Responses to Проблема подготовки программистов в Украине

  1. Андрей Анатольевич says:

    Местами интересно. Спасибо за публикацию.

  2. MAD says:

    много буков ниасилил

  3. ehronika says:

    Почему бакалавриат в России готовит ИТ-недоучек?
    Советы первокурсникам

    http://habrahabr.ru/blogs/study/126619/

  4. ehronika says:

    http://cnews.ru/

    Стартует набор студентов в школу программистов HeadHunter

    Компания HeadHunter объявила об открытии с 12 сентября второго набора в собственную школу программистов. Самые успешные выпускники получат работу в компании.

    12 молодых специалистов в течение 6 месяцев будут учиться современным подходам к построению высоконагруженных систем и новейшим технологиям разработки ПО. Параллельно студенты школы будут решать рабочие задачи сайта hh.ru, получая опыт промышленного программирования. Преподают в школе ведущие программисты HeadHunter и приглашенные эксперт… полный текст

    Источник: CNews

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход / Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход / Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход / Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход / Изменить )

Connecting to %s

%d такие блоггеры, как: